<?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>160355</bug_id>
          
          <creation_ts>2016-07-29 14:17:26 -0700</creation_ts>
          <short_desc>JSVALUE64: Pass arguments in platform argument registers when making JavaScript calls</short_desc>
          <delta_ts>2016-12-19 10:01:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>160357</dependson>
    
    <dependson>160614</dependson>
    
    <dependson>165728</dependson>
    
    <dependson>165739</dependson>
    
    <dependson>165748</dependson>
    
    <dependson>165811</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1215700</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-29 14:17:26 -0700</bug_when>
    <thetext>Currently, function arguments are passed on the stack when JavaScript code makes a call to another JavaScript or Native function.  Most platform calling conventions define registers used to pass arguments as a way of reducing memory operations.  It makes sense to use these argument registers when making calls from JavaScript code at least on 64 bit platforms.  Argument registers would be used to pass the &quot;callee&quot;, argument count in registers along with as many function arguments that fit in the remaining argument registers.

It makes less sense for 32 bit platforms for two reasons.  First, the 32 bit platforms we support have at most 4 argument registers.  Second, JSValues require two registers, one for the tag and another for the payload.  Taken together, we would only be able to only pass the &quot;this&quot; value in registers on 32 bit platforms along with the callee and argument count.

It is important to note that all JavaScriptCore tiers pass arguments in registers when calling out to C++ helper functions, in accordance with platform calling conventions.  The work described here is to expand the use of argument registers when making JavaScript calls.  This work will still allow for arguments to be passed on the stack, but that passing arguments via registers would be supported and the &quot;fast path&quot; in the DFG and FTL tiers.  The LLInt interpreter and code generated by the baseline JIT would continue to operate expecting arguments on the stack, but provide an additional entry point that would spill arguments to the stack before continuing as they do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215702</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-29 14:17:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/27615788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249525</commentid>
    <comment_count>2</comment_count>
      <attachid>294295</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-11-09 14:53:28 -0800</bug_when>
    <thetext>Created attachment 294295
Work in Progress

Compiles and runs on X86_64 and ARM64 bit platforms.  Passed JS regression tests debug.

Performance is neutral to slightly faster on most benchmarks.  It seems to spend more time compiling.  Investigating that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250519</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-11-11 16:56:35 -0800</bug_when>
    <thetext>It appears that prediction logic for GetArgumentRegister nodes has some bugs in it when compared to SetArgument / GetLocal node pairs.  This leads to extra OSR exits and therefore recompiles.

The compile time with this patch can be slightly longer, but that doesn&apos;t seem to be responsible for much slowdown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251053</commentid>
    <comment_count>4</comment_count>
      <attachid>294722</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-11-14 11:14:33 -0800</bug_when>
    <thetext>Created attachment 294722
Fixes to argument predictions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251054</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-11-14 11:15:20 -0800</bug_when>
    <thetext>Performance results with the latest patch:

VMs tested:
&quot;Baseline&quot; at /Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc
&quot;RegCalls&quot; at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc

Collected 72 samples per benchmark/VM, with 12 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                 Baseline                  RegCalls                                     
SunSpider:
   3d-cube                                    6.1100+-0.0887     !      6.3230+-0.0932        ! definitely 1.0349x slower
   3d-morph                                   6.2299+-0.0461     !      6.3448+-0.0649        ! definitely 1.0184x slower
   3d-raytrace                                7.4219+-0.0779     !      7.6257+-0.0830        ! definitely 1.0275x slower
   access-binary-trees                        2.3965+-0.0283     ?      2.4229+-0.0324        ? might be 1.0110x slower
   access-fannkuch                            6.8164+-0.0482            6.7816+-0.0566        
   access-nbody                               3.2461+-0.0321     ?      3.2987+-0.0346        ? might be 1.0162x slower
   access-nsieve                              3.8305+-0.0305     ?      3.8597+-0.0338        ?
   bitops-3bit-bits-in-byte                   1.3746+-0.0209     !      1.7606+-0.0199        ! definitely 1.2808x slower
   bitops-bits-in-byte                        3.0005+-0.0201     ^      2.8661+-0.0278        ^ definitely 1.0469x faster
   bitops-bitwise-and                         2.4026+-0.0220     ?      2.4039+-0.0275        ?
   bitops-nsieve-bits                         3.8619+-0.0318     ?      3.9092+-0.0279        ? might be 1.0123x slower
   controlflow-recursive                      2.8513+-0.0239     !      2.9298+-0.0265        ! definitely 1.0275x slower
   crypto-aes                                 5.9606+-0.0397     !      6.0883+-0.0466        ! definitely 1.0214x slower
   crypto-md5                                 3.1065+-0.0427     ?      3.1870+-0.0506        ? might be 1.0259x slower
   crypto-sha1                                3.8182+-0.0262     !      4.0426+-0.0313        ! definitely 1.0588x slower
   date-format-tofte                         10.9435+-0.0803     !     11.3206+-0.0693        ! definitely 1.0345x slower
   date-format-xparb                          6.0358+-0.0553     ?      6.1096+-0.0415        ? might be 1.0122x slower
   math-cordic                                3.4835+-0.0272     !      3.5906+-0.0308        ! definitely 1.0307x slower
   math-partial-sums                          5.3341+-0.0397     ?      5.4050+-0.0419        ? might be 1.0133x slower
   math-spectral-norm                         2.4414+-0.0211     ?      2.4719+-0.0224        ? might be 1.0125x slower
   regexp-dna                                 7.7955+-0.0589            7.7953+-0.0741        
   string-base64                              6.0927+-0.1020     ^      5.9099+-0.0643        ^ definitely 1.0309x faster
   string-fasta                               6.8490+-0.0611     ?      6.9392+-0.0582        ? might be 1.0132x slower
   string-tagcloud                           10.2968+-0.0557     !     10.7282+-0.0769        ! definitely 1.0419x slower
   string-unpack-code                        22.2811+-0.0958     !     22.7592+-0.1541        ! definitely 1.0215x slower
   string-validate-input                      5.1730+-0.0351     !      5.2457+-0.0332        ! definitely 1.0140x slower

   &lt;arithmetic&gt;                               5.7367+-0.0181     !      5.8507+-0.0219        ! definitely 1.0199x slower

                                                 Baseline                  RegCalls                                     
LongSpider:
   3d-cube                                 1001.1409+-3.2410     !   1020.7687+-5.9024        ! definitely 1.0196x slower
   3d-morph                                 731.0439+-1.3206     ?    731.4462+-3.1071        ?
   3d-raytrace                              604.4466+-2.2632     ?    604.8496+-1.7332        ?
   access-binary-trees                      992.6355+-4.2873     ^    977.0483+-2.5367        ^ definitely 1.0160x faster
   access-fannkuch                          314.9290+-3.1567     !    321.7434+-3.0624        ! definitely 1.0216x slower
   access-nbody                             665.5799+-1.3557          662.1875+-4.5029        
   access-nsieve                            403.0147+-2.5303          402.6175+-3.5093        
   bitops-3bit-bits-in-byte                  36.5278+-0.2076     !     37.0868+-0.1299        ! definitely 1.0153x slower
   bitops-bits-in-byte                      123.7846+-1.0265          123.6671+-0.5522        
   bitops-nsieve-bits                       444.7577+-1.1756     ^    439.1797+-1.2388        ^ definitely 1.0127x faster
   controlflow-recursive                    500.6734+-2.7890     ^    489.6150+-2.4510        ^ definitely 1.0226x faster
   crypto-aes                               703.6378+-2.0234     !    714.9169+-1.3944        ! definitely 1.0160x slower
   crypto-md5                               568.3618+-3.3815     !    607.5667+-1.9879        ! definitely 1.0690x slower
   crypto-sha1                              763.2085+-2.2981     !    773.6934+-5.7391        ! definitely 1.0137x slower
   date-format-tofte                        543.5079+-2.3439          542.9402+-2.4089        
   date-format-xparb                        805.9694+-9.9023     ?    810.9942+-6.7525        ?
   hash-map                                 167.7655+-1.3360          165.7488+-1.2368          might be 1.0122x faster
   math-cordic                              533.6460+-1.2530     !    564.7302+-3.3072        ! definitely 1.0582x slower
   math-partial-sums                        416.1075+-1.5890          413.9803+-1.5941        
   math-spectral-norm                       603.9205+-1.3105     ?    605.7023+-2.3831        ?
   string-base64                            566.3441+-1.8800          565.4010+-2.8286        
   string-fasta                             432.3645+-1.3038     ?    434.1280+-2.6040        ?
   string-tagcloud                          202.9656+-0.7363     !    214.4090+-1.0346        ! definitely 1.0564x slower

   &lt;geometric&gt;                              437.5869+-0.4755     !    441.4119+-0.5580        ! definitely 1.0087x slower

                                                 Baseline                  RegCalls                                     
V8Spider:
   crypto                                    45.8716+-0.1157     !     46.5044+-0.2556        ! definitely 1.0138x slower
   deltablue                                 67.3221+-0.3871     !     68.3472+-0.4750        ! definitely 1.0152x slower
   earley-boyer                              43.5740+-0.2133     ?     43.8537+-0.2933        ?
   raytrace                                  34.3012+-0.2376     !     35.5822+-0.2124        ! definitely 1.0373x slower
   regexp                                    69.2668+-0.2450     ?     69.7873+-0.3807        ?
   richards                                  55.2410+-0.3010     ?     55.3565+-0.3359        ?
   splay                                     33.7589+-0.1354           33.6771+-0.1088        

   &lt;geometric&gt;                               48.0975+-0.0902     !     48.6395+-0.0882        ! definitely 1.0113x slower

                                                 Baseline                  RegCalls                                     
Octane:
   encrypt                                   0.20064+-0.00074    ?     0.20207+-0.00082       ?
   decrypt                                   3.46268+-0.01175    !     3.61847+-0.00916       ! definitely 1.0450x slower
   deltablue                        x2       0.16941+-0.00329    ^     0.15714+-0.00115       ^ definitely 1.0781x faster
   earley                                    0.32156+-0.00135    !     0.32663+-0.00116       ! definitely 1.0158x slower
   boyer                                     5.14986+-0.01429          5.13871+-0.02516       
   navier-stokes                    x2       5.55939+-0.03449          5.52549+-0.01775       
   raytrace                         x2       0.90040+-0.00218    !     0.90872+-0.00337       ! definitely 1.0092x slower
   richards                         x2       0.10979+-0.00047    ^     0.10515+-0.00100       ^ definitely 1.0442x faster
   splay                            x2       0.37585+-0.00109          0.37520+-0.00085       
   regexp                           x2      20.81527+-0.45032         20.75639+-0.45699       
   pdfjs                            x2      44.23691+-0.82671    ?    44.38860+-0.95322       ?
   mandreel                         x2      45.66958+-1.00996         44.91731+-1.01362         might be 1.0167x faster
   gbemu                            x2      32.83425+-1.39569         32.72742+-1.65382       
   closure                                   0.69301+-0.00435    !     0.70877+-0.00380       ! definitely 1.0227x slower
   jquery                                    8.89339+-0.04420    !     9.00218+-0.04147       ! definitely 1.0122x slower
   box2d                            x2      10.60272+-0.25444         10.47804+-0.26500         might be 1.0119x faster
   zlib                             x2     262.20991+-17.43653   ?   265.49640+-17.17956      ? might be 1.0125x slower
   typescript                       x2     572.83150+-42.60034       555.04961+-45.58792        might be 1.0320x faster

   &lt;geometric&gt;                               5.64870+-0.08623          5.60186+-0.09137         might be 1.0084x faster

                                                 Baseline                  RegCalls                                     
Kraken:
   ai-astar                                  120.801+-0.564      ?     121.121+-0.479         ?
   audio-beat-detection                       45.074+-0.610      ?      45.472+-0.466         ?
   audio-dft                                 105.395+-1.249      ?     105.673+-1.285         ?
   audio-fft                                  37.497+-0.293      !      38.845+-0.414         ! definitely 1.0360x slower
   audio-oscillator                           55.376+-0.157      ?      55.478+-0.135         ?
   imaging-darkroom                           76.379+-0.416      ?      77.130+-0.435         ?
   imaging-desaturate                         64.565+-0.274             64.144+-0.189         
   imaging-gaussian-blur                      88.501+-1.637      ?      89.002+-1.607         ?
   json-parse-financial                       44.091+-0.094      !      45.365+-0.165         ! definitely 1.0289x slower
   json-stringify-tinderbox                   29.300+-0.263             29.113+-0.063         
   stanford-crypto-aes                        43.814+-0.108      !      44.845+-0.273         ! definitely 1.0235x slower
   stanford-crypto-ccm                        42.121+-0.618      ?      43.064+-0.816         ? might be 1.0224x slower
   stanford-crypto-pbkdf2                    116.472+-0.900      ?     117.220+-0.757         ?
   stanford-crypto-sha256-iterative           38.255+-0.314      ?      38.392+-0.139         ?

   &lt;arithmetic&gt;                               64.832+-0.206      !      65.347+-0.225         ! definitely 1.0080x slower

                                                 Baseline                  RegCalls                                     
AsmBench:
   bigfib.cpp                               519.5968+-6.5631          517.3772+-6.5137        
   cray.c                                   438.3193+-1.6736     ?    438.5137+-1.7759        ?
   dry.c                                    569.8059+-23.0601    ?    592.7718+-24.0750       ? might be 1.0403x slower
   FloatMM.c                                854.8821+-2.7292     ?    861.2240+-3.9856        ?
   gcc-loops.cpp                           4257.5992+-12.7833    ?   4279.2718+-24.5958       ?
   n-body.c                                1021.5330+-2.7746     !   1029.3996+-4.8197        ! definitely 1.0077x slower
   Quicksort.c                              474.3958+-2.6139     ^    444.5173+-2.5708        ^ definitely 1.0672x faster
   stepanov_container.cpp                  3727.9221+-15.9067        3706.4846+-9.4443        
   Towers.c                                 267.8728+-1.4349     ^    255.7289+-2.0266        ^ definitely 1.0475x faster

   &lt;geometric&gt;                              847.4265+-4.1405          841.5890+-4.7080          might be 1.0069x faster

                                                 Baseline                  RegCalls                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                           57.8312+-0.2180     ?     58.1409+-0.2402        ? might be 1.0054x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257488</commentid>
    <comment_count>6</comment_count>
      <attachid>296447</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-07 17:20:41 -0800</bug_when>
    <thetext>Created attachment 296447
Current Work in Progress - Should compile on Mac 32 &amp; 64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257491</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-07 17:24:32 -0800</bug_when>
    <thetext>Attachment 296447 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:38:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:209:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:210:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:220:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:917:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:1014:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSSAConversionPhase.cpp:108:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:445:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:240:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:175:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1626:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1626:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/b3/B3Validate.cpp:186:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/b3/B3Validate.cpp:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/CachedRecovery.cpp:40:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:63:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1841:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 27 in 118 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>1257510</commentid>
    <comment_count>8</comment_count>
      <attachid>296454</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-07 18:04:58 -0800</bug_when>
    <thetext>Created attachment 296454
Fixed definite style issues, disabled dataLog

Don&apos;t know why there is an issue with the WebKit generated crypto .cpp files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257512</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-07 18:07:46 -0800</bug_when>
    <thetext>Attachment 296454 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:209:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntrypoints.h:219:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 117 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>1258003</commentid>
    <comment_count>10</comment_count>
      <attachid>296611</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-08 18:54:12 -0800</bug_when>
    <thetext>Created attachment 296611
Likely fix for the build issue - fixed inconsistent case in new include file name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258006</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 18:56:27 -0800</bug_when>
    <thetext>Attachment 296611 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:209:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:219:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 12 in 117 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>1258017</commentid>
    <comment_count>12</comment_count>
      <attachid>296614</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-08 19:12:38 -0800</bug_when>
    <thetext>Created attachment 296614
Fix remaining include typos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258019</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 19:16:15 -0800</bug_when>
    <thetext>Attachment 296614 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:209:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:219:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 12 in 117 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>1258036</commentid>
    <comment_count>14</comment_count>
      <attachid>296624</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-08 19:43:09 -0800</bug_when>
    <thetext>Created attachment 296624
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258038</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 19:45:40 -0800</bug_when>
    <thetext>Attachment 296624 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:209:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:219:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 12 in 118 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>1258069</commentid>
    <comment_count>16</comment_count>
      <attachid>296624</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 22:03:17 -0800</bug_when>
    <thetext>Comment on attachment 296624
Rebased patch

Attachment 296624 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/2661687

New failing tests:
inspector/codemirror/prettyprinting-css-rules.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258070</commentid>
    <comment_count>17</comment_count>
      <attachid>296639</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 22:03:22 -0800</bug_when>
    <thetext>Created attachment 296639
Archive of layout-test-results from ews101 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258071</commentid>
    <comment_count>18</comment_count>
      <attachid>296624</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 22:12:06 -0800</bug_when>
    <thetext>Comment on attachment 296624
Rebased patch

Attachment 296624 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2661684

New failing tests:
inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258072</commentid>
    <comment_count>19</comment_count>
      <attachid>296640</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-12-08 22:12:10 -0800</bug_when>
    <thetext>Created attachment 296640
Archive of layout-test-results from ews107 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258371</commentid>
    <comment_count>20</comment_count>
      <attachid>296708</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 14:56:22 -0800</bug_when>
    <thetext>Created attachment 296708
Almost done.  Patch for EWS testing.  Need to write change logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258376</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 14:59:52 -0800</bug_when>
    <thetext>Attachment 296708 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:207:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:218:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 12 in 118 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>1258421</commentid>
    <comment_count>22</comment_count>
      <attachid>296726</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 15:45:56 -0800</bug_when>
    <thetext>Created attachment 296726
Patch for Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258424</commentid>
    <comment_count>23</comment_count>
      <attachid>296726</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-09 15:47:10 -0800</bug_when>
    <thetext>Comment on attachment 296726
Patch for Review

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

&gt; Source/WTF/wtf/DataLog.cpp:37
&gt; +#define DATA_LOG_TO_FILE 1

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258425</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 15:48:14 -0800</bug_when>
    <thetext>Attachment 296726 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1906:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:207:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:218:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 13 in 122 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>1258427</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 15:49:47 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Comment on attachment 296726 [details]
&gt; Patch for Review
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296726&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/DataLog.cpp:37
&gt; &gt; +#define DATA_LOG_TO_FILE 1
&gt; 
&gt; oops

Forgot to revert this.  I&apos;ve taken care of this locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258472</commentid>
    <comment_count>26</comment_count>
      <attachid>296745</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 16:55:10 -0800</bug_when>
    <thetext>Created attachment 296745
Updated patch.  Rebased, addressed Saam&apos;s comment and removed superfluous white space changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258474</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 16:58:26 -0800</bug_when>
    <thetext>Attachment 296745 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:207:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:218:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 117 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>1258507</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-09 18:12:35 -0800</bug_when>
    <thetext>Starting to look at this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258515</commentid>
    <comment_count>29</comment_count>
      <attachid>296745</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-09 18:36:24 -0800</bug_when>
    <thetext>Comment on attachment 296745
Updated patch.  Rebased, addressed Saam&apos;s comment and removed superfluous white space changes

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

I found a bug, but it&apos;s an easy bug to fix.  I&apos;ll keep reading.

&gt; Source/JavaScriptCore/b3/B3Validate.cpp:187
&gt; +                VALIDATE((value-&gt;as&lt;ArgumentRegValue&gt;()-&gt;argumentReg().isGPR()
&gt; +                    ? (value-&gt;type() == pointerType() || value-&gt;type() == Int32)
&gt; +                    : value-&gt;type() == Double), (&quot;At &quot;, *value));

I think that this is subtly wrong - for example we&apos;ll CSE a int32 ArgumentReg with a int64 ArgumentReg if they are the same reg.  It&apos;s not correct to &quot;just&quot; allow this.

If you want 32-bit arguments, the right way to go is Trunc(ArgumentReg(...)).  Trunc is a very cheap op and it&apos;s coalesced away by instruction selection - i.e. it doesn&apos;t even add load to the register allocator&apos;s coalescer.

I&apos;d be OK with you filing a bug about this and putting a FIXME here and wherever your used the Int32 ArgumentReg feature.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:476
&gt; +#endif

Super useful if you added a // NUMBER_OF_JS_FUNCTION_ARGUMENT_REGISTERS here.

I&apos;m not an advocate of mandating such comments, as they are often pointless, but I like them for long chunks of code in long functions that have multiple #if blocks.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:579
&gt; +#endif

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGMinifiedNode.cpp:45
&gt; +        result.m_info = 0;

Put the argument index here so that you fix the bug in DFGVariableEventStream!

&gt; Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp:172
&gt; +                unsigned argument = jsFunctionArgumentForArgumentRegister(gpr);

Bug!  We could have spilled this node and refilled it into a different register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258521</commentid>
    <comment_count>30</comment_count>
      <attachid>296745</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-09 18:42:58 -0800</bug_when>
    <thetext>Comment on attachment 296745
Updated patch.  Rebased, addressed Saam&apos;s comment and removed superfluous white space changes

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

LGTM other than the bug I found!  I want to look at the patch with the fix.  Hopefully it&apos;s easy to do.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1910
&gt; +    //  &amp;&amp;&amp;&amp;  Revisit this to use m_argumentsForChecking

Remove the comment or revisit this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258604</commentid>
    <comment_count>31</comment_count>
      <attachid>296782</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 22:34:48 -0800</bug_when>
    <thetext>Created attachment 296782
Addressed Phil&apos;s issues and rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258605</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 22:36:54 -0800</bug_when>
    <thetext>Attachment 296782 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:444:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:863:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:101:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:102:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLink.cpp:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:207:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:208:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITEntryPoints.h:218:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1213:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 11 in 117 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>1258613</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-09 23:33:10 -0800</bug_when>
    <thetext>Committed r209653: &lt;http://trac.webkit.org/changeset/209653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258624</commentid>
    <comment_count>34</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-10 00:14:22 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Committed r209653: &lt;http://trac.webkit.org/changeset/209653&gt;

It broke the cloop build:
https://build.webkit.org/builders/Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/10649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258625</commentid>
    <comment_count>35</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-10 00:15:14 -0800</bug_when>
    <thetext>https://build.webkit.org/builders/Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/12400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258678</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-10 05:08:17 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; Committed r209653: &lt;http://trac.webkit.org/changeset/209653&gt;
&gt; 
&gt; It broke the cloop build:
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/10649

Working on fixing the loop build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258679</commentid>
    <comment_count>37</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-10 06:15:05 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; Committed r209653: &lt;http://trac.webkit.org/changeset/209653&gt;
&gt; &gt; 
&gt; &gt; It broke the cloop build:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/10649
&gt; 
&gt; Working on fixing the loop build.

Cloop fix landed in r209663: &lt;http://trac.webkit.org/changeset/209663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258685</commentid>
    <comment_count>38</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-10 08:12:47 -0800</bug_when>
    <thetext>I&apos;m seeing lots of crashes when opening Web Inspector.

They look like:

&gt; Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
&gt; Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
&gt; Exception Note:        EXC_CORPSE_NOTIFY
&gt; 
&gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; 0   com.apple.JavaScriptCore      	0x000000010a822840 JSC::CallFrameShuffler::snapshot(JSC::ArgumentsLocation) const + 688 (CachedRecovery.h:115)
&gt; 1   com.apple.JavaScriptCore      	0x000000010a8211e6 JSC::linkPolymorphicCall(JSC::ExecState*, JSC::CallLinkInfo&amp;, JSC::CallVariant) + 4454 (Repatch.cpp:929)
&gt; 2   com.apple.JavaScriptCore      	0x000000010a5492c3 operationLinkPolymorphicCall + 51 (JITOperations.cpp:1094)
&gt; 3   ???                           	0x0000465d14e057a2 0 + 77365596149666
&gt; 4   ???                           	0x0000465d15269754 0 + 77365600753492
&gt; ...

Sounds like it could be this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258701</commentid>
    <comment_count>39</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-10 10:05:03 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; I&apos;m seeing lots of crashes when opening Web Inspector.
&gt; 
&gt; They look like:
&gt; 
&gt; &gt; Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
&gt; &gt; Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
&gt; &gt; Exception Note:        EXC_CORPSE_NOTIFY
&gt; &gt; 
&gt; &gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; &gt; 0   com.apple.JavaScriptCore      	0x000000010a822840 JSC::CallFrameShuffler::snapshot(JSC::ArgumentsLocation) const + 688 (CachedRecovery.h:115)
&gt; &gt; 1   com.apple.JavaScriptCore      	0x000000010a8211e6 JSC::linkPolymorphicCall(JSC::ExecState*, JSC::CallLinkInfo&amp;, JSC::CallVariant) + 4454 (Repatch.cpp:929)
&gt; &gt; 2   com.apple.JavaScriptCore      	0x000000010a5492c3 operationLinkPolymorphicCall + 51 (JITOperations.cpp:1094)
&gt; &gt; 3   ???                           	0x0000465d14e057a2 0 + 77365596149666
&gt; &gt; 4   ???                           	0x0000465d15269754 0 + 77365600753492
&gt; &gt; ...
&gt; 
&gt; Sounds like it could be this change.

Tracked in &lt;https://bugs.webkit.org/show_bug.cgi?id=165728&gt; - &quot;REGRESSION(r209653) Crash in CallFrameShuffler::snapshot()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258774</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-10 15:50:22 -0800</bug_when>
    <thetext>I think this made Speedometer crash.  I see the crash like so:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000106e5b12a operationGetByIdOptimize + 1194 (StructureIDTable.h:125)
1   ???                           	0x0000246893c245f2 0 + 40031574181362
2   ???                           	0x0000246893c0b5c4 0 + 40031574078916
3   ???                           	0x0000246893bdad79 0 + 40031573880185
4   ???                           	0x0000246893c50185 0 + 40031574360453
5   com.apple.JavaScriptCore      	0x0000000106fdad0b llint_entry + 26589 (LowLevelInterpreter.asm:778)
6   ???                           	0x0000246893c5eea6 0 + 40031574421158
7   ???                           	0x0000246893c77d10 0 + 40031574523152
8   ???                           	0x0000246893c4eb53 0 + 40031574354771
9   com.apple.JavaScriptCore      	0x0000000106fd434b vmEntryToJavaScript + 299 (LowLevelInterpreter64.asm:256)
10  com.apple.JavaScriptCore      	0x0000000106e3d35b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 187 (JITCode.cpp:82)

So, not very helpful.  The last perf result on the perf bots for Speedometer was just before your patch.  The latest fix does not resolve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258790</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-10 17:06:39 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 165739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259191</commentid>
    <comment_count>42</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-12 13:51:08 -0800</bug_when>
    <thetext>Relanded with fix in r209725: &lt;http://trac.webkit.org/changeset/209725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259314</commentid>
    <comment_count>43</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-12 18:54:28 -0800</bug_when>
    <thetext>This looks like a 1% JetStream regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259469</commentid>
    <comment_count>44</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-13 11:36:26 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; This looks like a 1% JetStream regression.

Actually, the bot bounced back and I don&apos;t think there is a real regression.  It looks like your patch got terribly unlucky on one of the bots and landed just as that bot was having a bad day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261145</commentid>
    <comment_count>45</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-12-19 10:01:25 -0800</bug_when>
    <thetext>Reopened as this change and subsequent fixes was rolled out in change set r209764: &lt;http://trac.webkit.org/changeset/209764&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294295</attachid>
            <date>2016-11-09 14:53:28 -0800</date>
            <delta_ts>2016-11-14 11:14:33 -0800</delta_ts>
            <desc>Work in Progress</desc>
            <filename>reg-calls-wip154.patch</filename>
            <type>text/plain</type>
            <size>311357</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHkt
Zml4dXAtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
YWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgKGMgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7
CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyAoYyB8IDAp
OworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAg
IHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlv
biBzdW00KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gKGMg
fCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBi
LCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTYp
OworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zLCBzdW00LCBzdW01LCBzdW02
IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rp
b25zW2kgJSA2XShhLCBiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQg
PSB0ZXN0KDIsIDQwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQg
cmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtc3RhY2thcmdzLmpz
CShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorZnVuY3Rpb24gc3VtMShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiBhICsgYiArIGMgKyAo
ZCB8IDApOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjLCBk
KQoreworICAgIHJldHVybiBiICsgYSArIGMgKyAoZCB8IDApOworfQorCitub0lubGluZShzdW0y
KTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsg
YSArIGIgKyBjOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBj
LCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGluZShz
dW00KTsKKworZnVuY3Rpb24gc3VtNShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDAp
ICsgYSArIGIgKyBjOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBi
LCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGlu
ZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3Vt
NSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3Vs
dCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0
aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMp
Cit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0
aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyBjOworfQorCitub0lubGlu
ZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSAr
IGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBzdW00KGEsIGIsIGMpCit7Cisg
ICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1
bTUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW01
KTsKKworZnVuY3Rpb24gc3VtNihhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7Cit9
CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0z
LCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBs
ZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1leHRyYS1hcml0eS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYikKK3sKKyAgICByZXR1
cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIpCit7
CisgICAgcmV0dXJuIGIgKyBhOworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3Vt
MyhhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1
bmN0aW9uIHN1bTQoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1
bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitu
b0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBiKQoreworICAgIHJldHVybiBhICsg
YjsKK30KKworbm9JbmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIs
IHN1bTMsIHN1bTQsIHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQorewor
ICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsr
KQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoNDAsIDIsICJUZXN0Iik7CitpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwNCw2ICsyOTA0LDkgQEAg
aW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGludCByZXN1bHQ7CiAgICAg
cmVzdWx0ID0gcnVuSlNDKHZtLCBvcHRpb25zKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICB2bS0+ZHVtcENvdW50ZXJzKCk7CisjZW5kaWYKICAgICBpZiAoT3B0aW9uczo6Z2NBdEVu
ZCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaG9sZCB0aGUgQVBJIGxvY2sgdG8gZG8gYSBH
Qy4KICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNDIsNiArMTM0Miw3IEBACiAJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3Bw
ICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwICovOyB9OwogCQk2NUMwMjg1RDE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bj
b2RlLmggKi87IH07CisJCTY1REJGMzAyMUQ5MzM5MkIwMDNBRjRCMCAvKiBKSVRFbnRyeXBvaW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwMzAw
RjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVGQjUxMTcxODRFRUU3MDAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5j
cHAgKi87IH07CiAJCTY1RkI2M0E0MUM4RUEwOUMwMDIwNzE5QiAvKiBZYXJyQ2Fub25pY2FsaXpl
VW5pY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUE5NDYxNDFDOEU5RjZGMDBBNzIwOUEgLyogWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3Bw
ICovOyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNC
NEMxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY4OSw2ICszNjkwLDcgQEAK
IAkJNjJFM0Q1RUYxQjhEMEI3MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYyRUM5QkI0MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVm
ZmxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRnJh
bWVTaHVmZmxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyRUM5QkI1
MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NTAzMDBGMjFDNTAyNzQ2MDBENzg2RDcgLyogSklURW50cnlwb2lu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURW50cnlwb2ludHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8q
IEpTVHlwZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEw
MUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSB0ZXN0UmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIzMDUx
NDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RSZWdFeHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC01NTE3LDYgKzU1MTksNyBAQAogCQkJCTBGQUY3RUZCMTY1QkE5MTkw
MDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLywKIAkJCQlGRTE4N0EwQTFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCAqLywKIAkJCQlGRTE4N0EwQjFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggKi8sCisJCQkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4
NkQ3IC8qIEpJVEVudHJ5cG9pbnRzLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZCMTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTc2NDIsNiArNzY0NSw3IEBACiAJCQkJ
NzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5MERBNjdGMUM4RTMxNkEwMDI5NTE1OSAvKiBnZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dD
aGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2
QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAkocmV2aXNpb24g
MjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMyBAQCBwcml2YXRlOgogICAgICAgICBBU1NF
UlQocmVnLmlzU2V0KCkpOwogICAgIH0KIAorICAgIEFyZ3VtZW50UmVnVmFsdWUoT3JpZ2luIG9y
aWdpbiwgUmVnIHJlZywgVHlwZSB0eXBlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IEFyZ3VtZW50UmVnLCB0eXBlLCBvcmlnaW4pCisgICAgICAgICwgbV9yZWcocmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZy5pc1NldCgpKTsKKyAgICB9CisKICAgICBSZWcgbV9yZWc7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Miw5ICsxODIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNl
IEFyZ3VtZW50UmVnOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhh
c0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVudFJlZ1Zh
bHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91YmxlKQot
ICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1ZT4oKS0+
YXJndW1lbnRSZWcoKS5pc0dQUigpCisgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHZhbHVl
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSB8fCB2YWx1ZS0+dHlwZSgpID09IEludDMyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWRk
OgogICAgICAgICAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQogICAgICwgbV9o
YXNTZWVuQ2xvc3VyZShmYWxzZSkKICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAgLCBt
X2FsbG93U3R1YnModHJ1ZSkKKyAgICAsIG1fcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKGZhbHNlKQorICAgICwgbV9hcmd1bWVudHNMb2NhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQXJndW1lbnRzTG9jYXRpb246OlN0YWNrQXJncykpCiAgICAgLCBtX2lzTGlua2VkKGZhbHNl
KQogICAgICwgbV9jYWxsVHlwZShOb25lKQogICAgICwgbV9jYWxsZWVHUFIoMjU1KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbE1vZGUu
aCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KQEAgLTE1Nyw5ICsxNTgsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBtX3N0dWIgfHwgbV9jYWxsZWVPckNvZGVC
bG9jazsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7CiAKLSAgICB2b2lkIHNldFVwQ2FsbChDYWxs
VHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIp
CisgICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIEFyZ3VtZW50c0xvY2F0aW9u
IGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIHVuc2lnbmVkIGNhbGxl
ZUdQUikKICAgICB7CisgICAgICAgIEFTU0VSVCghaXNWYXJhcmdzQ2FsbFR5cGUoY2FsbFR5cGUp
IHx8IChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpKTsKKwogICAgICAgICBtX2NhbGxU
eXBlID0gY2FsbFR5cGU7CisgICAgICAgIG1fYXJndW1lbnRzTG9jYXRpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYXJndW1lbnRzTG9jYXRpb24pOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luOwogICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsKICAgICB9CkBAIC0y
NzUsNiArMjc5LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxU
eXBlPihtX2NhbGxUeXBlKTsKICAgICB9CiAKKyAgICB2b2lkIHNldFByb3ZpZGVzUmVnaXN0ZXJB
bmRTdGFja0FyZ3VtZW50cygpCisgICAgeworICAgICAgICBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBwcm92aWRlc1JlZ2lzdGVy
QW5kU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJvdmlk
ZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBBcmd1bWVudHNM
b2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXJndW1lbnRzTG9jYXRpb24+KG1fYXJndW1lbnRzTG9jYXRpb24pOworICAgIH0KKwor
ICAgIGJvb2wgYXJndW1lbnRzSW5SZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOworICAgIH0KKwogICAgIHVpbnQzMl90KiBh
ZGRyZXNzT2ZNYXhOdW1Bcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuICZtX21heE51
bUFyZ3VtZW50czsKQEAgLTMzOSw2ICszNjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNT
ZWVuQ2xvc3VyZSA6IDE7CiAgICAgYm9vbCBtX2NsZWFyZWRCeUdDIDogMTsKICAgICBib29sIG1f
YWxsb3dTdHVicyA6IDE7CisgICAgYm9vbCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3Vt
ZW50cyA6IDE7CisgICAgdW5zaWduZWQgbV9hcmd1bWVudHNMb2NhdGlvbiA6IDQ7CiAgICAgYm9v
bCBtX2lzTGlua2VkIDogMTsKICAgICB1bnNpZ25lZCBtX2NhbGxUeXBlIDogNDsgLy8gQ2FsbFR5
cGUKICAgICB1bnNpZ25lZCBtX2NhbGxlZUdQUiA6IDg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MTgsNiArMTgxOCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiAKICAgICAsIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXND
b25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2lzU3RyaWN0TW9kZShv
dGhlci5tX2lzU3RyaWN0TW9kZSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNl
KQogICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV91bmxpbmtlZENv
ZGUoKm90aGVyLm1fdm0sIHRoaXMsIG90aGVyLm1fdW5saW5rZWRDb2RlLmdldCgpKQogICAgICwg
bV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKQEAgLTE4ODMsNiArMTg4NCw3IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1faGFzQmVlbkNvbXBp
bGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9j
ay0+aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMoZmFsc2Up
CiAgICAgLCBtX2NvZGVUeXBlKHVubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpKQogICAgICwg
bV91bmxpbmtlZENvZGUobV9nbG9iYWxPYmplY3QtPnZtKCksIHRoaXMsIHVubGlua2VkQ29kZUJs
b2NrKQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKQEAgLTIzNTcsNiArMjM1
OSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1f
aGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxz
ZSkKICAgICAsIG1faXNTdHJpY3RNb2RlKGZhbHNlKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1
bWVudHMoZmFsc2UpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKICAgICAsIG1faGFz
RGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3N0ZXBwaW5nTW9kZShTdGVwcGluZ01v
ZGVEaXNhYmxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCwxNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOwogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgc2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIG1fcHJl
ZmVyc1N0YWNrQXJndW1lbnRzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHByZWZlcnNTdGFj
a0FyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVmZXJzU3RhY2tB
cmd1bWVudHM7CisgICAgfQorCiAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvZGVUeXBlPihtX2NvZGVUeXBlKTsKQEAgLTg1
MCw2ICs4NjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwg
OiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faXNTdHJpY3RN
b2RlIDogMTsKKyAgICBib29sIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzIDogMTsKICAgICB1bnNp
Z25lZCBtX2NvZGVUeXBlIDogMjsgLy8gQ29kZVR5cGUKIAogICAgIC8vIEludGVybmFsIG1ldGhv
ZHMgZm9yIHVzZSBieSB2YWxpZGF0aW9uIGNvZGUuIEl0IHdvdWxkIGJlIHByaXZhdGUgaWYgaXQg
d2Fzbid0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKICAgICAgICAgICAgIG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby0+ZGlzYWxsb3dTdHVicygp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8tPnNl
dFVwQ2FsbCgKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGwsIHN0dWJJbmZvLmNv
ZGVPcmlnaW4sIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86
OkNhbGwsIFN0YWNrQXJncywgc3R1YkluZm8uY29kZU9yaWdpbiwgbG9hZGVkVmFsdWVHUFIpOwog
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAKQEAgLTEwODksNyAr
MTA4OSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIC8vIFdlICphbHdheXMqIGtub3cgdGhhdCB0aGUgZ2V0dGVyL3NldHRlciwgaWYgbm9u
LW51bGwsIGlzIGEgY2VsbC4KICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKLSAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3JhcmVEYXRh
LT5jYWxsTGlua0luZm8uZ2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZv
LmdldCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAg
ICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKQEAgLTExMTUsNyArMTEx
NSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykpKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5lZWQgdG8g
bWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNvIGFueSBvZiBvdXIgc3RhY2sgc3BpbGxhZ2UgaXNu
J3Qgb3ZlcndyaXR0ZW4uIEl0J3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIw
ODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVhciB2YWx1
ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9kZS0+bG9j
YWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBH
ZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFibGVzKCku
b3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
KSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBjYXNlIEZv
cndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBzaG91bGQg
Y2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBpdCBzaG91
bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJhc2ljQmxv
Y2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5kaWYKICAg
ICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlzOwogICAg
IFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjA4NDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2OTMsMjAgKzM2OTMsNjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFy
Z3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bw
b3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0gICAgICAg
IC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQg
d2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0T0sgPSB0
cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9udW1Bcmd1
bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJlZ2lzdGVy
IG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9kZXMsCisg
ICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5vZGVzIGFu
ZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhlIHJlbWFp
bmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUgZXhpdCBw
cm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNpbmNlCisg
ICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4gdGhvdWdo
IHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAgICAgLy8g
ZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9yZSB3ZSB3
YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBTZXRMb2Nh
bCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAgICAvLyBX
ZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJndW1lbnQg
bm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50IHRvIHRo
ZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAgIHVuc2ln
bmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMsIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZlY3RvcjxO
b2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0QXJndW1l
bnRSZWdpc3RlclF1ZXVlOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAgICAgZ2V0
QXJndW1lbnRSZWdpc3RlclF1ZXVlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1bWVudCkp
KSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50J3MgZm9y
IHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyUXVldWUuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRBcmd1bWVu
dFJlZ2lzdGVyUXVldWVbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5m
byh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3VtZW50UmVn
aXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAgICAgICAg
ICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQgaXMgbm93
IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAg
IC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Z2V0QXJndW1lbnRSZWdpc3RlclF1ZXVlLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBOb2Rl
KiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3RlclF1ZXVlW2ldOworICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJp
YWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAgICAgICAg
ICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQo
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNj
ZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IGFkZFRv
R3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1bWVudFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJn
dW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0ZXItPnNl
dFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpOworICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsKKyAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3VtZW50UmVn
aXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRz
OyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1
Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7
CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCiAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbYXJn
dW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9y
Q2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODAzLDggKzQ4NTEsMTAgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhlcmUgc2lu
Y2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1lbnRzIG9i
amVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAgICAgICAg
ICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVybigpOwog
ICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdzQ2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2RlOjpUYWls
KTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZvciBvdXIg
YXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAgICAgICAv
LyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFuZCBrZXB0
IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9u
LCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwg
dHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGNh
bGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5dGVj
b2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAgICAgICAg
IC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50IHRo
ZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQgY2xlYW4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVh
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDE0
ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3IgdGhyZWFk
ZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQgdmFyaWFi
bGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2ljIGJsb2Nr
LgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8gRmx1c2gs
IFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8vIFNldEFy
Z3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAgICAgIC8v
IEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9jYWwsIFBo
aSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1lbnQuCisg
ICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBtYXkgb25s
eSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
Ly8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0aGUgdmFy
aWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1c2gsIFBo
YW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhpLgotICAg
ICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290IGJsb2Nr
LiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0TG9jYWwg
dG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2NhbHMgYW5k
Ci0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRoZSB0YWls
IHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQgbWF5IGJl
IGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1bWVudFJl
Z2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJndW1lbnRS
ZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAgICAvLyBp
biB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0TG9jYWwg
dG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dlZCBieSBQ
aGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisgICAgICAg
ICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAgICAgICAg
ICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRoYXQgdGhl
IHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRvbUxvY2Fs
IGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlmCiAgICAg
ICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9sbG93ZWQg
YnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAgICAgIC8v
IE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2ZSByYW5n
ZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGlu
ZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUg
aW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3Vt
ZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRo
ZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAg
ICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1hbGx5LCBh
IFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2ZSByYW5n
ZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRoZSBhY3R1
YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1jYXNlZC4g
V2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2Rl
IHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLAorICAg
ICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBs
aWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3Vt
ZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBv
cGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3Rl
cjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBQ
aGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFyZ3VtZW50
UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgpAQCAtNDY4LDEwICs0NjksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICAvLyBERkcgYmFja2VuZCByZXF1aXJlcyB0
aGF0IHRoZSBsb2NhbHMgdGhhdCB0aGlzIHJlYWRzIGFyZSBmbHVzaGVkLiBGVEwgYmFja2VuZCBj
YW4gaGFuZGxlIHRob3NlCi0gICAgICAgIC8vIGxvY2FscyBiZWluZyBwcm9tb3RlZC4KLSAgICAg
ICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkpCi0gICAgICAgICAgICByZWFkKFN0YWNr
KTsKKyAgICAgICAgcmVhZChTdGFjayk7CiAgICAgICAgIAogICAgICAgICAvLyBFdmVuIHRob3Vn
aCBpdCdzIHBoYW50b20sIGl0IHN0aWxsIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBvbmUgY2FuJ3Qg
YmUgcmVwbGFjZWQgd2l0aCBhbm90aGVyLgogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7
CkBAIC01ODYsMTEgKzU4NCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgogICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoK
ICAgICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAg
ICAgICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7
IGFyZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdy
aXRlKFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0R2V0dGVyOgog
ICAgICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5
Tm9kZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJl
dmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVyZVJlZ2lzdHJh
dGlvblJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSB7IEJl
Zm9yZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252ZXJnZWQgfTsK
IAorZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRpbWl6ZUFyZ3Vt
ZW50Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVzY3JpYmVzIHRo
ZSBmb3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4uCiBlbnVtIEdy
YXBoRm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNpYyBibG9ja3Mg
bWF5IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAg
ICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAg
ICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2spOworICAgICAg
ICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpOwogCiAgICAg
ICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5k
ZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJl
dmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0RnJvbUFy
Z3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKICAgICBjYXNlIExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZToKICAgICBjYXNlIExv
Z1NoYWRvd0NoaWNrZW5UYWlsOgogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsOCArOTAsOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAg
Ly8gbWFrZSBzdXJlIHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5hbGl6YXRp
b24gb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGhHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcik7Ci0gICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5l
cmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0RpcmVjdENhbGxU
aHVua0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgCiAgICAgaWYgKHZtLnR5cGVQcm9maWxl
cigpKQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVND
SUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NDQsNiArMTc0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRG91
YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgIGNhc2UgR2V0Q2Fs
bGVlOgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgICAgIGNhc2UgR2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoK
ICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYg
KzEwNCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChmb3JtYXQgJiBEYXRhRm9ybWF0SlMp
OwogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIGZvcm1hdCk7CiAgICAgfQor
CisgICAgdm9pZCBpbml0QXJndW1lbnRSZWdpc3RlclZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90
IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IHJlZ2lzdGVyRm9ybWF0ID0gIERhdGFG
b3JtYXRKUykKKyAgICB7CisgICAgICAgIG1fbm9kZSA9IG5vZGU7CisgICAgICAgIG1fdXNlQ291
bnQgPSB1c2VDb3VudDsKKyAgICAgICAgbV9yZWdpc3RlckZvcm1hdCA9IHJlZ2lzdGVyRm9ybWF0
OworICAgICAgICBtX3NwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdE5vbmU7CisgICAgICAgIG1fY2Fu
RmlsbCA9IGZhbHNlOworICAgICAgICB1LmdwciA9IGdwcjsKKyAgICAgICAgbV9ib3JuRm9yT1NS
ID0gZmFsc2U7CisgICAgICAgIG1faXNDb25zdGFudCA9IGZhbHNlOworICAgICAgICBBU1NFUlQo
bV91c2VDb3VudCk7CisgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGlu
aXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgdGFnR1BSLCBH
UFJSZWcgcGF5bG9hZEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIw
ODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTIsNyArMjkyLDYgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRh
dGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAgQVNTRVJUKG5vZGUtPmhhc1Zh
cmlhYmxlQWNjZXNzRGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykpOwog
ICAgIGlmIChub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpKSB7CiAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dHJ5R2V0VmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEpIHsKQEAgLTM3
MSw2ICszNzAsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLT5jYXNlc1tpXS52YWx1
ZSwgY29udGV4dCksICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgfQorICAgIGlm
IChub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigiLCBHUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpLCAiKSIpOwogICAgIENs
b2JiZXJTZXQgcmVhZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7CiAgICAgYWRkUmVhZHNBbmRX
cml0ZXMoKnRoaXMsIG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAtNTA0LDggKzUwNSwxMCBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIg
IEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwg
IjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50
IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NB
KQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9h
cmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7Cisg
ICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGNoZWNraW5nOiAiLCBsaXN0RHVtcCht
X2FyZ3VtZW50c0ZvckNoZWNraW5nKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1
bWVudHMgb24gc3RhY2s6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzT25TdGFjayksICJcbiIpOwor
ICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBu
dWxscHRyOwpAQCAtMTYyMSw3ICsxNjI0LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgIGlmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3Vt
ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
ICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAg
ICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAg
ICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1l
bnRdOwogICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtODM5
LDcgKzgzOSw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbkluTWFjaGlu
ZUZyYW1lKENvZGVPcmlnaW4sIENvZGVPcmlnaW4mIG9wQ2F0Y2hPcmlnaW5PdXQsIEhhbmRsZXJJ
bmZvKiYgY2F0Y2hIYW5kbGVyT3V0KTsKICAgICAKICAgICBib29sIG5lZWRzU2NvcGVSZWdpc3Rl
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51
c2VzRXZhbCgpOyB9Ci0gICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KKyAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpAQCAtODU4LDkgKzg1
OCw5IEBAIHB1YmxpYzoKICAgICAKICAgICBCYWc8U3RvcmFnZUFjY2Vzc0RhdGE+IG1fc3RvcmFn
ZUFjY2Vzc0RhdGE7CiAgICAgCi0gICAgLy8gSW4gQ1BTLCB0aGlzIGlzIGFsbCBvZiB0aGUgU2V0
QXJndW1lbnQgbm9kZXMgZm9yIHRoZSBhcmd1bWVudHMgaW4gdGhlIG1hY2hpbmUgY29kZSBibG9j
awotICAgIC8vIHRoYXQgc3Vydml2ZWQgRENFLiBBbGwgb2YgdGhlbSBleGNlcHQgbWF5YmUgInRo
aXMiIHdpbGwgc3Vydml2ZSBEQ0UsIGJlY2F1c2Ugb2YgdGhlIEZsdXNoCi0gICAgLy8gbm9kZXMu
CisgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIGFsbCBvZiB0aGUgR2V0QXJndW1lbnRSZWdpc3RlciBh
bmQgU2V0QXJndW1lbnQgbm9kZXMgZm9yIHRoZSBhcmd1bWVudHMgaW4KKyAgICAvLyB0aGUgbWFj
aGluZSBjb2RlIGJsb2NrIHRoYXQgc3Vydml2ZWQgRENFLiBBbGwgb2YgdGhlbSBleGNlcHQgbWF5
YmUgInRoaXMiIHdpbGwgc3Vydml2ZSBEQ0UsCisgICAgLy8gYmVjYXVzZSBvZiB0aGUgRmx1c2gg
bm9kZXMuCiAgICAgLy8KICAgICAvLyBJbiBTU0EsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRTdGFj
ayBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrIHRoYXQK
ICAgICAvLyBtYXkgaGF2ZSBzb21lIHNwZWN1bGF0aW9uIGluIHRoZSBwcm9sb2d1ZSBhbmQgc3Vy
dml2ZWQgRENFLiBOb3RlIHRoYXQgdG8gZ2V0IHRoZSBzcGVjdWxhdGlvbgpAQCAtODgzLDExICs4
ODMsMTIgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBh
bmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBz
aWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOwor
ICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHNPblN0YWNrOworICAgIFZlY3RvcjxOb2Rl
KiwgOD4gbV9hcmd1bWVudHNGb3JDaGVja2luZzsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMg
aXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24g
dGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50
Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEs
IDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQ
b3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8U3Ry
dWN0dXJlU2V0LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CkBAIC05MzMsNiArOTM0LDcgQEAgcHVibGlj
OgogICAgIEdyYXBoRm9ybSBtX2Zvcm07CiAgICAgVW5pZmljYXRpb25TdGF0ZSBtX3VuaWZpY2F0
aW9uU3RhdGU7CiAgICAgUGxhblN0YWdlIG1fcGxhblN0YWdlIHsgUGxhblN0YWdlOjpJbml0aWFs
IH07CisgICAgU3RyZW5ndGhSZWR1Y2VBcmd1bWVudEZsdXNoZXMgbV9zdHJlbmd0aFJlZHVjZUFy
Z3VtZW50cyA9IHsgU3RyZW5ndGhSZWR1Y2VBcmd1bWVudEZsdXNoZXM6OkRvbnRPcHRpbWl6ZUFy
Z3VtZW50Rmx1c2hlcyB9OwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAg
IGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDExICsxMDYsMTEgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
aW5pdGlhbGl6ZSgpCiAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCiAgICAgICAg
ICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW2ldOwogICAg
ICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1Zh
bHVlOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50IHx8IG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgICAg
IGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDE4ICs5
OSw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAgfQogfQogCi12b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQotewotICAgIC8vIFRoaXMgY29kZSBjdXJyZW50
bHkgbWF0Y2hlcyB0aGUgb2xkIEpJVC4gSW4gdGhlIGZ1bmN0aW9uIGhlYWRlciB3ZSBuZWVkIHRv
Ci0gICAgLy8gc2F2ZSByZXR1cm4gYWRkcmVzcyBhbmQgY2FsbCBmcmFtZSB2aWEgdGhlIHByb2xv
Z3VlIGFuZCBwZXJmb3JtIGEgZmFzdCBzdGFjayBjaGVjay4KLSAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjkyCi0gICAgLy8gV2UnbGwgbmVl
ZCB0byBjb252ZXJ0IHRoZSByZW1haW5pbmcgY3RpXyBzdHlsZSBjYWxscyAoc3BlY2lmaWNhbGx5
IHRoZSBzdGFjawotICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFj
ayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgotICAgIC8vIGJvdGgg
bm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRs
ZXIpLgotICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwotfQotCiB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpCiB7CiAgICAgZW1p
dFNhdmVDYWxsZWVTYXZlcygpOwpAQCAtMjc3LDcgKzI2NSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9q
c0NhbGxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEpTQ2FsbFJlY29yZCYgcmVjb3JkID0gbV9q
c0NhbGxzW2ldOwogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqcmVjb3JkLmluZm87Ci0g
ICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKG1fdm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rp
b25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24oKSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChyZWNvcmQuc2xvd0NhbGwp
KSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZihy
ZWNvcmQudGFyZ2V0VG9DaGVjaykpLApAQCAtMjg3LDYgKzI3NSw4IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICBmb3IgKEpTRGlyZWN0Q2FsbFJlY29yZCYg
cmVjb3JkIDogbV9qc0RpcmVjdENhbGxzKSB7CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9
ICpyZWNvcmQuaW5mbzsKICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5jYWxsLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YocmVjb3JkLnNsb3dQYXRoKSk7CisgICAgICAgIGlmIChyZWNvcmQu
aGFzU2xvd0NhbGwoKSkKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xvd0Nh
bGwsIEZ1bmN0aW9uUHRyKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rRGlyZWN0
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihpbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgaW5mby5zZXRDYWxsTG9jYXRpb25zKAogICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoKSwKICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9j
YXRpb25PZihyZWNvcmQuc2xvd1BhdGgpLApAQCAtMzU0LDggKzM0NCwxNCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGUoKQogeworICAgIExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKwogICAgIHNldFN0YXJ0T2ZDb2Rl
KCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKwor
ICAgIExhYmVsIGVudHJ5UG9pbnQodGhpcyk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworCiAgICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKIAogICAgIC8v
IFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUg
SlNTdGFjay4KQEAgLTM4Miw2ICszNzgsMjAgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiAKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2Nr
KTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBs
YWJlbCgpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKKyAgICAvLyBMb2FkIGFyZ3Vt
ZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIGxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwor
ICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmd1
bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBsb2FkNjQoQWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAr
IGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGp1bXAo
ZW50cnlQb2ludCk7CisjZW5kaWYKKwogICAgIC8vIEdlbmVyYXRlIHNsb3cgcGF0aCBjb2RlLgog
ICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShs
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZh
dWx0Q29kZU9yaWdpbigpKTsKQEAgLTQwNiwyNCArNDE2LDg1IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGUoKQogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVT
aHJpbmspOwogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwotICAgIAorCisgICAgSklU
RW50cnlQb2ludHMgZW50cnlwb2ludHM7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVn
aXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1h
aW5FbnRyeSkpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hl
Y2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3N0YWNrQXJnc0FyaXR5T0tF
bnRyeSkpOworCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENv
ZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIFdURk1v
dmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50cnlwb2ludHMpOwogfQogCiB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewogICAgIHNldFN0YXJ0T2ZDb2Rl
KCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAg
IEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7
CisgICAgSnVtcExpc3QgY29udGludWVSZWdpc3RlckVudHJ5OworICAgIExhYmVsIHJlZ2lzdGVy
QXJndW1lbnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUyArIDFdOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdp
c3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4ID0gTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7CisgICAgICAgICAgICAgZXh0cmFSZWdp
c3RlckFyZ3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFyZ3VtZW50
SW5kZXgtLSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tleHRy
YVJlZ2lzdGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRQ
dXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJlZ2lzdGVy
QXJndW1lbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRyeS5hcHBl
bmQoanVtcCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgp
OworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICBM
YWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCByZWdpc3RlckNo
ZWNrQXJpdHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIoQmVsb3cs
IGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgICAgICBtX3Jl
Z2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQorICAgIAor
ICAgIExhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51bVBhcmFt
ZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAg
ICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJlZ2lzdGVy
RW50cnlOb0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05v
QXJpdHkpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7CisKKyAgICBM
YWJlbCBtYWluRW50cnkodGhpcyk7CisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAg
ICAgLy8gPT09IEZ1bmN0aW9uIGhlYWRlciBjb2RlIGdlbmVyYXRpb24gPT09CiAgICAgLy8gVGhp
cyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgd2l0aG91dCBwZXJmb3JtaW5nIGFuIGFyaXR5IGNo
ZWNrLgogICAgIC8vIElmIHdlIG5lZWRlZCB0byBwZXJmb3JtIGFuIGFyaXR5IGNoZWNrIHdlIHdp
bGwgYWxyZWFkeSBoYXZlIG1vdmVkIHRoZSByZXR1cm4gYWRkcmVzcywKICAgICAvLyBzbyBlbnRl
ciBhZnRlciB0aGlzLgogICAgIExhYmVsIGZyb21Bcml0eUNoZWNrKHRoaXMpOworCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAgIHN0b3Jl
UHRyKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpKTsKKyNlbmRpZgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkK
KyAgICBzdG9yZTMyKGFyZ0NvdW50UmVnLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpKTsKKyNlbmRpZgorCisgICAgTGFiZWwgZnJvbVN0YWNrRW50cnkodGhpcyk7Cisj
ZW5kaWYKKyAgICAKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3Vm
ZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCi0gICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0
ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
SnVtcCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92
bS0+YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0KCkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgIEp1bXAgc3RhY2tPdmVyZmxvdyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVB
ZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRTdGFja0xpbWl0KCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKIAogICAgIC8vIE1vdmUgdGhlIHN0YWNrIHBvaW50ZXIgZG93biB0byBhY2NvbW1vZGF0
ZSBsb2NhbHMKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTQ0NiwzNCArNTE3LDEyMSBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBvdXQgdG8gYSBo
ZWxwZXIgZnVuY3Rpb24gdG8gdGhyb3cgdGhlIFN0YWNrT3ZlcmZsb3dFcnJvci4KICAgICBzdGFj
a092ZXJmbG93LmxpbmsodGhpcyk7CiAKLSAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmln
aW4oMCkpOwotCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dFcnJvciwgbV9jb2RlQmxvY2spOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqdW1wKHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBKdW1wIGNvbnRpbnVlVG9Bcml0eUNo
ZWNrID0ganVtcCgpOworI2VuZGlmCisKKyAgICBKdW1wTGlzdCByZWdpc3RlckFyaXR5TmVlZHNG
aXh1cDsKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7
CisgICAgICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmFwcGVuZChicmFuY2gzMihCZWxvdywg
YXJnQ291bnRSZWcsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkp
OworCisgICAgICAgIC8vIFdlIGhhdmUgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzLgorCisgICAg
ICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVj
ayB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgLy8gaGF2ZSBi
ZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQg
d2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0
IG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNo
ZWNrZWQpLgorICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNl
c3NhcnksIHdlIGVudGVyIGhlcmUuCisgICAgICAgIAorICAgICAgICBtX3JlZ2lzdGVyQXJnc1dp
dGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRl
cih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKyAgICAgICAgCisgICAgICAgIC8vIFNwaWxsIGV4
dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1bmN0aW9uCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJn
SW5kZXgrKykgeworICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JF
cXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgp
KS5saW5rVG8obWFpbkVudHJ5LCB0aGlzKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRv
Q2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAganVtcChtYWluRW50
cnkpOworICAgIH0KKyAgICAKKyAgICAvLyBGYWxsIHRocm91Z2gKKworICAgIEp1bXBMaXN0IGFy
aXR5T0s7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA+IDApIHsKKyAgICAgICAgLy8gVGhlcmUg
c2hvdWxkIGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQXJndW1lbnRGaXh1cENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycyAtIDEsIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICBMYWJlbCBy
ZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gbGFiZWwoKTsKKworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXggPD0gcmVnaXN0ZXJBcmd1bWVudEZpeHVw
Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9p
bnRzW2FyZ0luZGV4XSA9IHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXA7CisgICAgfQor
CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgIHJl
Z2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmxpbmsodGhpcyk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVy
cyA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICBy
ZWdpc3RlckNoZWNrQXJpdHkubGluayh0aGlzKTsKKyAgICAKKyAgICBzcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMp
CisgICAgSnVtcCBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwID0ganVtcCgpOworI2VuZGlmCisK
KyAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICBpbmNyZW1lbnRD
b3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRF
UlMpCisgICAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cC5saW5rKHRoaXMpOworI2VuZGlmCiAg
ICAgCi0gICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90
IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAvLyBoYXZlIGJlZW4g
cGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVy
ZSB3ZSBjYW4gc3RhdGljYWxseQotICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBudW1iZXIg
b2YgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVja2VkKS4K
LSAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3NhcnksIHdlIGVu
dGVyIGhlcmUuCi0gICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGZyb20gYSBjdGkgY2FsbCB0byBh
IERGRyBzdHlsZSBvcGVyYXRpb24gKG5vcm1hbCBDIGNhbGxpbmcgY29udmVudGlvbnMpLgotICAg
IG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisjaWYgIVVTRShK
U1ZBTFVFNjQpCisgICAgY29udGludWVUb0FyaXR5Q2hlY2subGluayh0aGlzKTsKKyNlbmRpZgor
ICAgIAorICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICBsb2FkMzIoQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAgYXJpdHlPSy5hcHBlbmQoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpB
cml0eUZpeHVwUmVxdWlyZWQpOworICAgIAogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9y
aWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
aywgR1BSSW5mbzo6cmVnVDApOwogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBicmFuY2hUZXN0MzIoWmVybywgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAg
YXJpdHlPSy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIG1vdmUo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9j
YWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKworICAgIEp1bXAgdG9GaWxsUmVnaXN0ZXJzID0ganVt
cCgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeSA9
IGxhYmVsKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NOb0Fy
aXR5KTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgYXJpdHlPSy5saW5rKHRo
aXMpOworICAgIHRvRmlsbFJlZ2lzdGVycy5saW5rKHRoaXMpOworCisgICAgLy8gTG9hZCBhcmd1
bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJn
dW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFy
Z0luZGV4ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBsb2FkNjQoQWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFy
Z0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCisgICAganVtcChmcm9tU3Rh
Y2tFbnRyeSk7CisjZWxzZQorICAgIGFyaXR5T0subGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlz
KTsKKwogICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOworI2VuZGlmCiAgICAgCiAgICAgLy8gR2Vu
ZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5l
cmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKQEAgLTUwMiwxMCArNjYwLDMxIEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAgICAgZGlzYXNzZW1i
bGUoKmxpbmtCdWZmZXIpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNo
ZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0ciA9
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeU5vQXJpdHkpOworI2Vsc2UKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0ciA9IGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YobWFpbkVudHJ5KTsKKyNlbmRpZgorICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9p
bnRzOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tO
b3RSZXF1aXJlZCwgbWFpbkVudHJ5Q29kZVB0cik7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlG
b3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
bV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3MpKTsKKyAgICBlbnRyeXBvaW50cy5z
ZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRp
b25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKSk7CisgICAgZW50cnlwb2ludHMuc2V0
RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50
cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9z
dGFja0FyZ3NXaXRoQXJpdHlDaGVjaykpOworCisgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9
IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7
IGFyZ0NvdW50KyspIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5OworICAg
ICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIGVudHJ5ID0g
bWFpbkVudHJ5Q29kZVB0cjsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRy
eXBvaW50c1thcmdDb3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZl
ci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZiht
X3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50
cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChh
cmdDb3VudCksIGVudHJ5KTsKKyAgICB9CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShs
aW5rQnVmZmVyKSwgZW50cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpkaXNhc3Nl
bWJsZShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiAr
MjE3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVj
dENhbGxSZWNvcmQoY2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBhZGRKU0RpcmVjdENhbGwoQ2FsbCBjYWxsLCBDYWxsIHNsb3dDYWxsLCBMYWJlbCBzbG93UGF0
aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFw
cGVuZChKU0RpcmVjdENhbGxSZWNvcmQoY2FsbCwgc2xvd0NhbGwsIHNsb3dQYXRoLCBpbmZvKSk7
CisgICAgfQorICAgIAogICAgIHZvaWQgYWRkSlNEaXJlY3RUYWlsQ2FsbChQYXRjaGFibGVKdW1w
IHBhdGNoYWJsZUp1bXAsIENhbGwgY2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyog
aW5mbykKICAgICB7CiAgICAgICAgIG1fanNEaXJlY3RUYWlsQ2FsbHMuYXBwZW5kKEpTRGlyZWN0
VGFpbENhbGxSZWNvcmQocGF0Y2hhYmxlSnVtcCwgY2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKQEAg
LTI2Nyw3ICsyNzIsNiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBs
YWNlaG9sZGVyOwogICAgIAogICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIHRvIGNvbXBp
bGUuCi0gICAgdm9pZCBjb21waWxlRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVTZXR1cFJlZ2lz
dGVyc0ZvckVudHJ5KCk7CiAgICAgdm9pZCBjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCk7CiAg
ICAgdm9pZCBjb21waWxlQm9keSgpOwpAQCAtMzE4LDcgKzMyMiwxOCBAQCBwcml2YXRlOgogICAg
ICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIEpTRGlyZWN0Q2FsbFJlY29yZChD
YWxsIGNhbGwsIENhbGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGlu
Zm8pCisgICAgICAgICAgICA6IGNhbGwoY2FsbCkKKyAgICAgICAgICAgICwgc2xvd0NhbGwoc2xv
d0NhbGwpCisgICAgICAgICAgICAsIHNsb3dQYXRoKHNsb3dQYXRoKQorICAgICAgICAgICAgLCBp
bmZvKGluZm8pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzU2xvd0Nh
bGwoKSB7IHJldHVybiBzbG93Q2FsbC5tX2xhYmVsLmlzU2V0KCk7IH0KKwogICAgICAgICBDYWxs
IGNhbGw7CisgICAgICAgIENhbGwgc2xvd0NhbGw7CiAgICAgICAgIExhYmVsIHNsb3dQYXRoOwog
ICAgICAgICBDYWxsTGlua0luZm8qIGluZm87CiAgICAgfTsKQEAgLTMzMSw3ICszNDYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgLCBpbmZvKGluZm8pCiAgICAgICAgIHsKICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXA7CiAgICAgICAg
IENhbGwgY2FsbDsKICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CkBAIC0zNTUsNyArMzcwLDEwIEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdEluZm8+IG1fZXhj
ZXB0aW9uSGFuZGxlck9TUkV4aXRDYWxsU2l0ZXM7CiAgICAgCiAgICAgQ2FsbCBtX2NhbGxBcml0
eUZpeHVwOwotICAgIExhYmVsIG1fYXJpdHlDaGVjazsKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJn
c1dpdGhQb3NzaWJsZUV4dHJhQXJnczsKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0
eUNoZWNrOworICAgIExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworICAgIExhYmVsIG1f
c3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0aXZl
SklUPiBtX3NwZWN1bGF0aXZlOwogICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlcjsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDExICszNywxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUpJVEZp
bmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0
Q29kZSwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK0pJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBs
YW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgSklURW50cnlQb2ludHMmIGVudHJ5cG9pbnRzKQog
ICAgIDogRmluYWxpemVyKHBsYW4pCiAgICAgLCBtX2ppdENvZGUoaml0Q29kZSkKICAgICAsIG1f
bGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtCdWZmZXIpKQotICAgICwgbV93aXRoQXJpdHlDaGVjayh3
aXRoQXJpdHlDaGVjaykKKyAgICAsIG1fZW50cnlwb2ludHMoZW50cnlwb2ludHMpCiB7CiB9CiAK
QEAgLTU2LDkgKzU3LDggQEAgc2l6ZV90IEpJVEZpbmFsaXplcjo6Y29kZVNpemUoKQogCiBib29s
IEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogewotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNv
ZGVSZWYoCi0gICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJ
VCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29k
ZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpOworICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBtX2VudHJ5cG9pbnRzKSk7CiAgICAgCiAgICAgbV9w
bGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIApAQCAtNjksMTAgKzY5
LDExIEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZSgpCiAKIGJvb2wgSklURmluYWxpemVy
OjpmaW5hbGl6ZUZ1bmN0aW9uKCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJpdHlD
aGVjay5pc0VtcHR5VmFsdWUoKSk7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJlZigK
LSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUg
Zm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ss
IEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAgICAgICBtX3dpdGhBcml0eUNoZWNrKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghbV9lbnRyeXBvaW50cy5lbnRyeUZvcihTdGFja0FyZ3NNdXN0
Q2hlY2tBcml0eSkuaXNFbXB0eVZhbHVlKCkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
b2RlUmVmID0gRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUg
Zm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ss
IEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpOworCisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXpl
RW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMp
KTsKKwogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAK
ICAgICBmaW5hbGl6ZUNvbW1vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklURmluYWxpemVy
IDogcHVibGljIEZpbmFsaXplciB7CiBwdWJsaWM6Ci0gICAgSklURmluYWxpemVyKFBsYW4mLCBQ
YXNzUmVmUHRyPEpJVENvZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4sIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI6OkVtcHR5VmFsdWUpKTsKKyAgICBKSVRGaW5hbGl6ZXIoUGxhbiYs
IFBhc3NSZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgSklURW50
cnlQb2ludHMmKTsKICAgICB2aXJ0dWFsIH5KSVRGaW5hbGl6ZXIoKTsKICAgICAKICAgICBzaXpl
X3QgY29kZVNpemUoKSBvdmVycmlkZTsKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZUNvbW1vbigpOwotICAgIAorCiAgICAgUmVmUHRyPEpJ
VENvZGU+IG1faml0Q29kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5r
QnVmZmVyOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX3dpdGhBcml0eUNoZWNrOworICAg
IEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2ludHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlh
YmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1l
bnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1l
bnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYg
bm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1l
bnQoKV07CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxs
RnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkg
JiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50IHx8IG5vZGUtPm9wKCkg
PT0gU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgICAgICYmICghbm9kZS0+bG9jYWwoKS5pc0Fy
Z3VtZW50KCkgfHwgbm9kZSAhPSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2Nh
bCgpLnRvQXJndW1lbnQoKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJh
bmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmx1c2hBY2Nlc3NEYXRhKQpA
QCAtMTE3LDcgKzExNyw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChpbml0aWFsQWNjZXNz
RGF0YS5vcGVyYW5kKG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwp
OyAvLyBXZSBzaG91bGQgaGF2ZSBpbnNlcnRlZCBhIEZsdXNoIGJlZm9yZSB0aGlzIQogICAgICAg
ICAgICAgaW5pdGlhbEFjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQob3Bl
cmFuZCkgPSBub2RlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgRXhp
dE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6
CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVu
Z3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw4IEBAIE1pbmlmaWVkTm9kZSBNaW5pZmll
ZE5vZGU6OmZyb21Ob2RlKE5vZGUKICAgICByZXN1bHQubV9vcCA9IG5vZGUtPm9wKCk7CiAgICAg
aWYgKGhhc0NvbnN0YW50KG5vZGUtPm9wKCkpKQogICAgICAgICByZXN1bHQubV9pbmZvID0gSlNW
YWx1ZTo6ZW5jb2RlKG5vZGUtPmFzSlNWYWx1ZSgpKTsKKyAgICBlbHNlIGlmIChub2RlLT5vcCgp
ID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgIHJlc3VsdC5tX2luZm8gPSAwOwogICAg
IGVsc2UgewogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBQaGFudG9tRGlyZWN0QXJndW1l
bnRzIHx8IG5vZGUtPm9wKCkgPT0gUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7CiAgICAgICAgIHJl
c3VsdC5tX2luZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWluaWZpZWROb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNaW5pZmllZE5vZGUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Myw2ICs0Myw3IEBAIGlubGluZSBib29sIGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgoTm9kZVQK
ICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBHZXRBcmd1bWVu
dFJlZ2lzdGVyOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJl
dmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgYm9vbCBOb2RlOjpoYXNWYXJpYWJsZUFj
Y2Vzc0RhdGEoR3JhcGgmIAogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoK
ICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAg
ICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODE5LDYgKzgxOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZhcmlhYmxlQWNjZXNzRGF0
YShHcmFwaCYpOwogICAgIGJvb2wgYWNjZXNzZXNTdGFjayhHcmFwaCYgZ3JhcGgpCiAgICAgewor
ICAgICAgICBpZiAob3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgICAgIHJldHVybiBoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoZ3JhcGgp
OwogICAgIH0KICAgICAKQEAgLTgzNyw2ICs4NDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8VmFyaWFibGVBY2Nlc3NEYXRhKj4oKS0+ZmluZCgpOwogICAgIH0KICAg
ICAKKyAgICB2b2lkIHNldFZhcmlhYmxlQWNjZXNzRGF0YShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlKQorICAgIHsKKyAgICAgICAgbV9vcEluZm8gPSB2YXJpYWJsZTsKKyAgICB9CisgICAg
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB2YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+bG9jYWwoKTsKQEAgLTEyMDAsNiArMTIwOCwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CiAg
ICAgfQogICAgIAorICAgIGJvb2wgaGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXI7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIGFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpCisgICAgeworICAgICAgICBBU1NF
UlQoaGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8y
LmFzPHVuc2lnbmVkPigpOworICAgIH0KKyAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gISFyZXN1bHQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9k
ZVJlc3VsdEpTKSAvKiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSBy
ZXR1cm5pbmcgaXQgYW55d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3Vs
dEludDMyKSBcCisgICAgbWFjcm8oR2V0QXJndW1lbnRSZWdpc3RlciwgTm9kZVJlc3VsdEpTIC8q
IHwgTm9kZU11c3RHZW5lcmF0ZSAqLykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbG9jYWwg
dmFyaWFibGUgYWNjZXNzLiBUaGVzZSBub2RlcyBhcmUgbGlua2VkIHRvZ2V0aGVyIHVzaW5nIFBo
aSBub2Rlcy4gKi9cCiAgICAgLyogQW55IHR3byBub2RlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBz
YW1lIFBoaSBncmFwaCB3aWxsIHNoYXJlIHRoZSBzYW1lICovXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsNiArMTQzLDExIEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpl
eGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVy
OiB7CisgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+bG9jYWwo
KSkuc2V0Tm9kZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBNb3ZI
aW50OiB7CiAgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+dW5s
aW5rZWRMb2NhbCgpKS5zZXROb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTYgKzExMiwzMiBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9y
aWdpbjsKICAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQg
PCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
YXNlbGluZS0+bnVtUGFyYW1ldGVycygpKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9k
ZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsK
ICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewotICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9y
IHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRl
ZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVu
dF07CisgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhbiBh
cmd1bWVudCBub2RlIGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgorICAgICAgICAgICAgICAgIG9s
ZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0g
ICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCi0g
ICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAg
ICAgICBOb2RlKiBub2RlOworICAgICAgICAgICAgTm9kZSogc3RhY2tOb2RlOworICAgICAgICAg
ICAgaWYgKGFyZ3VtZW50IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UykgeworICAgICAgICAgICAgICAgIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAorICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgR2V0QXJndW1lbnRSZWdpc3Rlciwgb3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkpLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oYXJndW1lbnRSZWdpc3RlckluZGV4
Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICAgICAgICAgIHN0YWNr
Tm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgs
IFNwZWNOb25lLCBTZXRMb2NhbCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
b2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICBFZGdl
KG5vZGUpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5l
d1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25l
LCBTZXRBcmd1bWVudCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICBzdGFja05vZGUgPSBu
b2RlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9y
Q2hlY2tpbmdbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNPblN0YWNrW2FyZ3VtZW50XSA9IHN0YWNrTm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZv
ciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsr
bG9jYWwpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw5IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAgICAgcGVyZm9ybUNvbnN0YW50
Rm9sZGluZyhkZmcpOwogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgIGRmZy5tX3N0cmVu
Z3RoUmVkdWNlQXJndW1lbnRzID0gT3B0aW1pemVBcmd1bWVudEZsdXNoZXM7CiAgICAgY2hhbmdl
ZCB8PSBwZXJmb3JtQ0ZHU2ltcGxpZmljYXRpb24oZGZnKTsKKyAgICBjaGFuZ2VkIHw9IHBlcmZv
cm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgIGNoYW5nZWQgfD0gcGVyZm9ybUxvY2FsQ1NF
KGRmZyk7CiAgICAgCiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewotICAg
ICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhpcywg
YXJlIGRlZmluaXRlbHkgcmVhZC4KKyAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0
IHN0YWNrIGFyZ3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSBkZWZpbml0ZWx5IHJlYWQuCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCk7IGktLSA+IDE7KQogICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzQsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5h
Y2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YWNj
ZXNzZXNTdGFjayhtX2dyYXBoKSB8fCBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIp
OwogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAog
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX2dyYXBoLm1fcGxhbi5t
dXN0SGFuZGxlVmFsdWVzW2ldKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4MCw2
ICs5ODAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgLy8gQ29weSBwcmVk
aWN0aW9uIGZyb20gb3VyIFZhcmlhYmxlQWNjZXNzRGF0YS4KKyAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24obV9jdXJyZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSk7
CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAg
ICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Np
bmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcs
OCArMTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLy8KICAgICAgICAgLy8gRm9yIG91ciBwdXJw
b3NlcyBoZXJlLCB0aGUgaW1wcmVjaXNpb24gaW4gdGhlIGFsaWFzaW5nIGlzIGhhcm1sZXNzLiBJ
dCBqdXN0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgLy8gbWF5IG5vdCBkbyBhcyBtdWNoIFBoaSBw
cnVuaW5nIGFzIHdlIHdhbnRlZC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVBdEhlYWQu
YXRJbmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0SW5kZXgoMCkuYXJndW1lbnQoaSkp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9m
QXJndW1lbnRzKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChpID49IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICAvLyBTdGFjayBh
cmd1bWVudHMgYXJlIGxpdmUgYXQgdGhlIGhlYWQgb2Ygcm9vdC4KKyAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1bWVu
dChpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIE5l
eHQgaWRlbnRpZnkgd2hlcmUgd2Ugd291bGQgd2FudCB0byBzaW5rIFB1dFN0YWNrcyB0by4gV2Ug
c2F5IHRoYXQgdGhlcmUgaXMgYSBkZWZlcnJlZAogICAgICAgICAvLyBmbHVzaCBpZiB3ZSBoYWQg
YSBQdXRTdGFjayB3aXRoIGEgZ2l2ZW4gRmx1c2hGb3JtYXQgYnV0IGl0IGhhc24ndCBiZWVuIG1h
dGVyaWFsaXplZCB5ZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lz
dGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9IG5hbWU7CiAgICAgICAgIG1fZGF0
YVtpbmRleF0uc3BpbGxPcmRlciA9IHNwaWxsT3JkZXI7CiAgICAgfQorCiAgICAgdm9pZCByZWxl
YXNlKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHJlbGVhc2VBdEluZGV4KEJhbmtJbmZvOjp0
b0luZGV4KHJlZykpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgKyttX2Rh
dGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0Nv
dW50KTsKICAgICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJRCByZWcpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4KHJlZyk7CkBAIC0yMzYsNiArMjM4
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2JhbmstPmlzTG9ja2VkQXRJbmRl
eChtX2luZGV4KTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdW5sb2NrKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+dW5sb2NrQXRJbmRleChtX2luZGV4
KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCByZWxlYXNlKCkgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNlQXRJbmRleChtX2luZGV4KTsKQEAg
LTI5OCw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fZGF0YVtpbmRleF0u
bG9ja0NvdW50OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2NrQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5VTV9SRUdTKTsKKyAgICAgICAgQVNT
RVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAgICAgLS1tX2RhdGFbaW5kZXhdLmxv
Y2tDb3VudDsKKyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbmFtZUF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBOVU1fUkVHUyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzcz
LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIGFsbCBT
ZXRMb2NhbHMgYW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBXZSBoYW5kbGUgU2V0QXJndW1lbnQg
YnkgY3JlYXRpbmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwgYW5kIHJlY29yZGluZyB0aGUgZmx1
c2ggZm9ybWF0LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5kIHJlY29yZGluZyB0aGUgZmx1c2gg
Zm9ybWF0LiBXZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3RlciBieSBkaXJlY3RseQorICAgICAg
ICAvLyBhZGRpbmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1hcHBpbmcgaGFzaCBtYXAuCiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxv
Y2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKQEAgLTgzLDE0ICs4NCwx
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25tZW50IGZvciBldmVyeSBsb2NhbC4K
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxv
Y2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0g
U2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVudCkKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5vcCgpICE9IFNldEFyZ3VtZW50ICYm
IG5vZGUtPm9wKCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZTsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBjaGlsZE5vZGUgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFNldExvY2FsKQogICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBub2RlLT5j
aGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBH
ZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50TWFwcGlu
Zy5hZGQobm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKICAgICAgICAgICAgICAg
ICAgICAgY2hpbGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEwMSw5ICsx
MDQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudEdldHRl
cnMuYWRkKGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRNYXBwaW5n
LmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKAotICAgICAgICAgICAgICAg
ICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZhcmlhYmxlKSwgYmxvY2ssIGNoaWxk
Tm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlKQorICAgICAgICAgICAgICAg
ICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9zc2FW
YXJpYWJsZUZvclZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJsb2NrLCBjaGlsZE5vZGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKGJsb2NrKTsKQEAgLTI5NCw3ICsyOTgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBjaGlsZDsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3Rlcjog
eworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3Bl
cmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IG5vZGU7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgR2V0
U3RhY2s6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRHZXR0ZXJzLmNv
bnRhaW5zKG5vZGUpKTsKICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJh
bmQobm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2FsKSA9IG5vZGU7CkBAIC0zODIsMTcgKzM5
MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1
ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUo
bV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnNpemUoKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1
bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdl
dChtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0pOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUt
PnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1h
dDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tp
XSA9IGZvcm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAv
LyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZp
dCBvZiBleGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JD
aGVja2luZ1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1
bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2Fz
ZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAg
Y2FzZSBTZXRMb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGR5bmFtaWNPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwo
Y2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CisgICAg
aW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbGVlUGF5bG9hZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNldFN0
YWNrID0gWyZdICgpIHsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9h
ZCh0aGlzKTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMo
KTsKICAgICB9CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CkBAIC01NjA0LDYgKzU2MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIFBoYW50
b21DcmVhdGVSZXN0OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgInVu
ZXhwZWN0ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94
SW50NTIoR1BSUmVnIHNvdQogICAgIHVubG9jayhmcHIpOwogfQogCi1HUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcgZ3ByVG9Vc2UpCiB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVy
YXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7CiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOwogCiAgICAgICAg
IGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUg
PSBlZGdlLT5hc0pTVmFsdWUoKTsKQEAgLTEyMCw3ICsxMjAsMTIgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAvLyBJZiB0aGUgcmVnaXN0ZXIgaGFz
IGFscmVhZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0YWtlIGEgY29weS4KICAgICAgICAgLy8g
SWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFjZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0
aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdEludDMyLCBub3QgRGF0YUZvcm1hdEpTSW50
MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxs
b2NhdGUoZ3ByVG9Vc2UpOworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdwclRvVXNlICE9IEludmFsaWRHUFJSZWcgJiYgZ3By
ICE9IGdwclRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3By
VG9Vc2UpOwogICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIGdwciwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KQEAgLTEzOCw2ICsxNDMsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1
ZShFZGdlIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGlm
IChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJUb1VzZSkgeworICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KQEAgLTYzNSw2ICs2NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0
cmljdEVxCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewogICAg
IENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7CisgICAgQXJndW1lbnRzTG9jYXRpb24g
YXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAgYm9vbCBpc1ZhcmFyZ3MgPSBmYWxz
ZTsKICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzVGFpbCA9
IGZhbHNlOwpAQCAtNzE3LDcgKzcyOCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAg
IENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOwotICAgIAorCisgICAgaW5jcmVtZW50
Q291bnRlcigmbV9qaXQsIFZNOjpERkdDYWxsZXIpOworCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUgPSBudWxscHRyOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoaXNEaXJlY3QpIHsKQEAgLTczNiw2ICs3NDksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFI7CiAgICAgICAgIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gbV9qaXQu
Z3JhcGgoKS5tX25leHRNYWNoaW5lTG9jYWw7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKCZtX2ppdCwgVk06OkNhbGxWYXJhcmdzKTsKICAgICAgICAgaWYgKGlzRm9yd2FyZFZh
cmFyZ3MpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQzKCkpCkBAIC04MTMsNyArODI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMygpKTsKIAog
ICAgICAgICAvLyBOb3cgc2V0IHVwIHRoZSAidGhpcyIgYXJndW1lbnQuCi0gICAgICAgIEpTVmFs
dWVPcGVyYW5kIHRoaXNBcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHRoaXNBcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSwgYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOwogICAgICAgICBHUFJSZWcgdGhpc0FyZ3Vt
ZW50R1BSID0gdGhpc0FyZ3VtZW50LmdwcigpOwogICAgICAgICB0aGlzQXJndW1lbnQudXNlKCk7
CiAgICAgICAgIApAQCAtODQ0LDYgKzg1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1RhaWwpIHsKKyAgICAg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6VGFpbENhbGwpOwogICAgICAgICAg
ICAgRWRnZSBjYWxsZWVFZGdlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKTsKICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKICAgICAgICAg
ICAgIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKQEAgLTg2Nyw3ICs4ODIsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1ZmZs
ZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9qaXQu
Y29kZUJsb2NrKCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
Pm9wKCkgPT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAgIC8vIENhbGxFdmFsIGlzIGhhbmRsZWQg
d2l0aCB0aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxl
cjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7
CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBp
KyspIHsKQEAgLTg3OCwyMiArODk0LDY5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3VtZW50U2xvdChpKSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVt
UGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVl
QXJndW1lbnRTbG90KGkpKTsKKworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQs
IFZNOjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAwOykgeworICAgICAgICAgICAgICAgIEdQUlJl
ZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkp
OworICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdD
aGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2UsIHBsYXRmb3JtQXJnR1BSKTsKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOworICAgICAgICAgICAgICAgIEFTU0VS
VChhcmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwgcGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQ
UlJlZyk7CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGZyZWUgdGhlIG5vbi1hcmd1bWVudCBy
ZWdpc3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1BcmdH
UFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7
CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYXJnR1BSLCBKSVRDb21waWxlcjo6
Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJndW1lbnQgZWRnZXMgZm9yIGFyZ3VtZW50cyBw
YXNzZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFz
c2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7CisgICAgICAgICAgICAgICAgaWYg
KGFyZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgICAgIEVkZ2UgYXJn
RWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkg
KyAxICsgaV07CisgICAgICAgICAgICAgICAgICAgIHVzZShhcmdFZGdlKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBh
cmdDb3VudEdQUiA9IGFsbG9jYXRlKGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkp
OworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIGFy
Z0NvdW50R1BSKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKKyAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRHUFIsIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVBh
eWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyNlbmRpZgorICAgICAg
ICAgICAgYXJndW1lbnRzTG9jYXRpb24gPSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BbGxvY2F0
ZWRBcmdzKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsg
aSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIEdQUlJlZyBwbGF0
Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworCisg
ICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09IEludmFsaWRHUFJSZWcpCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpJ
VENvbXBpbGVyOjpjYWxsZWVBcmd1bWVudFNsb3QoaSkpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSwgYWxsb2NhdGUocGxhdGZvcm1BcmdHUFIpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAoIWlzVGFpbCB8fCBpc1ZhcmFy
Z3MgfHwgaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICBFZGdlIGNhbGxlZUVkZ2UgPSBtX2pp
dC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUo
dGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBj
YWxsZWVFZGdlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwogICAgICAgICBjYWxsZWVH
UFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNhbGxlZS51c2UoKTsKLSAgICAgICAgbV9qaXQu
c3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICAg
ICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyNlbmRpZgorICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVNsb3Qo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICB9CiAKKyAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzKQorICAgICAgICB1
bmxvY2tBcmd1bWVudFJlZ2lzdGVycygpOworCiAgICAgQ29kZU9yaWdpbiBzdGF0aWNPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgQVNTRVJUKCFpc1RhaWwgfHwgIXN0YXRpY09y
aWdpbi5pbmxpbmVDYWxsRnJhbWUgfHwgIXN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmdl
dENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkpOwogICAgIEFTU0VSVCghaXNFbXVsYXRlZFRhaWwg
fHwgKHN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUgJiYgc3RhdGljT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkpOwpAQCAtOTE2LDcgKzk3OSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICB9OwogICAg
IAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwotICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBt
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CisgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBD
YWxsRXZhbCkgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNhbGwgb3BlcmF0aW9uQ2FsbEV2YWwg
YnV0IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBwYXJhbWV0ZXIgYXJlYSBpbgpAQCAt
OTU5LDYgKzEwMjIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHBh
dGNoYWJsZUp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6TGFiZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgpOworCisgICAgICAgICAgICBpbmNy
ZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAgICAg
CkBAIC05NjksNyArMTAzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIHNsb3dQ
YXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgICAgIHBhdGNoYWJsZUp1bXAubV9qdW1wLmxp
bmtUbyhzbG93UGF0aCwgJm1faml0KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsK
ICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CkBAIC05
ODQsMjQgKzEwNTAsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQu
bGFiZWwoKTsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
RGlyZWN0Q2FsbCk7CisKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxs
U2l0ZSk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKLSAgICAgICAgCisKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9q
aXQubGFiZWwoKTsKKwogICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgIG1faml0LnBv
cChKSVRDb21waWxlcjo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpKTsKKyAgICAgICAgICAg
IG1faml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKworICAgICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFy
Z0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBjYWxs
ZWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBtX2ppdC5q
dW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7
Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xvd1BhdGgs
IGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgbV9qaXQuYWRkSlNEaXJlY3RDYWxsKGNhbGwsIHNs
b3dDYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKQEAgLTEwMzAsMTQgKzExMDEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVTaHVmZmxl
cihtX2ppdCwgc2h1ZmZsZURhdGEpOwogICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxs
ZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOwogICAgICAgICBjYWxs
RnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMg
dG8gYmUgaW4gcmVnVDAKLQotICAgICAgICBpZiAoaXNUYWlsKQotICAgICAgICAgICAgbV9qaXQu
ZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3
ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKLSAgICB9CisgICAgfSBlbHNlIGlmIChpc1RhaWwp
CisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKKyAgICBtX2ppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5v
bkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAogICAgIGRvbmUu
bGluaygmbV9qaXQpOwpAQCAtNDEzOSwxOCArNDIwNiw1MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgIEdQUlJlZyBjYWxsZWVSZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGNhbGxlZVZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpOworICAgICAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVn
aXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5p
c0xvY2tlZChjYWxsZWVSZWcpICYmIG1fZ3Bycy5uYW1lKGNhbGxlZVJlZykgPT0gY2FsbGVlVmly
dHVhbFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgIGNhbGxlZVJlZ1dpdGhWYWx1ZSA9IGNhbGxl
ZVJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbGxlZVJlZ1dpdGhWYWx1
ZSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUmVnV2l0aFZhbHVlLCBy
ZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhjYWxsZWVSZWdXaXRoVmFs
dWUpOworICAgICAgICAgICAgbV9ncHJzLnJlbGVhc2UoY2FsbGVlUmVnV2l0aFZhbHVlKTsKKyAg
ICAgICAgfQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIEdQUlJlZyBhcmd1bWVudENvdW50UmVn
V2l0aFZhbHVlID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgCisgICAgICAgIGlmICghbV9ibG9j
ay0+aW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENvdW50Vmly
dHVhbFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291bnRSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9n
cHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpICYmIG1fZ3Bycy5uYW1lKGFyZ3VtZW50Q291
bnRSZWcpID09IGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0ZXIpCisgICAgICAgICAgICAgICAg
YXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSA9IGFyZ3VtZW50Q291bnRSZWc7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlID09IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoYXJndW1lbnRDb3Vu
dFJlZ1dpdGhWYWx1ZSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1fZ3Bycy51bmxvY2so
YXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSk7CisgICAgICAgICAgICBtX2dwcnMucmVsZWFzZShh
cmd1bWVudENvdW50UmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQogICAgICAgICBpbnQzMlJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAg
Y2FzZSBHZXRSZXN0TGVuZ3RoOiB7CiAgICAgICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKG5vZGUp
OwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NiArNzEsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsCiAgICAg
LCBtX2xhc3RHZW5lcmF0ZWROb2RlKExhc3ROb2RlVHlwZSkKICAgICAsIG1faW5kZXhJbkJsb2Nr
KDApCiAgICAgLCBtX2dlbmVyYXRpb25JbmZvKG1faml0LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNv
dW50KCkpCisgICAgLCBtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm8oQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICsgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykKICAgICAsIG1fc3RhdGUo
bV9qaXQuZ3JhcGgoKSkKICAgICAsIG1faW50ZXJwcmV0ZXIobV9qaXQuZ3JhcGgoKSwgbV9zdGF0
ZSkKICAgICAsIG1fc3RyZWFtKCZqaXQuaml0Q29kZSgpLT52YXJpYWJsZUV2ZW50U3RyZWFtKQpA
QCAtNDA0LDYgKzQwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNsZWFyR2VuZXJhdGlvbklu
Zm8KIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5z
aXplKCk7ICsraSkKKyAgICAgICAgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW2ldID0gR2VuZXJh
dGlvbkluZm8oKTsKICAgICBtX2dwcnMgPSBSZWdpc3RlckJhbms8R1BSSW5mbz4oKTsKICAgICBt
X2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKIH0KQEAgLTEyMzIsNiArMTIzNSwyNiBA
QCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhCiAgICAgcmV0dXJuIHN0
cmluZ3NbZm9ybWF0XTsKIH0KIAorc3RhdGljIHZvaWQgZHVtcFJlZ2lzdGVySW5mbyhHZW5lcmF0
aW9uSW5mbyYgaW5mbywgdW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGluZm8uYWxpdmUoKSkK
KyAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpbmRleCwgZGF0YUZvcm1hdFN0cmlu
ZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8uc3BpbGxGb3Jt
YXQoKSkpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOltfX11bX19dIiwg
aW5kZXgpOworICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJs
ZSkKKyAgICAgICAgZGF0YUxvZ0YoIjpmcHIlZFxuIiwgaW5mby5mcHIoKSk7CisgICAgZWxzZSBp
ZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lCisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0
SlMpCisjZW5kaWYKKyAgICAgICAgKSB7CisgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBkYXRhTG9nRigiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05h
bWUoaW5mby5ncHIoKSkpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhTG9nRigiXG4iKTsKKyAg
ICAKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZHVtcChjb25zdCBjaGFyKiBsYWJlbCkKIHsK
ICAgICBpZiAobGFiZWwpCkBAIC0xMjQxLDI1ICsxMjY0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmR1bXAoY29uc3QgY2hhciogbGEKICAgICBtX2dwcnMuZHVtcCgpOwogICAgIGRhdGFMb2dG
KCIgIGZwcnM6XG4iKTsKICAgICBtX2ZwcnMuZHVtcCgpOwotICAgIGRhdGFMb2dGKCIgIFZpcnR1
YWxSZWdpc3RlcnM6XG4iKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0
aW9uSW5mby5zaXplKCk7ICsraSkgewotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1f
Z2VuZXJhdGlvbkluZm9baV07Ci0gICAgICAgIGlmIChpbmZvLmFsaXZlKCkpCi0gICAgICAgICAg
ICBkYXRhTG9nRigiICAgICUgM2Q6JXMlcyIsIGksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdp
c3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOltfX11bX19dIiwgaSk7
Ci0gICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkK
LSAgICAgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOwotICAgICAgICBl
bHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmUKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBE
YXRhRm9ybWF0SlMpCi0jZW5kaWYKLSAgICAgICAgICAgICkgewotICAgICAgICAgICAgQVNTRVJU
KGluZm8uZ3ByKCkgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICBkYXRhTG9nRigiOiVz
XG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgIH0KKworICAgIGRhdGFMb2dGKCIgIEFyZ3Vt
ZW50IFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9hcmd1bWVudEdlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBkdW1wUmVnaXN0
ZXJJbmZvKG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSwgaSk7CisKKyAgICBkYXRhTG9nRigi
ICBMb2NhbCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIGR1bXBSZWdpc3Rlcklu
Zm8obV9nZW5lcmF0aW9uSW5mb1tpXSwgaSk7CisKICAgICBpZiAobGFiZWwpCiAgICAgICAgIGRh
dGFMb2dGKCI8LyVzPlxuIiwgbGFiZWwpOwogfQpAQCAtMTcxMCw2ICsxNzIzLDkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgIAogICAgIG1faml0LmJsb2Nr
SGVhZHMoKVttX2Jsb2NrLT5pbmRleF0gPSBtX2ppdC5sYWJlbCgpOwogCisgICAgaWYgKCFtX2Js
b2NrLT5pbmRleCkKKyAgICAgICAgY2hlY2tBcmd1bWVudFR5cGVzKCk7CisKICAgICBpZiAoIW1f
YmxvY2stPmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkgewogICAgICAgICAvLyBEb24ndCBn
ZW5lcmF0ZSBjb2RlIGZvciBiYXNpYyBibG9ja3MgdGhhdCBhcmUgdW5yZWFjaGFibGUgYWNjb3Jk
aW5nIHRvIENGQS4KICAgICAgICAgLy8gQnV0IHRvIGJlIHN1cmUgdGhhdCBub2JvZHkgaGFzIGdl
bmVyYXRlZCBhIGp1bXAgdG8gdGhpcyBibG9jaywgZHJvcCBpbiBhCkBAIC0xNzIwLDE1ICsxNzM2
LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKIAogICAgIG1f
c3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCisgICAg
aWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAgICAgICAgc2V0dXBBcmd1bWVudFJlZ2lzdGVyc0ZvckVu
dHJ5KCk7CisgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAg
ICBtX2ppdC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOwogICAgIG1faml0LmppdEFzc2VydEFyZ3Vt
ZW50Q291bnRTYW5lKCk7CiAKICAgICBtX3N0YXRlLnJlc2V0KCk7CiAgICAgbV9zdGF0ZS5iZWdp
bkJhc2ljQmxvY2sobV9ibG9jayk7Ci0gICAgCisKICAgICBmb3IgKHNpemVfdCBpID0gbV9ibG9j
ay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgaS0tOykgewogICAgICAgICBpbnQgb3BlcmFuZCA9
IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgIGlm
ICghbV9ibG9jay0+aW5kZXggJiYgb3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpIHsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50ID0gbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3Vt
ZW50Rm9ySW5kZXgoaSk7CisgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2ppdC5n
cmFwaCgpLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoYXJndW1lbnROb2RlICYmIGFyZ3VtZW50Tm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUtPnJl
ZkNvdW50KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJl
Y29yZCBkZWFkIEdldEFyZ3VtZW50UmVnaXN0ZXJzJ3MuCisgICAgICAgICAgICAgICAgbV9zdHJl
YW0tPmFwcGVuZEFuZExvZygKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVFdmVudDo6bW92
SGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlmaWVkSUQoYXJndW1lbnROb2RlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Tm9kZS0+bG9jYWwoKSkpOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZFtpXTsKICAgICAgICAgaWYgKCFu
b2RlKQogICAgICAgICAgICAgY29udGludWU7IC8vIE5vIG5lZWQgdG8gcmVjb3JkIGRlYWQgU2V0
TG9jYWwncy4KQEAgLTE4MTUsMTMgKzE4NDksMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDAp
LCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gbV9q
aXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldOwogICAgICAgICBpZiAoIW5vZGUp
IHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkg
Y2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7
CisgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50CisgICAgICAgICAgICB8
fCAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBHZXRB
cmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVu
dFJlZ2lzdGVyKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpOwogCiAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0xODMyLDIzICsxODY4LDQyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7CiAKLSAg
ICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisgICAgICAgIEpTVmFsdWVTb3VyY2Ug
dmFsdWVTb3VyY2U7CisKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXI7CisgICAgICAg
IAorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgYXJndW1lbnRSZWdpc3Rl
ciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAg
dmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKGFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgYXJndW1lbnRSZWdpc3RlciA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisgICAgICAgIH0KICAgICAgICAgCiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAgY2FzZSBGbHVzaGVk
SW50MzI6IHsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAhPSBJbnZhbGlkR1BS
UmVnKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgYXJndW1lbnRS
ZWdpc3RlciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmx1
c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50UmVnaXN0ZXIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0
ZXIsIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKICAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxp
bnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVy
ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKQEAgLTE4NzksMTAgKzE5MzQsNTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbigpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKQor
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgQmFzaWNCbG9jayogZmlyc3RCbG9jayA9IG1faml0
LmdyYXBoKCkuYmxvY2soMCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleEluQmxvY2sgPSAwOyBp
bmRleEluQmxvY2sgPCBmaXJzdEJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBmaXJzdEJsb2NrLT5hdChpbmRleEluQmxvY2spOworCisgICAgICAg
IGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsK
KyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmly
dHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1l
bnRSZWcgPSBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3Rl
ckluZGV4KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRSZWcg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9n
cHJzLmlzTG9ja2VkKGFyZ3VtZW50UmVnKSk7CisgICAgICAgICAgICBtX2dwcnMuYWxsb2NhdGVT
cGVjaWZpYyhhcmd1bWVudFJlZyk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGFyZ3VtZW50
UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBpbmZvLmlu
aXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgYXJndW1lbnRS
ZWcsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpbmZvLm5vdGljZU9TUkJpcnRoKCptX3N0
cmVhbSwgbm9kZSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5v
cCgpID09IEdldENhbGxlZSkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAg
ICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisKKyAgICAgICAgICAgIEFTU0VSVCghbV9ncHJz
LmlzTG9ja2VkKGNhbGxlZVJlZykpOworICAgICAgICAgICAgbV9ncHJzLmFsbG9jYXRlU3BlY2lm
aWMoY2FsbGVlUmVnKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oY2FsbGVlUmVnLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBpbmZvLmluaXRBcmd1bWVu
dFJlZ2lzdGVyVmFsdWUobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgY2FsbGVlUmVnLCBEYXRhRm9y
bWF0SlMpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUs
IHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJS
ZWcgYXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3Vt
ZW50Q291bnRSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3Vt
ZW50Q291bnRSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudENvdW50UmVn
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2VyKTsKKyAgICAgICAgICAgIGluZm8u
aW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVu
dENvdW50UmVnLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JC
aXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKK30KKwogYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSgpCiB7Ci0gICAgY2hl
Y2tBcmd1bWVudFR5cGVzKCk7Ci0gICAgCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAg
ICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2ppdC5ncmFw
aCgpLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKICAgICAgICAgbV9qaXQuc2V0Rm9yQmxv
Y2tJbmRleChibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBH
UFJSZWcgZmlsbEpTVmFsdWUoRWRnZSk7CisgICAgR1BSUmVnIGZpbGxKU1ZhbHVlKEVkZ2UsIEdQ
UlJlZyBncHJUb1VzZSA9IEludmFsaWRHUFJSZWcpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICBib29sIGZpbGxKU1ZhbHVlKEVkZ2UsIEdQUlJlZyYsIEdQUlJlZyYsIEZQUlJlZyYpOwog
I2VuZGlmCkBAIC0yMDAsNyArMjAwLDEyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREZHX1JFR0lT
VEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKICAgICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxv
Y2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHNwaWxsTWUgPSBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhzcGVjaWZpYyk7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lOworICAgICAgICBpZiAoc3BlY2lmaWMg
PT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHNwZWNpZmljID0gbV9ncHJzLmFsbG9jYXRl
KHNwaWxsTWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcGlsbE1lID0gbV9ncHJzLmFs
bG9jYXRlU3BlY2lmaWMoc3BlY2lmaWMpOworCiAgICAgICAgIGlmIChzcGlsbE1lLmlzVmFsaWQo
KSkgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3RlcihzcGlsbE1lKTsKQEAgLTMx
NSw2ICszMjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQXJndW1lbnRUeXBlcygpOwog
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIHZvaWQg
Y2xlYXJHZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3
aGVuIGdlbmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUsNiArNDkyLDkgQEAgcHVibGljOgog
ICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQg
c3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAgeworICAgICAgICBpZiAoc3BpbGxN
ZS5pc0FyZ3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAwKQorICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmly
dHVhbFJlZ2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTYxMyw2
ICs2MjMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2
b2lkIHVubG9ja0FyZ3VtZW50UmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgcmVnSW5kZXggPSAwOyByZWdJbmRleCA8IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7
IHJlZ0luZGV4KyspIHsKKyAgICAgICAgICAgIEdQUlJlZyBhcmdSZWdpc3RlciA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3IocmVnSW5kZXgpOworICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChh
cmdSZWdpc3RlcikpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fZ3Bycy5uYW1lKGFyZ1Jl
Z2lzdGVyKS5pc1ZhbGlkKCkpOworICAgICAgICAgICAgICAgIG1fZ3Bycy51bmxvY2soYXJnUmVn
aXN0ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6OkltbTY0IHZhbHVlT2ZKU0NvbnN0YW50
QXNJbW02NChOb2RlKiBub2RlKQogICAgIHsKQEAgLTI4NjUsNyArMjg4NiwxMCBAQCBwdWJsaWM6
CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVy
KFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
bV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAgICAgaWYg
KHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm4gbV9nZW5lcmF0
aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAgICAgQVNTRVJUKHZpcnR1
YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4gbV9hcmd1bWVudEdlbmVy
YXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKV07CiAgICAgfQogICAgIAogICAgIEdl
bmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQpAQCAtMjg4OCw2ICsyOTEy
LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2NrOwogICAgIC8vIFZpcnR1
YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1hcHMuCiAgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZv
LCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAgICBWZWN0b3I8R2VuZXJhdGlvbkluZm8sIDg+IG1f
YXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAgICBSZWdpc3RlckJhbms8R1BSSW5mbz4gbV9ncHJz
OwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZvPiBtX2ZwcnM7CiAKQEAgLTI5ODYsNiArMzAxMSwy
MCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGV4
cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgR1BS
UmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRn
ZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpIHx8IHJlZ1RvVXNlICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBncHJVc2VTcGVjaWZpYyhyZWdUb1VzZSk7CisgICAgfQor
I2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVPcGVyYW5kKCkKICAgICB7CiAgICAgICAgIGlmICgh
bV9lZGdlKQpAQCAtMzAyMiw2ICszMDYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3By
T3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSk7CiAgICAgICAgIHJldHVybiBt
X2dwck9ySW52YWxpZDsKICAgICB9CisgICAgR1BSUmVnIGdwclVzZVNwZWNpZmljKEdQUlJlZyBy
ZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BS
UmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbEpTVmFsdWUobV9l
ZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CiAg
ICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBO
b2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9j
YWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsb2Nh
bC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5tX3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRzICE9IE9w
dGltaXplQXJndW1lbnRGbHVzaGVzKQorICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsgaS0tOykgewogICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09IGxvY2FsKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCwxNSArMTMwLDMzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5r
R2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMywgTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDQsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihSZWdp
c3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihpbnQzMl90KSkpKTsKICAgICBq
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oLXN0YXRpY19j
YXN0PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykpKSkubGlua1Rv
KGxvb3AsICZqaXQpOwogICAgIAotICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwot
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxMDAwKSkpKTsKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0
T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86Om5v
bkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwogICAgIGppdC5hYm9ydFdpdGhSZWFz
b24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24pOwogCiAgICAgb2subGlu
aygmaml0KTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1
ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJnQ291bnRSZWcpOworICAg
IAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lTG9hZGluZ0FyZ3M7CisgICAgCisg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgaml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENh
bGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChh
cmdJbmRleCkpOworICAgIAorICAgIGRvbmVMb2FkaW5nQXJncy5saW5rKCZqaXQpOworI2VuZGlm
CisgICAgCisgICAgLy8gV2h5IGRpZCBJIHB1dCB0aGlzIFJlZ2lzdGVyU2V0IGhlcmU/CisgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lzdGVycygpLCBHUFJJbmZvOjpyZWdU
MCk7CisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKCk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKLSAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3Jh
cGgubV9wbGFuLm1vZGUgPT0gREZHTW9kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghT3B0
aW9uczo6dXNlRlRMSklUKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGls
YXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4
LDcgKzQ4OCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFy
Z3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBU
aHJlYWRlZENQUykKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50
KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGdldExvY2FsUG9z
aXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAgICAgICAgICAgIHNldExvY2FsUG9z
aXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3Bw
CShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDEzIEBAIHZv
aWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgaWYgKCFpbmRleCkgewog
ICAgICAgICB2YWx1ZVJlY292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZh
bHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFsdWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJ
bmRleChpKSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJl
Y292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjppbkdQUigKKyAgICAgICAgICAgICAgICAgICAg
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9
IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRh
Rm9ybWF0SlMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjEsNiArMTY2LDE0IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25z
dHJ1Y3QoCiAgICAgICAgICAgICBNaW5pZmllZEdlbmVyYXRpb25JbmZvIGluZm87CiAgICAgICAg
ICAgICBpbmZvLnVwZGF0ZShldmVudCk7CiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb3MuYWRk
KGV2ZW50LmlkKCksIGluZm8pOworICAgICAgICAgICAgTWluaWZpZWROb2RlKiBub2RlID0gZ3Jh
cGguYXQoZXZlbnQuaWQoKSk7CisgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5vcCgpID09
IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBncHIgPSBldmVudC5ncHIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudCA9IEdQUkluZm86OnRvQXJndW1lbnRJbmRleChncHIpIC0gMjsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoYXJndW1lbnQgIT0gR1BSSW5mbzo6SW52YWxpZEluZGV4KTsKKyAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCk7CisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3Bl
cmFuZChhcmd1bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWxsOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmly
dHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIDog
UGhhc2UoZ3JhcGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24iKQogICAgIHsKICAgICB9
Ci0gICAgCisKKyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoU2NvcmVCb2FyZCYgc2NvcmVCb2Fy
ZCwgTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0LCBjYWxsIHVzZSBvbiBhbGwg
b2YgdGhlIGN1cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVuCisgICAgICAgIC8vIGFsbG9jYXRl
IGEgVmlydHVhbFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKKyAgICAg
ICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwgYW5kIGEK
KyAgICAgICAgLy8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBiZSByZXVz
ZWQgZm9yIG5vZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3Mp
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxk
KCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsg
Y2hpbGRJZHgrKykKKyAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gc2NvcmVCb2Fy
ZC5hbGxvY2F0ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJl
Z2lzdGVyKTsKKyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VD
b3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBh
Y2NvdW50IGZvciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCisgICAg
ICAgICAgICBzY29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9CisKICAgICBib29sIHJ1bigpCiAg
ICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3Jt
ID09IFRocmVhZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAvLyBGb3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJlcmVkIHZpcnR1YWwgcmVnaXN0ZXJz
LgogICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZyZWUoKTsKICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgTm9kZXMgZmlyc3Qg
YXMgdGhlIHJlZ2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5CisgICAgICAgICAgICAvLyB0byB0aGUg
ZnVuY3Rpb24gYW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQgYmVmb3JlIGFueSB1c2UuCisgICAg
ICAgICAgICBpZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
bmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5C
bG9jaykgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4
SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3Vt
ZW50UmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNj
b3JlQm9hcmQsIG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxv
Y2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtNzMsMzIgKzExMCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUn
cyBjaGlsZHJlbiwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVhbFJl
Z2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKLSAgICAgICAgICAgICAgICAv
LyBvcmRlciBzbyB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQgYQotICAg
ICAgICAgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUg
cmV1c2VkIGZvciBub2RlLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9k
ZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElk
eCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBu
b2RlLT5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgICAgICAgICAg
c2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJ
ZHhdKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzY29y
ZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKLSAgICAg
ICAgICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAg
ICAgICAgICAgICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVzZUNvdW50
IGFydGlmaWNpYWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAgICAgICAvLyBjYWxsIHVzZSBub3cg
dG8gYWNjb3VudCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVy
YXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG5vZGUpOworICAgICAg
ICAgICAgICAgIGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9kZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAg
Y2FzZSBHZXRTY29wZToKICAgICBjYXNlIEdldENhbGxlZToKKyAgICBjYXNlIEdldEFyZ3VtZW50
UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBj
YXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDggQEAgSklUQ29kZTo6fkpJVENvZGUoKQogICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZU
TCBKSVQgY29kZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgICAgICBk
YXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYXJpdHlD
aGVja0VudHJ5cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc1Bv
c3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAgIGRhdGFMb2coY29tbWEsIG1fcmVn
aXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAgIH0KIH0KIApAQCAtNTksMzEgKzYw
LDI2IEBAIHZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUIzQnlwcm9kdWN0cyhzdGQKICAgICBtX2Iz
Qnlwcm9kdWN0cyA9IFdURk1vdmUoYnlwcm9kdWN0cyk7CiB9CiAKLXZvaWQgSklUQ29kZTo6aW5p
dGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIgYWRkcmVzcykKK3ZvaWQgSklUQ29kZTo6aW5p
dGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2RlUmVmIGVudHJ5cG9pbnRUaHVuaykKIHsKLSAgICBt
X2FkZHJlc3NGb3JDYWxsID0gYWRkcmVzczsKKyAgICBtX2VudHJ5cG9pbnRUaHVuayA9IGVudHJ5
cG9pbnRUaHVuazsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQXJpdHlDaGVja0VudHJ5
cG9pbnQoQ29kZVJlZiBlbnRyeXBvaW50KQordm9pZCBKSVRDb2RlOjpzZXRFbnRyeUZvcihFbnRy
eVBvaW50VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQogewotICAgIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQgPSBlbnRyeXBvaW50OworICAgIG1fZW50cnlwb2ludHMuc2V0RW50cnlGb3IodHlwZSwg
ZW50cnkpOwogfQotCi1KSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFy
aXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2spCisgICAgCitKSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6
OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKIHsKLSAgICBzd2l0Y2gg
KGFyaXR5Q2hlY2spIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoKLSAgICAgICAg
cmV0dXJuIG1fYWRkcmVzc0ZvckNhbGw7Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKLSAgICAg
ICAgcmV0dXJuIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQuY29kZSgpOwotICAgIH0KLSAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7CisgICAgQ29k
ZVB0ciBlbnRyeSA9IG1fZW50cnlwb2ludHMuZW50cnlGb3IoZW50cnlUeXBlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChlbnRyeSk7CisgICAgcmV0dXJuIGVudHJ5OwogfQogCiB2b2lkKiBKSVRDb2Rl
OjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWRkcmVzc0ZvckNhbGwuZXhlY3V0YWJsZUFkZHJl
c3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJl
c3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkgKyBvZmZzZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNzQXRPZmZz
ZXQoc2l6ZV90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHJl
dmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7
CiAgICAgfkpJVENvZGUoKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVj
a01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90
IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50
b0NvZGUpIG92ZXJyaWRlOwpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGlu
aXRpYWxpemVCM0NvZGUoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQjNCeXByb2R1Y3Rz
KHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4pOwotICAgIHZvaWQgaW5pdGlh
bGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFyaXR5Q2hl
Y2tFbnRyeXBvaW50KENvZGVSZWYpOwotICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5cG9p
bnRUaHVuayhDb2RlUmVmKTsKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlLCBD
b2RlUHRyKTsKKwogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZl
cmVuY2VzJikgb3ZlcnJpZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVz
ZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4
KSBvdmVycmlkZTsKQEAgLTc3LDcgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgQ29kZVB0ciBtX2Fk
ZHJlc3NGb3JDYWxsOwogICAgIENvZGVSZWYgbV9iM0NvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEIzOjpPcGFxdWVCeXByb2R1Y3RzPiBtX2IzQnlwcm9kdWN0czsKLSAgICBDb2RlUmVmIG1fYXJp
dHlDaGVja0VudHJ5cG9pbnQ7CisgICAgQ29kZVJlZiBtX2VudHJ5cG9pbnRUaHVuazsKKyAgICBK
SVRFbnRyeVBvaW50cyBtX2VudHJ5cG9pbnRzOworICAgIENvZGVQdHIgbV9yZWdpc3RlckFyZ3NQ
b3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVyQXJnc0No
ZWNrQXJpdHlFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NBcml0eU9LRW50cnlQ
b2ludDsKKyAgICBDb2RlUHRyIG1fc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5cG9pbnQ7CiB9Owog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAg
ICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwKICAgICAgICAgICAg
ICgiRlRMIEIzIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1f
cGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsKIAotICAgIGppdENv
ZGUtPmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludCgKKyAgICBqaXRDb2RlLT5pbml0aWFs
aXplRW50cnlwb2ludFRodW5rKAogICAgICAgICBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICAg
ICAgZHVtcERpc2Fzc2VtYmx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAo
IkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVw
IiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENv
ZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDEwNiBA
QCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAgIHN3aXRjaCAoZ3JhcGgubV9wbGFu
Lm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6IHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBtYWluUGF0aEp1bXBzOwotICAgIAotICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAg
ICAgZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1haW5Q
YXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoOworICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHRvTWFpblBhdGg7CisKKyAgICAgICAgdW5zaWdu
ZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CisgICAgICAgIHVuc2lnbmVkIG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCA9
IHN0ZDo6bWluKG51bVBhcmFtZXRlcnMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMpOworCisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCByZWdp
c3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMgKyAxXTsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIC8vIFNwaWxsIGFu
eSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0
YWNrLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOyBhcmdJbmRleCA+PSBudW1QYXJhbWV0ZXJz
OyBhcmdJbmRleC0tKSB7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBv
aW50c1thcmdJbmRleCArIDFdID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgaml0LmVt
aXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZv
ckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEpOworICAg
ICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0KKworICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9Bcml0eUZpeHVwOworICAgICAg
ICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkg
PSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6U3RhY2tB
cmdzQXJpdHkpOworICAgICAgICBqaXQubG9hZDMyKGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJl
Z2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkJlbG93LCBHUFJJbmZvOjpyZWdUMSwKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNpZiBFTkFC
TEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjb250aW51ZVRvU3Rh
Y2tBcml0eU9rID0gaml0Lmp1bXAoKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NBcml0eU9LRW50cnkgPSBqaXQubGFiZWwoKTsKKworICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVlVG9TdGFja0FyaXR5T2subGluaygm
aml0KTsKKyNlbmRpZgorCisgICAgICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJn
dW1lbnQgcmVnaXN0ZXJzCisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJl
Zm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNh
bGxlZSgpKTsKKyAgICAgICAgaml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJl
Zm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgbWF4UmVnaXN0ZXJBcmd1bWVudENvdW50OyBhcmdJbmRl
eCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQ
cm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJn
SW5kZXgpKTsKKyAgICAgICAgCisgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkp
OworICAgICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCByZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0
LCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGNv
bnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXA7CisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
Y2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzOworCisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6RXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihudW1QYXJhbWV0ZXJzKSkpOworICAgICAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlG
aXh1cC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QmVsb3csIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1QYXJhbWV0
ZXJzKSkpOworICAgICAgICAgICAgLy8gIEZhbGwgdGhyb3VnaCB0byB0aGUgImV4dHJhIHJlZ2lz
dGVyIGFyaXR5IiBjYXNlLgorCisgICAgICAgICAgICBjaGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1
bWVudHMgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdp
c3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4IDwg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgewor
ICAgICAgICAgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFyZ0luZGV4KSkpOworICAgICAgICAgICAgICAgIGppdC5lbWl0UHV0QXJndW1lbnRUb0NhbGxG
cmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFy
Z0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEpOworICAgICAgICAg
ICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobnVtUGFyYW1ldGVycykpKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAg
ICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5hcHBlbmQoaml0Lmp1bXAoKSk7Cisj
ZW5kaWYKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA+IDApIHsKKyAgICAgICAgICAgIC8v
ICBUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRlci4KKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cCA9IGpp
dC5sYWJlbCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0lu
ZGV4ID0gMTsgYXJnSW5kZXggPCBudW1QYXJhbWV0ZXJzICYmIGFyZ0luZGV4IDw9IG1heFJlZ2lz
dGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgICAgICByZWdpc3RlckFy
Z3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4XSA9IHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5
Rml4dXA7CisgICAgICAgIH0KKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgaW5j
cmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0FyaXR5KTsKKyNlbmRpZgorICAgICAgICAK
KyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5saW5rKCZqaXQpOworCisgICAg
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKG1heFJl
Z2lzdGVyQXJndW1lbnRDb3VudCk7CisKKyAgICAgICAgY29udGludWVUb0FyaXR5Rml4dXAubGlu
aygmaml0KTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpBcml0eUZpeHVw
UmVxdWlyZWQpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAg
ICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAm
dm0udG9wQ2FsbEZyYW1lKTsKQEAgLTE1NSwxMSArMjQ3LDIwIEBAIHZvaWQgbGluayhTdGF0ZSYg
c3RhdGUpCiAKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwot
ICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVy
czo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIGZpbGxSZWdpc3RlcnNB
bmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6
WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBq
aXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
bWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICAgICAgZmlsbFJlZ2lzdGVy
c0FuZENvbnRpbnVlTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOworCisgICAgICAgIGZpbGxS
ZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmxpbmtUbyhzdGFja0FyZ3NBcml0eU9LRW50cnks
ICZqaXQpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5ID0gaml0LmxhYmVsKCk7CisgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NOb0FyaXR5KTsKKyAgICAgICAgdG9NYWluUGF0
aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisjZW5kaWYKIAogICAgICAgICBsaW5rQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSB7CkBAIC0xNjksOSArMjcwLDM1IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVj
dG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNo
ZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxl
ckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSk7
CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2
bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOwotICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2Nh
dGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7
CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsodG9NYWluUGF0aCwgQ29kZUxvY2F0aW9uTGFiZWwo
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKIAotICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7Cisg
ICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5
LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkpOworICAg
ICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVx
dWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisK
KyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
YWluRW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsK
KyNlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnkgPSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
bikpOworI2VuZGlmCisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVy
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFpbkVudHJ5KTsKKworICAgICAgICBpZiAoY2hl
Y2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzLmlzU2V0KCkpCisgICAgICAgICAgICBzdGF0ZS5q
aXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywgbGlua0J1
ZmZlci0+bG9jYXRpb25PZihjaGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHMpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJB
cmdzUG9zc2libGVFeHRyYUFyZ3MsIG1haW5FbnRyeSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkp
KTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5OworICAgICAgICAgICAgaWYgKGFy
Z0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZW50cnkgPSBtYWluRW50
cnk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2Fy
Z0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9j
YXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSk7CisgICAgICAgICAgICBzdGF0ZS5qaXRDb2Rl
LT5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVu
dENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCkBAIC0xODEsNyArMzA4LDE2IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgIC8vIHBvaW50IHdlJ3ZlIGV2ZW4gZG9uZSB0aGUgc3RhY2sgY2hlY2suIEJhc2lj
YWxseSB3ZSBqdXN0IGhhdmUgdG8gbWFrZSB0aGUKICAgICAgICAgLy8gY2FsbCB0byB0aGUgQjMt
Z2VuZXJhdGVkIGNvZGUuCiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc3RhcnQgPSBqaXQu
bGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKworICAgICAg
ICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworICAgICAg
ICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGppdC5l
bWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsK
KyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJn
SW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRl
eCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQ
cm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJn
SW5kZXgpKTsKKwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhKdW1wID0gaml0
Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
QEAgLTE5MSw3ICszMjcsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICB9CiAg
ICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwogCi0gICAgICAg
IHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKHN0YXJ0KSk7CisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lz
dGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFy
dCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA4NDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTcsNiArMTk3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIG1f
b3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAorICAgICAgICAvLyBTdG9yZSBvdXQgY2FsbGVl
IGFuZCBhcmd1bWVudCBjb3VudCBmb3IgcG9zc2libGUgT1NSIGV4aXQuCisjaWYgIUVOQUJMRShD
QUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSksIGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKSk7CisjZW5kaWYKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJH
Q09VTlQpCisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuYXJndW1lbnRSZWdpc3RlckludDMy
KGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpLCBwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyNlbmRpZgorCiAgICAgICAgIC8vIFN0YWNrIE92ZXJm
bG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3NPZlN0YWNrTGltaXQodm0oKS5h
ZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKTsKQEAgLTI0NiwyMCArMjU0LDM0IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gQ2hlY2sgQXJndW1lbnRzLgogICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5j
bGVhcigpOwogICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2FscyA9IE9wZXJhbmRzPEF2
YWlsYWJpbGl0eT4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSwgMCk7CisKKyAgICAgICAg
VmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudE5vZGVzOworICAgICAgICBWZWN0b3I8TFZhbHVlLCA4
PiBhcmd1bWVudFZhbHVlczsKKworICAgICAgICBhcmd1bWVudE5vZGVzLnJlc2l6ZShjb2RlQmxv
Y2soKS0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgYXJndW1lbnRWYWx1ZXMucmVzaXplKGNv
ZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgICAgIG1faGlnaEJsb2NrID0gbV9n
cmFwaC5ibG9jaygwKTsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+
bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5t
X2xvY2Fscy5hcmd1bWVudChpKSA9Ci0gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNo
ZWRBdChGbHVzaGVkSlNWYWx1ZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKLSAg
ICAgICAgfQotICAgICAgICBtX25vZGUgPSBudWxscHRyOwotICAgICAgICBtX29yaWdpbiA9IE5v
ZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXTsKICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gbV9vdXQu
bG9hZDY0KGFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBM
VmFsdWUganNWYWx1ZSA9IG51bGxwdHI7CisKICAgICAgICAgICAgIGlmIChub2RlKSB7Ci0gICAg
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBvcGVyYW5kID09IG5vZGUtPnN0
YWNrQWNjZXNzRGF0YSgpLT5tYWNoaW5lTG9jYWwpOworICAgICAgICAgICAgICAgIGlmIChpIDwg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAg
ICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1bWVudChpKSA9IEF2YWlsYWJp
bGl0eShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0LmFyZ3VtZW50
UmVnaXN0ZXIoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0
ZXJJbmRleCgpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShub2RlLCBqc1Zh
bHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdmFp
bGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1bWVudChpKSA9CisgICAgICAgICAgICAgICAgICAg
IEF2YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIG9wZXJhbmQpKTsKKyAgICAg
ICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5oYXNBcmd1
bWVudFJlZ2lzdGVySW5kZXgoKSB8fCBvcGVyYW5kID09IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgp
LT5tYWNoaW5lTG9jYWwpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgYSBoYWNrLCBidXQgaXQncyBhbiBlZmZlY3RpdmUgb25lLiBJdCBhbGxvd3MgdXMgdG8g
ZG8gQ1NFIG9uIHRoZQogICAgICAgICAgICAgICAgIC8vIHByaW1vcmRpYWwgbG9hZCBvZiBhcmd1
bWVudHMuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBHZXRMb2NhbCB0aGF0IGdvdCBwdXQgaW4KQEAg
LTI2Nyw3ICsyODksMjEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIHNob3VsZCBob2xk
IHRydWUuCiAgICAgICAgICAgICAgICAgbV9sb2FkZWRBcmd1bWVudFZhbHVlcy5hZGQobm9kZSwg
anNWYWx1ZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFyZ3VtZW50Tm9kZXNbaV0g
PSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRWYWx1ZXNbaV0gPSBqc1ZhbHVlOworICAgICAg
ICB9CisKKyAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKKyAgICAgICAgbV9vcmlnaW4gPSBOb2Rl
T3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7CisgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnROb2Rlc1tpXTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBMVmFsdWUganNWYWx1ZSA9IGFyZ3VtZW50VmFsdWVzW2ldOworCiAgICAgICAgICAgICBz
d2l0Y2ggKG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0pIHsKICAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVl
VmFsdWUoanNWYWx1ZSksIG5vZGUsIGlzTm90SW50MzIoanNWYWx1ZSkpOwpAQCAtODA1LDYgKzg0
MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6Cisg
ICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRSZWdpc3RlcigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlR2V0U2NvcGUo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTExMiw2ICs1MTUxLDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50
UmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGhhdmUg
YSB2YWx1ZSBmb3IgdGhpcyBub2RlLgorICAgICAgICBpZiAoTFZhbHVlIHZhbHVlID0gbV9sb2Fk
ZWRBcmd1bWVudFZhbHVlcy5nZXQobV9ub2RlKSkgeworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihtX25v
ZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSkpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNv
bXBpbGVHZXRTY29wZSgpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CkBA
IC01NTAxLDkgKzU1NTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdGhlIGNhbGwuCiAgICAg
ICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CiAKLSAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8gR1BSMCBiZWNhdXNlIHRoYXQncyB3aGVy
ZSB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlCi0gICAgICAgIC8vIGNhbGxlZSB0byBi
ZS4KLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgYmVjYXVz
ZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNsb3cgcGF0aCB0aHVua3MgZXhwZWN0IHRo
ZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAKICAgICAgICAgYXV0byBh
ZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBpbnQg
b2Zmc2V0KSB7CiAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXRGcm9tU1AgPQpAQCAtNTUxMSwx
MCArNTU2MSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXRGcm9tU1Ap
KSk7CiAgICAgICAgIH07CiAKKyAgICAgICAgQXJndW1lbnRzTG9jYXRpb24gYXJnTG9jYXRpb24g
PSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BcmdzKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsK
KyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxMRUUpCiAgICAgICAgIGFkZEFyZ3VtZW50KGpz
Q2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7CisjZW5k
aWYKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1fb3V0LmNvbnN0
SW50MzIobnVtQXJncyksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50
Q291bnQoKSkpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKICAgICAgICAg
YWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKLSAgICAgICAgICAgIGFkZEFyZ3Vt
ZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5kaWYKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgYXJn
dW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFk
ZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgIH0KIAogICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVjdG9yKGFyZ3VtZW50cyk7CkBAIC01NTQzLDkgKzU2
MDUsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIAorICAgICAgICAg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzbG93UGF0aCA9IGppdC5icmFuY2hQdHJXaXRo
UGF0Y2goCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUklu
Zm86OnJlZ1QwLCB0YXJnZXRUb0NoZWNrLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBjYWxsZWVSZWcsIHRhcmdldFRvQ2hlY2ssCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgZmFzdENhbGwgPSBqaXQubmVhckNhbGwoKTsKQEAgLTU1NTMsMTMg
KzU2MTcsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmpp
dCk7CiAKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwg
PSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENh
bGxMaW5rSW5mbzo6Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGFyZ0xvY2F0aW9uLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAKICAg
ICAgICAgICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigtcGFyYW1zLnByb2MoKS5mcmFtZVNpemUoKSksCkBAIC01NTY4LDcg
KzU2MzIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAg
ICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxp
bmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNTYxMiwyMCArNTY3NiwzOCBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3Vt
ZW50czsKICAgICAgICAgCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShqc0NhbGxlZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkg
YmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNsb3cgcGF0aCB0aHVua3MgZXhw
ZWN0IHRoZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVu
dFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAgICAgICAgIGlm
ICghaXNUYWlsKSB7CiAgICAgICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUg
dmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgICAg
ICBpbnRwdHJfdCBvZmZzZXRGcm9tU1AgPQogICAgICAgICAgICAgICAgICAgICAocmVnLm9mZnNl
dCgpIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKyBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXRGcm9tU1Ap
KSk7CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVS
ZWcpKSk7CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQogICAgICAgICAgICAgYWRk
QXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUp
LCAwKTsKKyNlbmRpZgorICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKG1fb3V0LmNvbnN0SW50MzIobnVtUGFzc2VkQXJncyksIFZhbHVlUmVwOjpyZWcoYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSkpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxM
U19BUkdDT1VOVCkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50MzIobnVt
UGFzc2VkQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgUGF5bG9hZE9mZnNldCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUGFzc2VkQXJnczsgKytpKQotICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSwgMCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRB
cmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKQotICAgICAgICAgICAgICAgIGFkZEFyZ3Vt
ZW50KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworI2VuZGlmCisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgVmFs
dWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSkpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTKQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBWYWx1
ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSkpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKQog
ICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsb3dKU1Zh
bHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6Oldhcm1Bbnkp
KTsKQEAgLTU2ODUsNyArNTc2NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRjaGFibGVKdW1wIHBhdGNoYWJs
ZUp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
IAorCisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENh
bGxlcik7CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlRh
aWxDYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6
RGlyZWN0Q2FsbCk7CisKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4
LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKQEAgLTU3MDYs
NyArNTc5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlu
a1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6RGlyZWN0
VGFpbENhbGwsIFN0YWNrQXJncywgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVn
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5n
Q29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BbGxv
Y2F0ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAtNTcyOSw2
ICs1ODE1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAKKyAgICAgICAgICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAg
ICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpKSk7CkBAIC01NzQwLDcgKzU4MjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAgICAgICAg
ICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29uc3RydWN0IDogQ2Fs
bExpbmtJbmZvOjpEaXJlY3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNM
b2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJp
bmdDb21waWxhdGlvbihleGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2Nh
dGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAtNTc1MSwxMyArNTg0
MCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0LmxhYmVsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQucG9wKENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGly
ZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIw
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBq
aXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVu
ZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9u
Q2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKQEAg
LTU3NjYsNiArNTg1Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Yoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIHNsb3dQYXRo
TG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rRGlyZWN0Q2FsbFRo
dW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0Nh
bGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCkBAIC01ODMxLDYgKzU5MjEsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29k
ZU9yaWdpbik7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlRh
aWxDYWxsKTsKKwogICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVE
YXRhOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwogICAgICAgICAgICAgICAgIHNodWZmbGVE
YXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86OnJlZ1QwLCBEYXRhRm9y
bWF0SlMpOwpAQCAtNTg2NSwxNyArNTk1OCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5m
bzo6cmVnVDApKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnByZXBhcmVGb3JT
bG93UGF0aCgpOwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAKICAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CiAKLSAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBjb2RlT3JpZ2luLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgU3RhY2tBcmdzLCBjb2RlT3JpZ2luLCBHUFJJbmZvOjpy
ZWdUMCk7CiAKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAgICAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZv
cihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNs
b3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAg
LTU5NjAsMTEgKzYwNTMsMTUgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUlu
ZGV4KTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENh
bGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6Q2FsbFZh
cmFyZ3MpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAog
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUlu
ZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAg
ICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOworICAgICAgICAgICAgICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3Vt
ZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0
YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOwogCiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgYXJnSW5kZXggPSAxOwpAQCAtNjEyNSw3ICs2MjIyLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQpAQCAtNjEzMyw3ICs2MjMwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3Vt
ZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdodCks
CkBAIC02MTQyLDcgKzYyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRM
aW5rVGFzaygKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0Nh
bGwgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjIxMSwxMyAr
NjMwOCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bihwYXJhbXMpLT5qdW1wcyhqaXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVt
ZW50Q291bnRlcigmaml0LCBWTTo6Q2FsbEV2YWwpOworCiAgICAgICAgICAgICAgICAgaml0LnN0
b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNh
bGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0
cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMSwgQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMjA4NDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgCiAg
ICAgZXhlYy0+c2V0Q29kZUJsb2NrKGVudHJ5Q29kZUJsb2NrKTsKICAgICAKLSAgICB2b2lkKiBy
ZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJl
c3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICBkYXRhTG9n
KCIgICAgRW50cnkgd2lsbCBzdWNjZWVkLCBnb2luZyB0byBhZGRyZXNzIiwgUmF3UG9pbnRlcihy
ZXN1bHQpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTYgQEAgdm9pZCBPdXRw
dXQ6OmFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrKQogICAgIG1fYmxvY2sgPSBibG9jazsKIH0K
IAorTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
cmVnKTsKK30KKworTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlckludDMyKFJlZyByZWcp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCByZWcsIEludDMyKTsKK30KKwogTFZhbHVlIE91dHB1dDo6ZnJhbWVQb2lu
dGVyKCkKIHsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6RnJhbWVQb2ludGVyLCBvcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0T3JpZ2luKERGRzo6Tm9kZSogbm9kZSkgeyBtX29yaWdpbiA9IG5vZGU7
IH0KICAgICBCMzo6T3JpZ2luIG9yaWdpbigpIHsgcmV0dXJuIEIzOjpPcmlnaW4obV9vcmlnaW4p
OyB9CiAKKyAgICBMVmFsdWUgYXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKTsKKyAgICBMVmFsdWUg
YXJndW1lbnRSZWdpc3RlckludDMyKFJlZyByZWcpOwogICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIo
KTsKIAogICAgIEIzOjpTbG90QmFzZVZhbHVlKiBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDE2
ICsyODQsMjQgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mLCBFeGVjU3RhdAogICAg
ICAgICAgICAgYm9vbCBmb3VuZEZyYW1lID0gYWR2YW5jZUluZGV4SW5Mb2dUbyhjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y2FsbGVlKCksIGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAg
ICAgICBib29sIGlzVGFpbERlbGV0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNj
b3BlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKLSAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21w
aWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNv
ZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMoSlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9n
W2luZGV4SW5Mb2ddLnNjb3BlOwotICAgICAgICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdP
cGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVy
KCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5z
Y29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAg
ICAgICAgICAgICAgIGlmICghc2NvcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBt
X2xvZ1tpbmRleEluTG9nXS5zY29wZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpT
U2NvcGU6OmluZm8oKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
dGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9
IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNWYWx1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWls
RGVsZXRlZCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZy
YW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUo
dmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBz
Y29wZSwgY29kZUJsb2NrLCBjYWxsRnJhbWUtPmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAg
ICAgICBpZiAoaW5kZXhJbkxvZyA8IGxvZ0N1cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8g
VGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5k
ZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwx
MyArNjE2LDEzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAog
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXREdW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBp
bmZvKQogewotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
Q2FsbCBjYWxsID0gbmVhckNhbGwoKTsKICAgICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZv
KTsKLSAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZp
cnR1YWxUaHVuaywgbGlua0J1ZmZlci52bSgpLCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNv
ZGUoKSkpOworICAgICAgICAgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmly
dHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAg
ICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxU
aHVuay5jb2RlUmVmKCksIGxpbmtCdWZmZXIudm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVu
ay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7CiAgICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwODQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNCw2ICs0MTQsOTcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAg
ZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7IFNwaWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAg
IHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25l
ZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBT
cGlsbEFsbCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcExpc3QgZG9u
ZVN0b3JpbmdBcmdzOworCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICAg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisgICAgICAgIEdQ
UlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisj
aWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmdDb3VudFJlZywgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCk7CisjZW5kaWYKKworICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisKKyAgICAgICAgZm9yICg7IGFy
Z0luZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGVtaXRQ
dXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisKKyAgICAgICAgaWYgKHNwaWxs
VHlwZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNz
ZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAg
ICAgICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxv
d09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0lu
ZGV4KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3Jl
UHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBh
cmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkb25lU3Rvcmlu
Z0FyZ3MubGluayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtQXJn
c1RvU3BpbGwpOworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUodW5zaWduZWQgbWlu
aW11bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxB
bGwpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEp1bXBMaXN0IGRvbmVTdG9y
aW5nQXJnczsKKworI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxMRUUpCisgICAgICAgIGVt
aXRQdXRUb0NhbGxGcmFtZUhlYWRlcihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyNpZiAhRU5BQkxFKENBTExFUl9T
UElMTFNfQVJHQ09VTlQpCisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihhcmdDb3Vu
dFJlZywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAgICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0
aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3BpbGwgPSBzdGQ6Om1heChtaW5pbXVtQXJnc1Rv
U3BpbGwsIDFVKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IG1pbmltdW1B
cmdzVG9TcGlsbCAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxG
cmFtZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0lu
ZGV4KTsKKyAgICAgICAgCisgICAgICAgIGlmIChzcGlsbFR5cGUgPT0gU3BpbGxBbGwpIHsKKyAg
ICAgICAgICAgIC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1bmN0aW9uCisgICAgICAg
ICAgICBmb3IgKDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmFw
cGVuZChicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAgICAgICAgICAgICAg
ICBlbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmxpbmsodGhpcyk7CisjZWxzZQorICAg
ICAgICBVTlVTRURfUEFSQU0obWluaW11bUFyZ3NUb1NwaWxsKTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKHNwaWxsVHlwZSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgdm9pZCBmaWxsQXJndW1l
bnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1ZSgpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKworICAgICAgICBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50
UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdEdl
dFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgaWYgKGFyZ0luZGV4KSAv
LyBBbHdheXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBkb25lTG9hZGluZ0FyZ3MuYXBw
ZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZW1p
dEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlzKTsKKyNlbmRpZgorICAgIH0K
KwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1
ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiArNzE1LDMxIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFy
Z3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJn
dW1lbnQpCisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJh
bWUoR1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFy
Z3VtZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBs
b2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8
cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSksIHRvKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3Vt
ZW50QmVmb3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQUlJlZyB0bykKKyAgICB7Cisg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNs
b3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAg
fQorICAgIAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSks
IHRvKTsKKyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhl
YWRlckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewpAQCAtMTU3
NCw3ICsxNjkwLDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2Fu
Z3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5k
aWYKLSAgICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICB2b2lkIGluY3JlbWVudENv
dW50ZXIoVk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mQ291bnRl
cihjb3VudGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZNKiBt
X3ZtOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xNTgzLDYgKzE3MDYsMTIgQEAg
cHJvdGVjdGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAorI2lmIEVOQUJMRShWTV9DT1VO
VEVSUykKKyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoaml0KS0+
aW5jcmVtZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisjZGVmaW5lIGluY3JlbWVudENv
dW50ZXIoaml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDcgQEAgcHJpdmF0ZToK
IAogI2lmIENQVShYODYpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUK
KyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2Rl
ZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZv
IHsKQEAgLTM3OSw2ICszODAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluZGV4Rm9yQXJndW1lbnRSZWdpc3Rlcls4XSA9IHsgMiwgMCwgMSwgMywgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisgICAg
ICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBB
U1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtMzk4LDkgKzQwNywxMSBAQCBwdWJsaWM6
CiAjaWYgQ1BVKFg4Nl82NCkKICNpZiAhT1MoV0lORE9XUykKICNkZWZpbmUgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA2dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIC0gMnUpCiAjZGVmaW5l
IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CiAjZWxzZQogI2RlZmluZSBOVU1C
RVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19S
RUdJU1RFUlMgN3UKICNlbmRpZgogCkBAIC00NjQsNiArNDc1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVn
VDMKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lz
dGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJl
Z1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3Rl
cnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblBy
ZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQg
b24gV2luZG93cykKQEAgLTUwOCw2ICs1MjAsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aW5kZXhGb3JSZWdpc3RlcltyZWddOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0Fy
Z3VtZW50SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7
CisjaWYgIU9TKFdJTkRPV1MpCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZv
ckFyZ3VtZW50UmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIDMsIDIsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDEsIDAsIDQsIDUsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXggfTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRl
eEZvckFyZ3VtZW50UmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCAyLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdpc3RlcltyZWddOworICAgIH0KKyAgICAKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBB
U1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNTM4LDYgKzU2Miw3IEBAIHB1YmxpYzoK
IAogI2lmIENQVShBUk0pCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUK
KyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2Rl
ZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZv
IHsKQEAgLTYwMSw2ICs2MjYsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7CisgICAgICAgIGlmIChyZWcgPiBhcmd1
bWVudEdQUjMpCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZEluZGV4OworICAgICAgICByZXR1
cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKQEAgLTYyMSw2ICs2NTUsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNNjQpCiAj
ZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUKKyNkZWZpbmUgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyAtIDJ1KQogLy8gQ2FsbGVlIFNhdmVzIGluY2x1ZGVzIHgxOS4ueDI4IGFuZCBGUCByZWdp
c3RlcnMgcTguLnExNQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAx
OHUKIApAQCAtNjk4LDYgKzczMyw3IEBAIHB1YmxpYzoKICAgICBDT01QSUxFX0FTU0VSVChBUk02
NFJlZ2lzdGVyczo6cTEzID09IDEzLCBxMTNfaXNfMTMpOwogICAgIENPTVBJTEVfQVNTRVJUKEFS
TTY0UmVnaXN0ZXJzOjpxMTQgPT0gMTQsIHExNF9pc18xNCk7CiAgICAgQ09NUElMRV9BU1NFUlQo
QVJNNjRSZWdpc3RlcnM6OnExNSA9PSAxNSwgcTE1X2lzXzE1KTsKKwogICAgIHN0YXRpYyBHUFJS
ZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIHJldHVybiAoR1BS
UmVnKWluZGV4OwpAQCAtNzE1LDYgKzc1MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0
b1JlZ2lzdGVyKGluZGV4KTsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVu
dEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRH
UFJSZWcpOworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFI3KQorICAgICAgICAgICAgcmV0
dXJuIEludmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQor
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTc0Niw2ICs3OTAsNyBAQCBw
dWJsaWM6CiAKICNpZiBDUFUoTUlQUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA0dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
IDB1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNz
IEdQUkluZm8gewpAQCAtODI1LDYgKzg3MCw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShTSDQpCiAj
ZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTg5MCw2ICs5MzYs
NDMgQEAgcHVibGljOgogfTsKIAogI2VuZGlmIC8vIENQVShTSDQpCitpbmxpbmUgR1BSUmVnIGFy
Z3VtZW50UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGlmIChhcmd1bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMpCisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIHJldHVybiBHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShhcmd1bWVudEluZGV4KTsKKworICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworI2VuZGlm
Cit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpCit7CisgICAg
cmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoMCk7Cit9CisKK2lubGluZSBHUFJSZWcgYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lz
dGVyRm9yKDEpOworfQorCitpbmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9y
SlNGdW5jdGlvbkFyZ3VtZW50KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJldHVybiBhcmd1
bWVudCArIDI7Cit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRS
ZWdpc3RlckZvcihhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJn
dW1lbnRJbmRleCkpOworfQorCitpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlckFyZ3Vt
ZW50c0Zvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworICAgIHJldHVybiBzdGQ6Om1pbihh
cmd1bWVudENvdW50LCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsK
K30KIAogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0
aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMy
LWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE0ICs2Niw2IEBA
IHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkEKICAgICAgICAgbmV3Q2Fs
bGVlRnVuY3Rpb24pOwogfQogCi1KSVQ6OkNvZGVSZWYgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2Fs
bChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklU
KCkpCi0gICAgICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0
aXZlX2NhbGxfdHJhbXBvbGluZSk7Ci0gICAgSklUIGppdCh2bSwgMCk7Ci0gICAgcmV0dXJuIGpp
dC5wcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwodm0sIGZ1bmMpOwotfQotCiBKSVQ6OkpJVChW
TSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIDogSlNJbnRlcmZhY2VKSVQodm0sIGNv
ZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0ZXIodm0tPmludGVycHJldGVyKQpAQCAtNTc2LDYg
KzU2OCwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAg
aWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKICAgICAgICAgbm9wKCk7CiAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVm
b3JlUHJvbG9ndWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzTm9Bcml0eSk7
CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIEp1bXAgY29udGludWVTdGFja0VudHJ5ID0g
anVtcCgpOworI2VuZGlmCisjZW5kaWYKKyAgICBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGxh
YmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzTm9Bcml0eSk7
CisKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgY29udGlu
dWVTdGFja0VudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKwogICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spOwogCkBAIC02MzIsNyArNjM4LDIxIEBAIHZvaWQgSklUOjpjb21w
aWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1f
Y29kZUJsb2NrKTsKIAogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUpIHsKLSAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICAgICAgbV9yZWdp
c3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAgICBzcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMp
CisgICAgICAgIEp1bXAgY29udGludWVTdGFja0FyaXR5RW50cnkgPSBqdW1wKCk7CisjZW5kaWYK
KworICAgICAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICAgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJpdHkpOworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVTdGFja0FyaXR5RW50cnkubGluayh0aGlzKTsK
KyNlbmRpZgogICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsK
ICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spOwpAQCAtNjQwLDYgKzY2MCw4IEBAIHZvaWQgSklUOjpjb21waWxlV2l0
aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5s
aW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlz
LCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0g
MDsKIAogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCkBAIC03NzUs
OSArNzk3LDE0IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgfQogICAgIG1f
Y29kZUJsb2NrLT5zZXRKSVRDb2RlTWFwKGppdENvZGVNYXBFbmNvZGVyLmZpbmlzaCgpKTsKIAot
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjazsKLSAgICBpZiAobV9jb2Rl
QmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICB3aXRoQXJpdHlDaGVj
ayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgc3RhY2tFbnRyeUFyaXR5T0tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
KG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAgaWYgKG1fY29kZUJsb2NrLT5j
b2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICByZWdpc3RlckVudHJ5V2l0aEFy
aXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFy
aXR5Q2hlY2spOworICAgICAgICBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgIH0KIAogICAg
IGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxl
ci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03OTUsMTQgKzgyMiwyNiBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgIENvZGVSZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAg
ICAgICAgcGF0Y2hCdWZmZXIsCiAgICAgICAgICgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwg
dG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNl
bGluZUpJVCkpLmRhdGEoKSkpOwotICAgIAorCiAgICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1Bl
ckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRv
dWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5z
dHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVC
bG9jazo6TGF0ZVNocmluayk7CisgICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHMocmVzdWx0
LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyLCByZWdpc3RlckVudHJ5V2l0
aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50cnlBcml0eU9LUHRyLCBzdGFja0VudHJ5V2l0aEFyaXR5
Q2hlY2tQdHIpOworCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
ZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAg
ICAgZW50cnkgPSByZXN1bHQuY29kZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRy
eSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAgICAgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRD
b3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0SklU
Q29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJp
dHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihyZXN1bHQsIGVudHJ5cG9pbnRzKSwg
SklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAg
ZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2Nv
ZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1
dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9y
aWdpbk1hcC5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKIApAQCAtMjQ2LDcgKzI0Nywx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUhhc0lu
ZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIGFycmF5TW9kZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSos
IE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgc3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
b21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRzKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAg
ICAgICAgICBDb2RlUmVmIG5hdGl2ZUNhbGxSZWYgPSBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEpJVEVudHJ5UG9pbnRzV2l0aFJlZihuYXRpdmVDYWxsUmVmLCBuYXRpdmVDYWxsUmVmLmNvZGUo
KSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSklU
IGppdCh2bSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlSklURW50
cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBp
bnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpAQCAtMjY2LDggKzI3NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVk
UHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAot
ICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBib29sIGlzQ29u
c3RydWN0ID0gZmFsc2UpOwotICAgICAgICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZl
Q2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IHByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwog
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCiAgICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20g
SklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpAQCAtOTQ2LDggKzk1NCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXg7CiAgICAg
ICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwogICAgICAgICB1bnNpZ25lZCBt
X2NhbGxMaW5rSW5mb0luZGV4OwotICAgICAgICAKLSAgICAgICAgTGFiZWwgbV9hcml0eUNoZWNr
OworCisgICAgICAgIExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworICAgICAgICBMYWJl
bCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOworICAgICAgICBMYWJlbCBtX3JlZ2lzdGVyQXJn
c1dpdGhBcml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9s
aW5rQnVmZmVyOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVREaXNhc3NlbWJsZXI+IG1f
ZGlzYXNzZW1ibGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxs
RXZhbFNsb3dDYXNlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVC
bG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5m
bzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8t
PnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC0y
MTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1
CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1Qy
KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgZW1p
dExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVnVDApOwotICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmluZm8p
OwotICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVu
aywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKLSAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVu
ay5jb2RlKCkpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxU
aHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7CisgICAgaW5mby0+c2V0U2xvd1N0
dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKm1fdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihT
dGFja0FyZ3MpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZv
cihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwog
CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21w
aWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9i
eXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZv
OjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
T2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENv
bXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZv
SW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAg
bV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBp
bmZvOwpAQCAtMzE3LDEyICszMTcsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2Fz
ZShPcGNvZGVJRAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxM
aW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8pLCByZWdUMik7CisgICAgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNh
bGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgbm9uQXJn
R1BSMCk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09
IG9wX3RhaWxfY2FsbF92YXJhcmdzKQogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7
CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1
cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCkpOworICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRKSVRD
YWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAg
IGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5
MSw4IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBzdG9y
ZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVy
KTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpDYWxsVmFyYXJncyk7CiB9CiAKIHZv
aWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtOTgs
NiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgc3RvcmVQ
dHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJh
bWVPZmZzZXQoKSkpOwogCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QmFzZWxpbmVD
YWxsZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkNhbGxFdmFsKTsKKwogICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAq
IHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKQEAgLTExMyw3ICsxMTgs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6
Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5m
byA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7
CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsK
QEAgLTE1NCwxNCArMTU5LDIzIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUkKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09E
RV9MRU5HVEgob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzX29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAKICAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxscHRyOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFy
Z3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOworCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2Nh
bGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2Nv
bnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgY29tcGls
ZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7
CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7
CiAKKyNpZiBFTkFCTEUoQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1FTlRfQ0FMTFMpCisgICAgICAg
IGlmIChOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICYmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkpIHsKKyAgICAgICAgICAg
IGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IoYXJnQ291bnQpOworICAg
ICAgICAgICAgaW5mby0+c2V0UHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCk7Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlz
KDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKQEAgLTE3MSwxNSArMTg1LDI1IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9w
Y29kZUlEIG9wY29kZUkKICAgICAgICAgfQogICAgIAogICAgICAgICBhZGRQdHIoVHJ1c3RlZElt
bTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAg
ICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MpIHsKKyAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFyZ3MgPSBzdGQ6Om1pbihhcmdD
b3VudCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lzdGVyQXJnczsgYXJnKyspCisg
ICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChDYWxs
RnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGFyZykpOworICAgICAgICB9CiAgICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgfSAv
LyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGgg
QXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OkJhc2VsaW5lQ2FsbGVyKTsKICAgICAKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChieXRlY29kZU9mZnNldCkuYml0
cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CiAKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCi0gICAg
c3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVSZWdpc3RlciA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVl
LCBjYWxsZWVSZWdpc3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVSZWdpc3RlciwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2
YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMTg3LDE2ICsyMTEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBhZGRyZXNz
T2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nhc2UgPSBicmFuY2hQdHJXaXRo
UGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrLCBUcnVz
dGVkSW1tUHRyKDApKTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5v
dEVxdWFsLCBjYWxsZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1
c3RlZEltbVB0cigwKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJU
KG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAg
IGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJndW1lbnRzTG9jYXRpb24sIENv
ZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lzdGVyKTsKICAgICBtX2NhbGxD
b21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbkluZm8oKSk7CiAgICAgbV9jYWxs
Q29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4gPSBhZGRyZXNz
T2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlu
a0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGwpIHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6VGFpbENh
bGwpOworCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOwogICAgICAg
ICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyOwogICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpAQCAtMjA5LDcgKzIzNSw3IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgICAgICAg
ICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgfQogICAgICAgICBzaHVmZmxlRGF0YS5jYWxs
ZWUgPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIocmVnVDAsIERhdGFGb3JtYXRK
Uyk7CisgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVSZWdpc3RlciwgRGF0
YUZvcm1hdEpTKTsKICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJz
KG1fY29kZUJsb2NrKTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxl
RGF0YSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJl
cGFyZUZvclRhaWxDYWxsKCk7CkBAIC0yNDYsOSArMjcyLDEwIEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxs
IHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxs
TGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOworICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5j
YWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIG5vbkFy
Z0dQUjApOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5j
YWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIobGlua0Nh
bGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+
Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9y
KGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwogCiAgICAgaWYgKG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykgewog
ICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0NhCiAK
ICAgICBpZiAoIWZ1bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+bmVlZEFyaXR5Q2hlY2soKSkg
ewogICAgICAgICBBU1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVkQXJpdHlDaGVjaygpKTsKLSAg
ICAgICAgZW50cnlBZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlB
ZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAgICBlbnRyeUFkZHJlc3MgPSBh
ZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjpkZWNv
ZGUodm1FbnRyeVRvSmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZtLCBwcm90b0NhbGxGcmFtZSkp
OwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0OwogfQpA
QCAtMTYyLDkgKzE2Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVjdEpJVENvZGUoSklUVHlwZSBq
aXQKIHsKIH0KIAotRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRDb2RlOjpDb2RlUmVm
IHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywgSklUVHlwZSBqaXRUeXBlKQot
ICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkKLSAgICAsIG1fd2l0aEFyaXR5
Q2hlY2sod2l0aEFyaXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5cGUpCisgICAgOiBKSVRDb2Rl
V2l0aENvZGVSZWYoZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUpCisgICAgLCBtX2VudHJ5UG9p
bnRzKGVudHJpZXMpCiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2IEBAIERpcmVjdEpJVENvZGU6
On5EaXJlY3RKSVRDb2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RKSVRDb2RlOjppbml0aWFsaXpl
Q29kZVJlZihKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlD
aGVjaykKK3ZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5
UG9pbnRzV2l0aFJlZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3JlZik7Ci0g
ICAgbV9yZWYgPSByZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9IHdpdGhBcml0eUNoZWNrOwor
ICAgIG1fcmVmID0gZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9lbnRyeVBvaW50cyA9IGVudHJp
ZXM7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFk
ZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoIChhcml0eSkg
ewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX3JlZik7Ci0gICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7Ci0gICAgY2FzZSBNdXN0Q2hl
Y2tBcml0eToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRoQXJpdHlDaGVjayk7Ci0gICAg
ICAgIHJldHVybiBtX3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7CisgICAgcmV0dXJuIG1fZW50cnlQ
b2ludHMuZW50cnlGb3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENvZGU6Ok5hdGl2ZUpJVENvZGUo
SklUVHlwZSBqaXRUeXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZvaWQgTmF0aXZlSklUQ29kZTo6
aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsKIH0KIAotSklUQ29kZTo6Q29k
ZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkKK0pJVENv
ZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAgcmV0dXJuIG1fcmVmLmNvZGUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJpdHlDaGVj
a01vZGUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgi
CiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiSklURW50cnlwb2ludHMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5ICsxNzMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAgICAgfQogICAgIAotICAgIHZp
cnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgPSAwOworICAgIHZp
cnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7
Ci0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVybiBleGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KDApOyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhQWRkcmVzc0F0T2Zmc2V0KHNp
emVfdCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG9mZnNldE9mKHZvaWQqIHBv
aW50ZXJJbnRvQ29kZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsyMjMsMTUgQEAgcHJvdGVjdGVk
OgogY2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewogcHVi
bGljOgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAgRGlyZWN0SklUQ29kZShDb2Rl
UmVmLCBDb2RlUHRyIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsKKyAgICBEaXJlY3RKSVRDb2Rl
KEpJVEVudHJ5UG9pbnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAgdmlydHVhbCB+RGlyZWN0SklU
Q29kZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJlZiwgQ29kZVB0
ciB3aXRoQXJpdHlDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlQb2ludHMoSklURW50
cnlQb2ludHNXaXRoUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVj
a01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5
cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIENvZGVQdHIgbV93aXRoQXJpdHlDaGVjazsK
KyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsKIAogY2xhc3MgTmF0aXZlSklU
Q29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAtMjQzLDcgKzI0Miw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYpOwogCi0gICAg
Q29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29k
ZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlw
b2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5
cG9pbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
bnRyeXBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSklURW50cnlwb2lu
dHNfaAorI2RlZmluZSBKSVRFbnRyeXBvaW50c19oCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5j
bHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIFZNOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwor
CisvLyAgUmVnQ0MgVG9kbzogIENvbnNpZGVyIHVzaW5nIGEgbWFjcm8gYmFzZSBjb250cnVjdGlv
biB0byBnZXQgZW51bSAiaW5oZXJpdGVuY2UiCitlbnVtIEFyZ3VtZW50c0xvY2F0aW9uIDogdW5z
aWduZWQgeworICAgIFN0YWNrQXJncyA9IDAsCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSZWdp
c3RlckFyZ3MxSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzMkluUmVnaXN0ZXJzLAorICAg
IFJlZ2lzdGVyQXJnczNJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M0SW5SZWdpc3RlcnMs
CisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXJnczVJblJlZ2lzdGVycywKKyAgICBSZWdp
c3RlckFyZ3M2SW5SZWdpc3RlcnMsCisjZW5kaWYKKyNlbmRpZgorICAgIFJlZ2lzdGVyQXJnc1dp
dGhFeHRyYU9uU3RhY2sKK307CisKKy8vIFRoaXMgZW51bSBuZWVkcyB0byBoYXZlIHRoZSBzYW1l
IGVudW1lcmF0b3Igb3JkZXJpbmcgYXMgQXJndW1lbnRzTG9jYXRpb24uCitlbnVtIFRodW5rRW50
cnlQb2ludFR5cGUgOiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzRW50cnkgPSAwLAorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXIxQXJnRW50cnksCisgICAgUmVnaXN0ZXIyQXJnc0Vu
dHJ5LAorICAgIFJlZ2lzdGVyM0FyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjRBcmdzRW50cnksCisj
aWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyNUFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjZBcmdz
RW50cnksCisjZW5kaWYKKyNlbmRpZgorICAgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudAorfTsK
KworZW51bSBFbnRyeVBvaW50VHlwZSB7CisgICAgU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVp
cmVkLAorICAgIFN0YWNrQXJnc011c3RDaGVja0FyaXR5LAorICAgIFJlZ2lzdGVyQXJnc0FyaXR5
Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywKKyAg
ICBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIFJl
Z2lzdGVyQXJnczEsCisgICAgUmVnaXN0ZXJBcmdzMiwKKyAgICBSZWdpc3RlckFyZ3MzLAorICAg
IFJlZ2lzdGVyQXJnczQsCisjaWYgQ1BVKEFSTTY0KQorICAgIFJlZ2lzdGVyQXJnczUsCisgICAg
UmVnaXN0ZXJBcmdzNiwKKyNlbmRpZgorI2VuZGlmCisgICAgTnVtYmVyT2ZFbnRyeVBvaW50VHlw
ZXMKK307CisKK2NsYXNzIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBu
dW1iZXJPZkVudHJ5VHlwZXMgPSBFbnRyeVBvaW50VHlwZTo6TnVtYmVyT2ZFbnRyeVBvaW50VHlw
ZXM7CisKKyAgICBKSVRFbnRyeVBvaW50cygpCisgICAgeworICAgICAgICBjbGVhckVudHJpZXMo
KTsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50cyhDb2RlUHRyIHJlZ2lzdGVyQXJnc05vQ2hl
Y2tSZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50
cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBDb2RlUHRy
IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0
YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICB7CisgICAgICAgIG1fZW50cnlQb2ludHNbUmVn
aXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1
aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzXSA9IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnk7CisgICAgICAgIG1f
ZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHldID0gcmVnaXN0ZXJBcmdzQ2hl
Y2tBcml0eUVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1N0YWNrQXJnc0FyaXR5Q2hlY2tO
b3RSZXF1aXJlZF0gPSBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeTsKKyAgICAg
ICAgbV9lbnRyeVBvaW50c1tTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eV0gPSBzdGFja0FyZ3NDaGVj
a0FyaXR5RW50cnk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBpICsr
KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50
Q291bnQoaSldID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5OworI2VuZGlmCisKKyAgICB9
CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9lbnRyeVBvaW50c1t0eXBlXTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVu
dHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAgICAg
ICBBU1NFUlQodHlwZSA8IE51bWJlck9mRW50cnlQb2ludFR5cGVzKTsKKyAgICAgICAgbV9lbnRy
eVBvaW50c1t0eXBlXSA9IGVudHJ5OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZFbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9mZnNldG9mKEpJVEVudHJ5UG9pbnRzLCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENv
dW50KHVuc2lnbmVkIGFyZ0NvdW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFyZ0NvdW50KTsK
KyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJBcmdDb3VudCA9IG51bWJlck9mUmVnaXN0ZXJBcmd1
bWVudHNGb3IoYXJnQ291bnQpOworICAgICAgICBpZiAoIXJlZ2lzdGVyQXJnQ291bnQgfHwgcmVn
aXN0ZXJBcmdDb3VudCAhPSBhcmdDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3RlckFy
Z3NNdXN0Q2hlY2tBcml0eTsKKworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2lu
dFR5cGU+KFJlZ2lzdGVyQXJnczEgKyByZWdpc3RlckFyZ0NvdW50IC0gMSk7CisgICAgfQorCisg
ICAgc3RhdGljIEVudHJ5UG9pbnRUeXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRUeXBl
KEFyZ3VtZW50c0xvY2F0aW9uIHR5cGUpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSAhPSBT
dGFja0FyZ3MpOworICAgICAgICBpZiAodHlwZSA9PSBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0
YWNrKQorICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihSZWdpc3Rl
ckFyZ3MxICsgdHlwZSAtIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVt
YmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzJiBvcGVy
YXRvcj0oY29uc3QgSklURW50cnlQb2ludHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRy
eVBvaW50c1tpXSA9IG90aGVyLm1fZW50cnlQb2ludHNbaV07CisKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworcHJpdmF0ZToKKworICAgIENvZGVQdHIgbV9lbnRyeVBvaW50c1tudW1i
ZXJPZkVudHJ5VHlwZXNdOworfTsKKworY2xhc3MgSklURW50cnlQb2ludHNXaXRoUmVmIDogcHVi
bGljIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBDb2RlUmVmOworCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKCkKKyAgICB7Cisg
ICAgfQorCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKGNvbnN0IEpJVEVudHJ5UG9pbnRzV2l0
aFJlZiYgb3RoZXIpCisgICAgICAgIDogSklURW50cnlQb2ludHMob3RoZXIpCisgICAgICAgICwg
bV9jb2RlUmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZiwgY29uc3QgSklURW50cnlQb2ludHMmIG90aGVy
KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihj
b2RlUmVmKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKENv
ZGVSZWYgY29kZVJlZiwgQ29kZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRy
eSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgIDog
SklURW50cnlQb2ludHMoQ29kZVB0cigpLCBDb2RlUHRyKCksIENvZGVQdHIoKSwgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAg
ICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZiwgQ29kZVB0ciByZWdpc3RlckFyZ3NOb0NoZWNr
c1JlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRy
YUFyZ3NFbnRyeSwgQ29kZVB0ciByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksCisgICAgICAg
IENvZGVQdHIgc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksIENvZGVQdHIgc3Rh
Y2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKHJlZ2lzdGVy
QXJnc05vQ2hlY2tzUmVxdWlyZWRFbnRyeSwgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NF
bnRyeSwKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgICAgICBzdGFja0FyZ3NDaGVja0Fy
aXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKwor
ICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0dXJuIG1fY29kZVJlZjsgfQorCitwcml2YXRlOgor
ICAgIENvZGVSZWYgbV9jb2RlUmVmOworfTsKKworaW5saW5lIEFyZ3VtZW50c0xvY2F0aW9uIGFy
Z3VtZW50c0xvY2F0aW9uRm9yKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpCit7CisgICAgaWYgKCFO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIHx8ICFhcmd1bWVudENvdW50
KQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzOworICAgIAorICAgIGFyZ3VtZW50Q291bnQgPSBz
dGQ6Om1pbihOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICsgMSwgYXJn
dW1lbnRDb3VudCk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50c0xvY2F0
aW9uPihBcmd1bWVudHNMb2NhdGlvbjo6UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzICsgYXJndW1l
bnRDb3VudCAtIDEpOworfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVBv
aW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworICAgIGlmICghYXJndW1lbnRD
b3VudCB8fCBhcmd1bWVudENvdW50ID4gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUykKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAg
IAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6
OlJlZ2lzdGVyQXJnczEgKyBhcmd1bWVudENvdW50IC0gMSk7Cit9CisKK2lubGluZSBFbnRyeVBv
aW50VHlwZSBlbnRyeVBvaW50VHlwZUZvcihBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudExvY2F0
aW9uKQoreworICAgIGlmIChhcmd1bWVudExvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAg
cmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAgIGlmIChhcmd1bWVudExv
Y2F0aW9uID09IFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgIHJldHVybiBS
ZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RW50cnlQb2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGFyZ3VtZW50TG9jYXRpb24gLSBSZWdpc3RlckFyZ3MxSW5SZWdpc3RlcnMp
KTsKK30KKworaW5saW5lIFRodW5rRW50cnlQb2ludFR5cGUgdGh1bmtFbnRyeVBvaW50VHlwZUZv
cihBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudExvY2F0aW9uKQoreworICAgIHVuc2lnbmVkIGFy
Z3VtZW50TG9jYXRpb25JbmRleCA9IHN0ZDo6bWluKFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3Rh
Y2sgLSAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbikpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihhcmd1bWVudExvY2F0aW9uSW5k
ZXgpOworfQorCitpbmxpbmUgVGh1bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5UG9pbnRUeXBl
Rm9yKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpCit7CisgICAgaWYgKCFOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzRW50cnk7
CisKKyAgICBhcmd1bWVudENvdW50ID0gbnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcihhcmd1
bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50
VHlwZT4oVGh1bmtFbnRyeVBvaW50VHlwZTo6UmVnaXN0ZXIxQXJnRW50cnkgKyBhcmd1bWVudENv
dW50IC0gMSk7Cit9CisKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAg
IHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG51bWJlck9mRW50cnlUeXBlcyA9IFRodW5rRW50cnlQb2ludFR5cGU6OlRodW5r
RW50cnlQb2ludFR5cGVDb3VudDsKKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmKCkKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhS
ZWYoQ29kZVJlZiBjb2RlUmVmKQorICAgICAgICA6IG1fY29kZVJlZihjb2RlUmVmKQorICAgIHsK
KyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb25zdCBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9jb2RlUmVm
KG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkVudHJ5VHlwZXM7IGkrKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0g
PSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3Io
VGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50cnlQ
b2ludHNbdHlwZV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihBcmd1bWVudHNMb2Nh
dGlvbiBhcmd1bWVudHNMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBlbnRyeUZvcih0
aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFyZ3VtZW50c0xvY2F0aW9uKSk7CisgICAgfQorCisgICAg
dm9pZCBzZXRFbnRyeUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50cnkp
CisgICAgeworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQorCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRKU0NhbGxUaHVua0VudHJ5
UG9pbnRzV2l0aFJlZiwgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgdm9pZCBj
bGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZF
bnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0dXJu
IG1fY29kZVJlZjsgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG9w
ZXJhdG9yPShjb25zdCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisg
ICAgeworICAgICAgICBtX2NvZGVSZWYgPSBvdGhlci5tX2NvZGVSZWY7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1fZW50
cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsK
KyAgICBDb2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8g
SklURW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGls
ZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQorSklURW50cnlQb2lu
dHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxl
IHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY4OQpAQCAtMTI5LDcgKzEyOSw5IEBA
IEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNo
QnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVuY3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAg
SklUOjpDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBD
VEkgbmF0aXZlIGNhbGwiKSk7CisgICAgCisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCkpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjA4NDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAKLUpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uKQorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbikKIHsKLSAgICByZXR1
cm4gdm0tPmdldENUSVN0dWIobmF0aXZlQ2FsbEdlbmVyYXRvcik7CisgICAgcmV0dXJuIHZtLT5n
ZXRKSVRFbnRyeVN0dWIobmF0aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NTcsMjEgKzk1NywyMyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7
CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsK
IAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyLCBjb2RlUHRyRm9yTGlua2luZzsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAg
ICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJp
dHkpOworICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGlmICghY2FsbExpbmtJbmZvLT5wcm92
aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMoKSAmJiBjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0luUmVnaXN0ZXJzKCkpCisgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOwogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICB9IGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlKCkpIHsKICAgICAgICAgV2ViQXNzZW1ibHlFeGVjdXRhYmxlKiB3ZWJB
c3NlbWJseUV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJseUV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKTsKICAgICAgICAgY29kZUJsb2NrID0gd2ViQXNzZW1ibHlFeGVjdXRhYmxlLT5j
b2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwotICAgICAgICBB
cml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwog
ICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQotICAgICAgICAg
ICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNr
QXJnc011c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0eSA9IEFy
aXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAgICBlbnRyeVR5cGUg
PSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQdHIgPSB3ZWJB
c3NlbWJseUV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsKICNlbmRp
ZgogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CkBA
IC05OTMsMTcgKzk5NSwzOCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVy
YXRpCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1l
KSk7CiAgICAgICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7Ci0gICAg
ICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAg
ICBhcml0eSA9IE11c3RDaGVja0FyaXR5OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0
eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgIEVudHJ5UG9pbnRU
eXBlIGVudHJ5VHlwZTsKKyAgICAgICAgYm9vbCB1c2VTdGFja0VudHJ5ID0gY29kZUJsb2NrLT5w
cmVmZXJzU3RhY2tBcmd1bWVudHMoKSAmJiBjYWxsTGlua0luZm8tPnByb3ZpZGVzUmVnaXN0ZXJB
bmRTdGFja0FyZ3VtZW50cygpOworICAgICAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9
IGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisgICAgICAgIHNpemVf
dCBjYWxsZWVBcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIGlmIChjYWxsZXJBcmd1bWVudENvdW50IDwgY2FsbGVl
QXJndW1lbnRDb3VudCB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygpKSB7CisgICAgICAgICAg
ICBpZiAoIXVzZVN0YWNrRW50cnkgJiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVy
cygpKSB7CisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlU
eXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAg
ICAgaWYgKCFjb2RlUHRyRm9yTGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ckZv
ckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0
ZXJBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW50cnlU
eXBlID0gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgICAgICAgICAodm9pZCkgZnVuY3Rp
b25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5UG9pbnRUeXBlRm9yKGNhbGxM
aW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOworICAgICAgICB9IGVsc2UgaWYgKCF1c2VT
dGFja0VudHJ5ICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAg
ICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVlQXJndW1lbnRDb3VudCB8
fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JM
aW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJVEVudHJ5
UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJndW1lbnRD
b3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtpbmcpCisgICAgICAg
ICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50cnkgcG9pbnRzIHRoZSB2
aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZv
LT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsK
ICAgICB9CiAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCiAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0U2VlbigpOwogICAgIGVsc2UKLSAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVl
LCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0cik7CisgICAgICAgIGxp
bmtGb3IoZXhlY0NhbGxlZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQ
dHJGb3JMaW5raW5nID8gY29kZVB0ckZvckxpbmtpbmcgOiBjb2RlUHRyKTsKICAgICAKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWls
ID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQpAQCAtMTAzOCw3ICsxMDYxLDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYQogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0
cjsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAg
ICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBjYWxsTGlua0lu
Zm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkgPyBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSA6
IFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKIApAQCAtMTA1MCwxMyArMTA3MywyNSBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhCiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVudHJ5UG9pbnRUeXBl
IGVudHJ5VHlwZTsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0gY2FsbExp
bmtJbmZvLT5tYXhOdW1Bcmd1bWVudHMoKTsKLSAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90
cyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQotICAg
ICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgc2l6ZV90IGNvZGVCbG9j
a1BhcmFtZXRlckNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJz
KCkpIHsKKyAgICAgICAgICAgIC8vICBSZWdDQyBUb2RvOiAgVGhpcyBsb2dpYyBjb3VsZCBwcm9i
YWJseSBiZSBzaW1wbGlmaWVkIQorICAgICAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8
IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVu
dHJ5UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9ja1Bh
cmFtZXRlckNvdW50IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRy
YUFyZ3M7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5
cGUgPSBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSByZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9y
KGFyZ3VtZW50U3RhY2tTbG90cyk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRTdGFja1Ns
b3RzIDwgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQpCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkg
PSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBl
ID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVu
Y3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQog
ICAgIAogICAgIGxpbmtEaXJlY3RGb3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBj
b2RlUHRyKTsKQEAgLTExMTQsOCArMTE0OSwxNSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHZpcnR1YWxGb3JXaXRoCiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgIC8vIFB1bGwgaW50byB0
aGUgY2FjaGUgdGhlIGFyaXR5IGNoZWNrIHJlZ2lzdGVyIGVudHJ5IGlmIHRoZSBjYWxsZXIgd2Fu
dHMgYSByZWdpc3RlciBlbnRyeS4KKyAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgYnkgdGhl
IGdlbmVyaWMgdmlydHVhbCBjYWxsIHRodW5rLgorICAgICAgICAodm9pZCkgZXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcihraW5kLCBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSk7CisgICAgICAg
ICh2b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5UG9pbnRUeXBlRm9y
KGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOworCisgICAgfQogICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKLSAgICAgICAga2luZCwg
TXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgIGtpbmQsIFN0YWNr
QXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRh
aWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTggKzQ0LDIyIEBAIEpJVFRodW5rczo6fkpJVFRodW5rcygpCiB7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZUNhbGwoVk0qIHZtKQorSklURW50cnlQb2lu
dHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlOYXRpdmVDYWxsKFZNKiB2bSkKIHsKLSAgICBp
ZiAoIXZtLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOwotICAg
IHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDYWxsR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgaWYg
KCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5hdGl2
ZUNhbGxTdHViID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxp
bnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
bmF0aXZlQ2FsbFN0dWIpLCBuYXRpdmVDYWxsU3R1YiwgbmF0aXZlQ2FsbFN0dWIpOworICAgIH0K
KyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVDYWxsR2VuZXJhdG9yKTsKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIEpJVFRodW5rczo6Y3RpTmF0aXZlQ29uc3RydWN0KFZNKiB2
bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ29uc3Ry
dWN0KFZNKiB2bSkKIHsKLSAgICBpZiAoIXZtLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZSk7Ci0gICAgcmV0dXJuIGN0aVN0dWIodm0sIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDb25zdHJ1Y3RTdHViID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90
cmFtcG9saW5lKTsKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihuYXRpdmVDb25zdHJ1Y3RT
dHViKSwgbmF0aXZlQ29uc3RydWN0U3R1YiwgbmF0aXZlQ29uc3RydWN0U3R1Yik7CisgICAgfQor
ICAgIHJldHVybiBqaXRFbnRyeVN0dWIodm0sIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcik7CiB9
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZVRhaWxDYWxsKFZN
KiB2bSkKQEAgLTgyLDYgKzg2LDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6
OmN0aVN0dWIKICAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnZhbHVlOwogfQogCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRFbnRyeVN0dWIoVk0qIHZtLCBKSVRFbnRyeUdl
bmVyYXRvciBnZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBKSVRFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0RW50cnlTdHViTWFwLmFk
ZChnZW5lcmF0b3IsIEpJVEVudHJ5UG9pbnRzV2l0aFJlZigpKTsKKyAgICBpZiAoZW50cnkuaXNO
ZXdFbnRyeSkgeworICAgICAgICAvLyBDb21waWxhdGlvbiB0aHJlYWQgY2FuIG9ubHkgcmV0cmll
dmUgZXhpc3RpbmcgZW50cmllcy4KKyAgICAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFk
KCkpOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+dmFsdWUgPSBnZW5lcmF0b3Iodm0pOworICAg
IH0KKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnZhbHVlOworfQorCitKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdENhbGxUaHVua0VudHJ5U3R1YihWTSog
dm0sIEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIEpJVENhbGxUaHVua0VudHJ5U3R1Yk1hcDo6QWRkUmVz
dWx0IGVudHJ5ID0gbV9qaXRDYWxsVGh1bmtFbnRyeVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50
cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4
aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwogdm9pZCBKSVRUaHVua3M6OmZp
bmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogewogICAgIGF1dG8qIG5hdGl2
ZUV4ZWN1dGFibGUgPSBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGhhbmRsZS5nZXQoKS5hc0Nl
bGwoKSk7CkBAIC05Myw3ICsxMjEsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvCiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25z
dHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklU
VGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3Is
IEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7ICAgIAogICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTAzLDE5ICsxMzEsMTkg
QEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogCiAgICAgUmVmUHRy
PEpJVENvZGU+IGZvckNhbGw7CiAgICAgaWYgKGdlbmVyYXRvcikgewotICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZW50cnkgPSBnZW5lcmF0b3Iodm0pOwotICAgICAgICBmb3JDYWxsID0g
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoZW50cnksIGVudHJ5LmNvZGUoKSwgSklUQ29kZTo6
SG9zdENhbGxUaHVuaykpOworICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cnkgPSBn
ZW5lcmF0b3Iodm0pOworICAgICAgICBmb3JDYWxsID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUoZW50cnksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICB9IGVsc2UKLSAgICAgICAg
Zm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKEpJVDo6Y29tcGlsZUNUSU5hdGl2
ZUNhbGwodm0sIGZ1bmN0aW9uKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOworICAgICAgICBm
b3JDYWxsID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoSklUOjpjb21waWxlTmF0aXZlQ2Fs
bEVudHJ5UG9pbnRzKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAg
ICAKLSAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2
ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
Y3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICBS
ZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
aml0RW50cnlOYXRpdmVDb25zdHJ1Y3Qodm0pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAg
ICAgCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0
cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0
RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBu
YW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAg
ICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRo
dW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBU
aHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihW
TSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1
cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0
cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbnVsbHB0ciwgbmFtZSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiSW50cmluc2lj
LmgiCisjaW5jbHVkZSAiSklURW50cnlwb2ludHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIldlYWsu
aCIKQEAgLTUyLDE2ICs1MywxOCBAQCBwdWJsaWM6CiAgICAgSklUVGh1bmtzKCk7CiAgICAgdmly
dHVhbCB+SklUVGh1bmtzKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZl
Q2FsbChWTSopOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVDb25zdHJ1Y3Qo
Vk0qKTsKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgaml0RW50cnlOYXRpdmVDYWxsKFZNKik7
CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KFZNKik7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZVRhaWxDYWxsKFZNKik7ICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRh
Z3MoVk0qKTsgICAgCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3RpU3R1YihWTSosIFRo
dW5rR2VuZXJhdG9yKTsKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgaml0RW50cnlTdHViKFZN
KiwgSklURW50cnlHZW5lcmF0b3IpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmIGppdENhbGxUaHVua0VudHJ5U3R1YihWTSosIEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9y
KTsKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVG
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNp
YywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgVGh1
bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBKSVRFbnRyeUdlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBKSVRFbnRyeUdlbmVy
YXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBjbGVhckhv
c3RGdW5jdGlvblN0dWJzKCk7CiAKQEAgLTcwLDYgKzczLDEwIEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFRodW5rR2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY+
IENUSVN0dWJNYXA7CiAgICAgQ1RJU3R1Yk1hcCBtX2N0aVN0dWJNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPEpJVEVudHJ5R2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWY+IEpJVEVudHJ5
U3R1Yk1hcDsKKyAgICBKSVRFbnRyeVN0dWJNYXAgbV9qaXRFbnRyeVN0dWJNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yLCBKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZj4gSklUQ2FsbFRodW5rRW50cnlTdHViTWFwOworICAgIEpJVENhbGxU
aHVua0VudHJ5U3R1Yk1hcCBtX2ppdENhbGxUaHVua0VudHJ5U3R1Yk1hcDsKIAogICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24sIFN0cmluZz4gSG9z
dEZ1bmN0aW9uS2V5OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbChSZWdpc3RlcklEKTsK
ICAgICAgICAgSnVtcCBlbWl0SnVtcElmTnVtYmVyKFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1w
IGVtaXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJ
Zk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKTsKICAgICAgICAgdm9pZCBlbWl0VGFnSW50KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKQEAgLTE2MywxMiArMTY0LDE3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8s
IGRzdCwgdGFnTWFza1JlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAgaW5saW5lIEpTSW50ZXJm
YWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SW50MzIoUmVnaXN0ZXJJ
RCByZWcpCisgICAgeworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDY0KEJlbG93LCByZWcs
IHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZywg
cmVnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBpbmxpbmUgSlNJbnRl
cmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIodW5zaWduZWQgdmly
dHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbG9hZDY0
KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOwotICAgICAgICBKdW1wIHJl
c3VsdCA9IGJyYW5jaDY0KEJlbG93LCBkc3QsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAg
ICAgIHplcm9FeHRlbmQzMlRvUHRyKGRzdCwgZHN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIGVtaXRKdW1wSWZOb3RJbnQzMihkc3QpOwogICAgIH0KIAogICAgIGlu
bGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUo
dW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
Y3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lz
dGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwyMCBAQCBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50UmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXggPSAwOyBhcmd1bWVudEluZGV4IDwgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJndW1lbnRJbmRleCsrKSB7CisgICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3IoYXJndW1lbnRJbmRleCk7CisKKyAgICAgICAgaWYgKGFyZ3VtZW50
UmVnICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1bHQuc2V0KGFyZ3VtZW50UmVn
KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWdpc3RlclNldCBS
ZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkKIHsKICAgICBSZWdpc3RlclNldCBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZp
c2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdp
c3RlclNldCBydW50aW1lUmVnaXN0ZXJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFy
Z3VtZW50UmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyB1c2VkIHRvIHBhc3MgYXJndW1lbnRzIHdo
ZW4gbWFraW5nIEpTIENhbGxzCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBh
bmQgdXNlZCBieSBhbnkgdGllci4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgbGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRo
ZSBMTEludC4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
OyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIERGRyBKSVQuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OCwy
MSArNTY4LDIxIEBAIHZvaWQgcmVwYXRjaEluKAogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCks
IG9wZXJhdGlvbkluKTsKIH0KIAotc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYpCitzdGF0
aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSosIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB0aHVua0VudHJ5UG9pbnRzKQogewotICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbigpLCBDb2RlTG9jYXRpb25MYWJlbChjb2RlUmVmLmNvZGUoKSkpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigp
LCBDb2RlTG9jYXRpb25MYWJlbCh0aHVua0VudHJ5UG9pbnRzLmVudHJ5Rm9yKGNhbGxMaW5rSW5m
by5hcmd1bWVudHNMb2NhdGlvbigpKSkpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihW
TSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0
b3IpCitzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJbmZvLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdm0tPmdldENUSVN0dWIoZ2VuZXJhdG9yKSk7Cisg
ICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdm0tPmdldEpJVENhbGxUaHVua0VudHJ5
U3R1YihnZW5lcmF0b3IpKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVu
a0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZv
LCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRT
dHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGNhbGxM
aW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29k
ZVJlZigpLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKIH0KIAogdm9pZCBsaW5rRm9yKApAQCAtNjQ0
LDcgKzY0NCw3IEBAIHZvaWQgbGlua1Nsb3dGb3IoCiAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJldmVydENhbGwoVk0qIHZtLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYpCitzdGF0aWMg
dm9pZCByZXZlcnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNvZGVSZWYpCiB7CiAgICAgaWYgKGNhbGxMaW5r
SW5mby5pc0RpcmVjdCgpKSB7CiAgICAgICAgIGNhbGxMaW5rSW5mby5jbGVhckNvZGVCbG9jaygp
OwpAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZv
JiBjYWwKICAgICBpZiAoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFM
b2coIlVubGlua2luZyBjYWxsIGF0ICIsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKSwgIlxu
Iik7CiAgICAgCi0gICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5rSW5mbywgdm0uZ2V0Q1RJU3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CisgICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5r
SW5mbywgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
KTsKIH0KIAogdm9pZCBsaW5rVmlydHVhbEZvcigKQEAgLTY4Myw5ICs2ODMsOSBAQCB2b2lkIGxp
bmtWaXJ0dWFsRm9yKAogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29k
ZUJsb2NrKSkKICAgICAgICAgZGF0YUxvZygiTGlua2luZyB2aXJ0dWFsIGNhbGwgYXQgIiwgKmNh
bGxlckNvZGVCbG9jaywgIiAiLCBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlT3JpZ2luKCksICJc
biIpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0
dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBv
aW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0lu
Zm8pOwogICAgIHJldmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAg
ICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRo
dW5rLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIo
Y3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRy
LCB0cnVlKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC03MzQsNiArNzM0LDcgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKAogICAgICAgICBjYWxsTGlua0luZm8uc2V0SGFzU2VlbkNsb3N1cmUo
KTsKICAgICAKICAgICBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOworICAg
IHNpemVfdCBjYWxsZXJBcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKTsKICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAg
ICBmb3IgKENhbGxWYXJpYW50IHZhcmlhbnQgOiBsaXN0KSB7CkBAIC03NTAsNyArNzUxLDcgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgp
OwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0aGVyIGJl
Y2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1pc21hdGNo
LAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hvbGUg
dGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8
fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygp
KSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENvdW50IDwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExp
bmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC03NzEsNiArNzcyLDkgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIH0KICAg
ICAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlua0lu
Zm8uY2FsbGVlR1BSKCkpOworCisgICAgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lz
dGVycygpKQorICAgICAgICBBU1NFUlQoY2FsbGVlR1BSID09IGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNhbGxlckNvZGVC
bG9jayk7CiAgICAgCkBAIC03OTMsNiArNzk3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIp
CiAgICAgICAgICAgICBzY3JhdGNoR1BSID0gZnJhbWVTaHVmZmxlci0+YWNxdWlyZUdQUigpOwor
ICAgICAgICBlbHNlIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAg
ICAgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIwOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNo
R1BSKGNhbGxlZUdQUik7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBmdW5jdGlv
biBhbmQgc3Rhc2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KQEAgLTg1OCwxMyArODY0
LDIzIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBHUFJSZWcgZmFzdENvdW50c0Jh
c2VHUFI7CiAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BS
ID0gZnJhbWVTaHVmZmxlci0+YWNxdWlyZUdQUigpOworICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5m
by5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorI2lmIENQVShBUk02NCkKKyAgICAgICAgZmFzdENv
dW50c0Jhc2VHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIxOworI2Vsc2UKKyAgICAgICAgZmFzdENv
dW50c0Jhc2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgogICAgIGVsc2UgewogICAgICAg
ICBmYXN0Q291bnRzQmFzZUdQUiA9CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjb21wYXJpc29uVmFsdWVHUFIsIEdQUkluZm86OnJlZ1Qz
KTsKICAgICB9Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihm
YXN0Q291bnRzLmdldCgpKSwgZmFzdENvdW50c0Jhc2VHUFIpOworICAgIGlmIChmYXN0Q291bnRz
KQorICAgICAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RD
b3VudHMuZ2V0KCkpLCBmYXN0Q291bnRzQmFzZUdQUik7CiAgICAgaWYgKCFmcmFtZVNodWZmbGVy
ICYmIGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpCiAgICAgICAgIHN0dWJKaXQuZW1pdFJlc3Rv
cmVDYWxsZWVTYXZlcygpOworCisgICAgaW5jcmVtZW50Q291bnRlcigmc3R1YkppdCwgVk06OlBv
bHltb3JwaGljQ2FsbCk7CisKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlz
b25WYWx1ZUdQUiwgY2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uo
c3R1YkppdCkpIHsKQEAgLTg3Myw4ICs4ODksMzAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFy
aWFudCgpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5o
YXNKSVRDb2RlRm9yQ2FsbCgpKTsKKworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUg
PSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlm
IChjb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3Vu
dCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAg
ICAgICAgICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50ID09IGNhbGxlckFyZ3VtZW50Q291
bnQgfHwgY2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBSZWdpc3RlckFy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9yQXJnQ291bnQgPSBKSVRFbnRyeVBv
aW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291
bnQpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlGb3JBcmdDb3VudCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZW50
cnlUeXBlID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRy
YUFyZ3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAg
IH0KKwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9Ci0gICAgICAgICAg
ICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIHZhcmlhbnQuZXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChlbnRy
eVR5cGUpOworICAgICAgICBBU1NFUlQoY29kZVB0cik7CiAgICAgICAgIAogICAgICAgICBpZiAo
ZmFzdENvdW50cykgewogICAgICAgICAgICAgc3R1YkppdC5hZGQzMigKQEAgLTkwNywxNSArOTQ1
LDE1IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICNlbmRpZgogICAgICAgICBmcmFtZVNo
dWZmbGVyLT5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHVi
Sml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisvLyAgUmVnQ0MgVG9kbzogIHN0
dWJKaXQubW92ZShjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgIC8vICBNYXkgbmVlZCBmb3Ig
MzIgYml0CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3R1YkppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7
CiAjZW5kaWYKICAgICB9Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIHN0dWJKaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgCi0gICAgc3R1
YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpyZWdUNCk7Cisg
ICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8u
Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAgICAgICAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwpAQCAtOTM2LDcgKzk3NCw3IEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbCgKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uY2Fs
bFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKSk7CiAgICAgZWxzZQogICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0
T2Zmc2V0KDApKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVs
KHZtLT5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgp
KSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0
SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvciku
ZW50cnlGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7CiAgICAgCiAgICAg
YXV0byBzdHViUm91dGluZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREVfRk9SKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDIwODQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJ
VC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpA
QCAtMzcsMTggKzM4LDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNwZWNpYWxpemVk
VGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICBlbnVtIEFyZ0xv
Y2F0aW9uIHsgT25TdGFjaywgSW5SZWdpc3RlcnMgfTsKKworICAgICAgICBTcGVjaWFsaXplZFRo
dW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5SGVscGVyczo6U3Bp
bGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHks
IEFyZ0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gT25TdGFjaykKICAgICAgICAgICAgIDogSlNJbnRl
cmZhY2VKSVQodm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7Ci0gICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwot
ICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2Yg
YXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVh
bCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMy
KGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAg
ICBpZiAoYXJnTG9jYXRpb24gPT0gSW5SZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICBtX3N0
YWNrQXJndW1lbnRzRW50cnkgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgIGZpbGxBcmd1bWVu
dFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisgICAgICAgICAgICAgICAgbV9y
ZWdpc3RlckFyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXpl
VGFnUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRo
ZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgbV9mYWlsdXJl
cy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENv
dW50KCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVC
ZWZvcmVQcm9sb2d1ZShleHBlY3RlZEFyZ0NvdW50ICsgMSwgc3BpbGxUeXBlKTsKKyAgICAgICAg
ICAgICAgICBtX3N0YWNrQXJndW1lbnRzRW50cnkgPSBsYWJlbCgpOworI2VuZGlmCisgICAgICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgICAgICBlbWl0U2F2
ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAgICAgICAgIC8vIENoZWNr
IHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAg
ICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3Vu
dCArIDEpKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSkKICAgICAgICAgICAgIDogSlNJ
bnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAg
ICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAg
ICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gTGFiZWwoKTsKKyNlbmRpZgogICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVy
aWFsaXplVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KQEAgLTk0LDExICsxMTUsMjYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsb2FkSW50MzJBcmd1bWVudChhcmd1bWVudCwgZHN0
LCBjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGNvbnZl
cnNpb25GYWlsZWQpOwogICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjaGVja0pTU3RyaW5nQXJn
dW1lbnQoVk0mIHZtLCBSZWdpc3RlcklEIGFyZ3VtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKGFyZ3VtZW50KSk7CisgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsCisgICAg
ICAgICAgICAgICAgQWRkcmVzcyhhcmd1bWVudCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwKKyAgICAgICAgICAgICAgICB2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRGYWlsdXJlKGNvbnN0IEp1bXAmIGZhaWx1
cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGZhaWx1cmUpOwog
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBsaW5rRmFpbHVyZUhlcmUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2ZhaWx1cmVzLmxpbmsodGhpcyk7CisgICAgICAgICAgICBtX2ZhaWx1cmVz
LmNsZWFyKCk7CisgICAgICAgIH0KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHZvaWQg
cmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHNyYykKICAgICAgICAgewpAQCAtMTY0LDEzICsyMDAs
MjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXQoKTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQorICAgICAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYgZmluYWxpemUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGZhbGxiYWNr
LCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhVTktfSUQpOwogICAgICAgICAg
ICAgcGF0Y2hCdWZmZXIubGluayhtX2ZhaWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbChmYWxsYmFj
aykpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgp
OyBpKyspCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2NhbGxzW2ldLmZpcnN0
LCBtX2NhbGxzW2ldLnNlY29uZCk7Ci0gICAgICAgICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgJXMiLCB0aHVua0tpbmQpKTsKKwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnk7CisgICAgICAgICAg
ICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgc3Rh
Y2tFbnRyeSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9zdGFja0FyZ3VtZW50c0VudHJ5KTsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZWdpc3RlckVudHJ5OworICAgICAg
ICAgICAgaWYgKG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBlbnRyeSA9
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yICVzIiwg
dGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIGlmIChtX3N0YWNrQXJndW1lbnRzRW50cnkuaXNT
ZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkuaXNT
ZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihl
bnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVnaXN0ZXJFbnRyeSwgc3RhY2tF
bnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZihlbnRyeSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSwg
c3RhY2tFbnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUoKSwgZW50cnkuY29k
ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgdGFyZ2V0IGZ1
bmN0aW9uIHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CkBAIC0yMDcsNiAr
MjU5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhaWx1cmVzOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgbV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5OworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgbV9zdGFja0FyZ3VtZW50c0VudHJ5OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWly
PENhbGwsIEZ1bmN0aW9uUHRyPj4gbV9jYWxsczsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDggKzMwLDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFZNOwogY2xhc3MgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgSklURW50cnlQb2ludHNXaXRoUmVmOworY2xhc3Mg
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY7CiAKIHR5cGVkZWYgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmICgqVGh1bmtHZW5lcmF0b3IpKFZNKik7Cit0eXBlZGVmIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZiAoKkpJVEVudHJ5R2VuZXJhdG9yKShWTSopOwordHlwZWRlZiBKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZiAoKkpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yKShWTSopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2
ICs3NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tCiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiVGhyb3cgZXhjZXB0aW9uIGZyb20g
Y2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNyZWF0ZVJlZ2lzdGVy
QXJndW1lbnRzU3BpbGxFbnRyeShDQ2FsbEhlbHBlcnMmIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF0pCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVudHJ5
UG9pbnRzW3RodW5rRW50cnlQb2ludFR5cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFiZWwo
KTsKKyAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUo
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7
CisgICAgfQorCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBqaXQuZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckNh
bGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxM
RVJfU1BJTExTX0FSR0NPVU5UKQorICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZv
cmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0
KTsKKyAgICBVTlVTRURfUEFSQU0oZW50cnlQb2ludHMpOworI2VuZGlmCisgICAgZW50cnlQb2lu
dHNbU3RhY2tBcmdzXSA9IGppdC5sYWJlbCgpOworfQorCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZv
cigKICAgICBDQ2FsbEhlbHBlcnMmIGppdCwgVk0qIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xp
IHNsb3dQYXRoRnVuY3Rpb24pCiB7CkBAIC04OCw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBzbG93
UGF0aEZvcigKICAgICAvLyBNb3ZpbmcgdGhlIHN0YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMgdXMgcm9vbSBmb3Igb3VyIDMgYXJndW1lbnRzCiAgICAg
Ly8gYW5kIHNwYWNlIGZvciB0aGUgMTYgYnl0ZSByZXR1cm4gYXJlYS4KICAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3ZlKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigzMiksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhG
dW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTEwMCw3ICsxMjEsNyBAQCBzdGF0
aWMgdm9pZCBzbG93UGF0aEZvcigKICNlbHNlCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKQogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5m
bzo6cmVnVDIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
ICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTEyNyw3ICsxNDgsNyBAQCBz
dGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUg
c3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKICAgICAvLyBzYXZl
IHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysr
IGZ1bmN0aW9uIGNhbGwKQEAgLTEzNSw0NSArMTU2LDE2NSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbGlua0NhbGxUaHVua0dlbmVyCiAgICAgLy8gdG8gYmUgaW4gcmVnVDAvcmVnVDEgKHBheWxv
YWQvdGFnKSwgdGhlIENhbGxGcmFtZSB0byBoYXZlIGFscmVhZHkKICAgICAvLyBiZWVuIGFkanVz
dGVkLCBhbmQgYWxsIG90aGVyIHJlZ2lzdGVycyB0byBiZSBhdmFpbGFibGUgZm9yIHVzZS4KICAg
ICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKLSAgICAKKworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRlUmVn
aXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5KGppdCwgZW50cnlQb2ludHMpOwogICAgIHNsb3dQYXRo
Rm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmKGNvZGVSZWYpOworCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tB
cmdzOyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsr
KSB7CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVu
a0VudHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Y2FsbEVudHJ5UG9pbnRzOworfQorCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBs
aW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICAvLyBUaGUgcmV0dXJu
IGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxs
IGhlbmNlCisgICAgLy8gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUg
d2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9ybSBsaW5r
aW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9uIGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRoZSBDYWxs
TGlua0luZm8KKyAgICAvLyB0byBiZSBpbiBHUFJJbmZvOjpub25BcmdHUFIwLCB0aGUgY2FsbGVl
IHRvYmUgaW4gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLAorICAgIC8vIHRoZSBDYWxsRnJh
bWUgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gYWRqdXN0ZWQsIGFuZCBhcmd1bWVudHMgaW4gYXJndW1l
bnQgcmVnaXN0ZXJzCisgICAgLy8gYW5kL29yIGluIHRoZSBzdGFjayBhcyBhcHByb3ByaWF0ZS4K
KyAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJl
Z2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsKKworICAgIGppdC5t
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIxKTsgLy8g
U2F2ZSBjYWxsZWUncyBmcmFtZSBwb2ludGVyCisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRv
cENhbGxGcmFtZSk7CisKKyAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisg
ICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgaml0LnNldHVwQXJndW1lbnRzKEdQUkluZm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5v
bkFyZ0dQUjAsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uTGlu
a0RpcmVjdENhbGwpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgZW1pdFBvaW50ZXJWYWxp
ZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgCisgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBHUFJS
ZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAg
IGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmdDb3VudFJlZyk7CisKKyAgICAvLyBsb2FkICJ0
aGlzIgorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUo
MCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOworCisgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGZpbGxVbmRlZmluZWRbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSU107CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0lu
ZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgr
KykgeworICAgICAgICBmaWxsVW5kZWZpbmVkW2FyZ0luZGV4XSA9IGppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihhcmdJbmRleCkpOworICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVB
cmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rp
b25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKworICAgIENDYWxsSGVscGVyczo6SnVtcCBk
b25lRmlsbGluZyA9IGppdC5qdW1wKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0g
MTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBh
cmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdLmxpbmsoJmppdCk7
CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgZG9uZUZpbGxpbmcubGluaygmaml0KTsKKyNlbmRp
ZgorCisKKyAgICBqaXQucmV0KCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVm
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBkaXJlY3QgY2FsbCB0aHVuayIpKTsK
KyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRy
eVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9pbnRz
LnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRp
b25PZihlbnRyeVBvaW50c1tlbnRyeUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
Y2FsbEVudHJ5UG9pbnRzOwogfQogCiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25zLCB3ZSBv
bmx5IGluY2x1ZGUgY2FsbHMsIHNpbmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBmb3IKIC8v
IG9iamVjdCBjb25zdHJ1Y3Rpb24gdGhlbiB5b3UncmUgZ29pbmcgdG8gbG9zZSBiaWcgdGltZSBh
bnl3YXkuCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGpp
dCh2bSk7CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5r
RW50cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxs
RW50cnkoaml0LCBlbnRyeVBvaW50cyk7CisKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVy
YXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgKCJMaW5rIHBvbHltb3JwaGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAodW5zaWdu
ZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRU
eXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50
cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisgICAg
ICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZJWE1F
OiBXZSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwgY2Fs
bCB2cy4gYSBzbG93CiAvLyBwYXRoIHZpcnR1YWwgY2FsbCBzbyB0aGF0IHdlIGNhbiBlbmFibGUg
ZmFzdCB0YWlsIGNhbGxzIGZvciBtZWdhbW9ycGhpYwogLy8gdmlydHVhbCBjYWxscyBieSB1c2lu
ZyB0aGUgc2h1ZmZsZXIuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4ODMxCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0
aFJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykK
IHsKLSAgICAvLyBUaGUgY2FsbGVlIGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0LCB0aGUg
dGFnIGlzIGluIHJlZ1QxKS4KLSAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0
YWNrLCBvciBpbiB0aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQotICAgIC8vIGp1bXAg
dG8gdGhlIGNhbGxlZSwgb3Igc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJh
bWUgd2hpbGUgd2UKLSAgICAvLyBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhlIGFwcHJv
cHJpYXRlIEpJVCBvcGVyYXRpb24uCisgICAgLy8gVGhlIGNhbGxlZSBpcyBpbiBhcmd1bWVudFJl
Z2lzdGVyRm9yQ2FsbGVlKCkgKGZvciBKU1ZBTFVFMzJfNjQsIGl0IGlzIGluIHJlZ1QxOnJlZ1Qw
KS4KKyAgICAvLyBUaGUgQ2FsbExpbmtJbmZvIGlzIGluIEdQUkluZm86Om5vbkFyZ0dQUjAuCisg
ICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsg
cmVnaXN0ZXIuCisgICAgLy8vIFdlIHdpbGwgaGVuY2UganVtcCB0byB0aGUgY2FsbGVlLCBvciBz
YXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbAorICAgIC8vIGZyYW1lIHdoaWxlIHdl
IG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlv
bi4KIAogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwogICAgIAogICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3Qgc2xvd0Nhc2U7CisKKyAgICBHUFJSZWcgY2FsbGVlUmVnOworICAgIEdQUlJlZyB0
YXJnZXRSZWc7CisgICAgR1BSUmVnIHRlbXBSZWc7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2lm
IENQVShBUk02NCkKKyAgICB0YXJnZXRSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIxOworICAgIHRl
bXBSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIwOworI2VsaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJ
TkRPV1MpCisgICAgdGFyZ2V0UmVnID0gR1BSSW5mbzo6cmVnVDA7CisgICAgdGVtcFJlZyA9IEdQ
UkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSOworI2Vsc2UKKyAgICB0YXJnZXRSZWcg
PSBHUFJJbmZvOjpyZWdUNDsKKyAgICB0ZW1wUmVnID0gR1BSSW5mbzo6cmVnVDA7CisjZW5kaWYK
KyAgICBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CiAgICAgCi0gICAg
Ly8gVGhpcyBpcyBhIHNsb3cgcGF0aCBleGVjdXRpb24sIGFuZCByZWdUMiBjb250YWlucyB0aGUg
Q2FsbExpbmtJbmZvLiBDb3VudCB0aGUKLSAgICAvLyBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0
aGUgcHJvZmlsZXIuCisgICAgaml0LmZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9y
ZVByb2xvZ3VlKCk7CisjZWxzZQorICAgIGNhbGxlZVJlZyA9IEdQUkluZm86OnJlZ1QwOworICAg
IHRhcmdldFJlZyA9IEdQUkluZm86OnJlZ1Q0OworICAgIHRlbXBSZWcgPSBHUFJJbmZvOjpyZWdU
MDsKKyNlbmRpZgorCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHJlZ2lzdGVyRW50cnkgPSBq
aXQubGFiZWwoKTsKKworICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlZpcnR1YWxDYWxs
KTsKKworICAgIC8vIFRoaXMgaXMgYSBzbG93IHBhdGggZXhlY3V0aW9uLiBDb3VudCB0aGUgc2xv
dyBwYXRoIGV4ZWN1dGlvbiBmb3IgdGhlIHByb2ZpbGVyLgogICAgIGppdC5hZGQzMigKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksCi0gICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZlNsb3dQYXRoQ291
bnQoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZlNsb3dQYXRoQ291bnQoKSkpOwogCiAgICAgLy8gRklY
TUU6IHdlIHNob3VsZCBoYXZlIGEgc3RvcnkgZm9yIGVsaW1pbmF0aW5nIHRoZXNlIGNoZWNrcy4g
SW4gbWFueSBjYXNlcywKICAgICAvLyB0aGUgREZHIGtub3dzIHRoYXQgdGhlIHZhbHVlIGlzIGRl
ZmluaXRlbHkgYSBjZWxsLCBvciBkZWZpbml0ZWx5IGEgZnVuY3Rpb24uCkBAIC0xODEsNTQgKzMy
Miw2NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hUZXN0
NjQoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm9u
WmVybywgY2FsbGVlUmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICNlbHNlCiAgICAg
c2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBzbG93
Q2FzZS5hcHBlbmQoaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlv
blR5cGUpKTsKKyAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaElmTm90VHlwZShjYWxsZWVS
ZWcsIEpTRnVuY3Rpb25UeXBlKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgd2UgaGF2ZSBh
IEpTRnVuY3Rpb24uCiAgICAgCiAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxl
KCkpLAotICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKKyAgICAg
ICAgdGFyZ2V0UmVnKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZz
ZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8uc3BlY2lhbGl6YXRpb25LaW5kKCkpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwotICAg
IHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1Q0KSk7CisgICAgICAgICAgICB0YXJnZXRSZWcsIEV4ZWN1dGFibGVCYXNlOjpv
ZmZzZXRPZkVudHJ5Rm9yKAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXph
dGlvbktpbmQoKSwKKyAgICAgICAgICAgICAgICBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0lu
Zm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKSwKKyAgICAgICAgdGFyZ2V0UmVnKTsKKyAgICBzbG93
Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCB0YXJnZXRS
ZWcpKTsKICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBDb2RlQmxvY2ss
IGFuZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5nIGEgZmFzdAogICAgIC8vIGNhbGwuCiAgICAg
CiAgICAgLy8gTWFrZSBhIHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBj
b2RlLgotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKKyAg
ICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCB0YXJnZXRSZWcpOwogICAgIGlmIChjYWxsTGlu
a0luZm8uaXNUYWlsQ2FsbCgpKSB7Ci0gICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxs
U2xvdyhHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJz
VG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisgICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwodGVtcFJlZyk7CisgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93
KHRhcmdldFJlZyk7CiAgICAgfQotICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1Q0KTsKLQorICAg
IGppdC5qdW1wKHRhcmdldFJlZyk7CiAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKLSAgICAKKwor
ICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlZpcnR1YWxTbG93Q2FsbCk7CisKICAgICAv
LyBIZXJlIHdlIGRvbid0IGtub3cgYW55dGhpbmcsIHNvIHJldmVydCB0byB0aGUgZnVsbCBzbG93
IHBhdGguCisgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9n
dWUoKTsKICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25WaXJ0dWFsQ2Fs
bCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAgICAgICAgcGF0Y2hCdWZmZXIs
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwKICAgICAgICAgKCJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCiAgICAgICAgIGNh
bGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpSZWd1bGFyID8gImNhbGwiIDogY2Fs
bExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyAidGFpbCBjYWxsIiA6ICJj
b25zdHJ1Y3QiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY2FsbEVu
dHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZik7CisK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVB0ciA9IHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeSk7CisKKyAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50
cnlGb3IoU3RhY2tBcmdzRW50cnksIGNvZGVSZWYuY29kZSgpKTsKKworICAgIGZvciAodW5zaWdu
ZWQgZW50cnlJbmRleCA9IFJlZ2lzdGVyMUFyZ0VudHJ5OyBlbnRyeUluZGV4IDwgIFRodW5rRW50
cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKQorICAgICAgICBjYWxsRW50cnlQb2ludHMu
c2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCks
IHJlZ2lzdGVyRW50cnlQdHIpOworICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9
CiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRlclZpYUNhbGwsIEVudGVyVmlhSnVtcFdpdGhT
YXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgfTsKIAotc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZtLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBlIGVudHJ5VHlwZSA9IEVudGVyVmlhQ2FsbCkK
K3N0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5VHlwZSBlbnRyeVR5cGUgPSBF
bnRlclZpYUNhbGwpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbG9n
IFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5CkBAIC0yMzcsOCArMzkxLDE0IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAKICAgICBKU0ludGVyZmFj
ZUpJVCBqaXQodm0pOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHN0YWNrQXJnc0VudHJ5
OworCiAgICAgc3dpdGNoIChlbnRyeVR5cGUpIHsKICAgICBjYXNlIEVudGVyVmlhQ2FsbDoKKyAg
ICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsK
KworICAgICAgICBzdGFja0FyZ3NFbnRyeSA9IGppdC5sYWJlbCgpOworCiAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVudGVyVmlh
SnVtcFdpdGhTYXZlZFRhZ3M6CkBAIC0zNzksMjUgKzUzOSwzMyBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19J
RCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgibmF0aXZlICVzJXMg
dHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRh
aWwgV2l0aCBTYXZlZCBUYWdzICIgOiBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aG91dFNh
dmVkVGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2ZWQgVGFncyAiIDogIiIsIHRvQ1N0cmluZyhraW5k
KS5kYXRhKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0g
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50
cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNh
dmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAgaWYgKGVudHJ5
VHlwZSA9PSBFbnRlclZpYUNhbGwpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0
YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHN0YWNrQXJnc0VudHJ5KTsKKwor
ICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29k
ZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNr
RW50cnlQdHIpOworICAgIH0KKworICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29k
ZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpKTsKKwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZv
ckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
bmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBuYXRpdmVGb3JH
ZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzKTsKKyAg
ICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1w
V2l0aFNhdmVkVGFncykuY29kZVJlZigpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1
cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aG91
dFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNh
bGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpLmNvZGVSZWYoKTsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBy
ZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KQEAgLTUz
Niw2ICs3MDQsNDMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHVucmVhY2hhYmxlR2VuZXJhdAog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoInVucmVhY2hhYmxlIHRodW5r
IikpOwogfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKK3N0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2Fk
UmVnQ2FsbChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKK3sKKyAgICAvLyBsb2Fk
IHN0cmluZworICAgIEdQUlJlZyB0aGlzUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoMCk7CisgICAgR1BSUmVnIGluZGV4UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMik7CisgICAgR1BSUmVnIGxlbmd0aFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpOworICAgIEdQUlJlZyB0ZW1wUmVnID0gU3BlY2lhbGl6
ZWRUaHVua0pJVDo6bm9uQXJnR1BSMDsKKworICAgIGppdC5jaGVja0pTU3RyaW5nQXJndW1lbnQo
KnZtLCB0aGlzUmVnKTsKKworICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5k
IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1Qw
CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzUmVnLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJp
bmdWYWx1ZU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcFJlZykpOworCisgICAgLy8gbG9h
ZCBpbmRleAorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KDEpLCBpbmRleFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJ
bnQzMihpbmRleFJlZykpOworCisgICAgLy8gRG8gYW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11
bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5kaWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBsZW5ndGhSZWcpKTsKKworICAgIC8v
IExvYWQgdGhlIGNoYXJhY3RlcgorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlz
MTZCaXQ7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CisgICAg
Ly8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIGxlbmd0aFJlZyk7
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgbGVuZ3RoUmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzT25lLCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQuYXBwZW5kKGppdC5q
dW1wKCkpOworICAgIGlzMTZCaXQubGluaygmaml0KTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgodGVtcFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c1R3bywgMCksIHRlbXBSZWcpOworICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7Cit9CisjZWxzZQog
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSog
dm0pCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKQEAgLTU2NSw2ICs3NzAsNyBAQCBzdGF0aWMgdm9p
ZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRoCiAgICAgaml0LmxvYWQxNihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwogICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7CiB9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZt
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzcmMsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKQEAgLTU3NCwz
NCArNzgwLDY5IEBAIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhTcGVjaWFsaXplZFRodW4KICAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgZHN0KSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0LCB2
bSk7CisgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAp
OworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lz
dGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGppdC5h
cHBlbmRGYWlsdXJlKGppdC5qdW1wKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQ29kZUF0Iik7CisjZWxzZQogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBzdHJpbmdDaGFyTG9hZChqaXQs
IHZtKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
ICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2
bSksICJjaGFyQ29kZUF0Iik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNo
YXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQXRU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0Nh
bGwoaml0LCB2bSk7CisgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtK
SVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1
bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7CisgICAgaml0LnJldHVybkpTQ2Vs
bChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWls
dXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3Nl
bWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1
bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRh
aWxDYWxsKHZtKSwgImNoYXJBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGpp
dCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3RyaW5n
KGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0Nl
bGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbmRpZgog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxw
ZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAg
ICAvLyBsb2FkIGNoYXIgY29kZQorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KDEpLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBq
aXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdEludDMyKFNwZWNpYWxpemVkVGh1bmtK
SVQ6Om5vbkFyZ0dQUjApKTsKKworICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQ
UiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykpOworICAgIGppdC5yZXR1
cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIpOworICAgIGppdC5s
aW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUo
MiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0
Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2
ZVRhaWxDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vsc2UKKyAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CiAgICAgLy8gbG9h
ZCBjaGFyIGNvZGUKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFp
bENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVm
IGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmdKdW1wOwpAQCAt
NjIyLDExICs4NjMsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0
bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJjbHozMiIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAo
IWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0
aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlO
YXRpdmVDYWxsKHZtKTsKIAogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGpp
dC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDApOwpAQCAtNzgyLDEyICsxMDIzLDEyIEBAIGRlZmluZVVuYXJ5RG91Ymxl
T3BXcmFwcGVyKHRydW5jKTsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAw
LjU7CiAgICAgCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihWTSog
dm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7
CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vbkludEp1bXA7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihmbG9vcikg
fHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5h
dGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1wLmxpbmsoJmppdCk7CkBAIC04MjUs
MTEgKzEwNjYsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0bwog
ICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2
bSksICJmbG9vciIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVu
YXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJu
IHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg0OCwxMSArMTA4OSwxMSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yCiAgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNlaWwiKTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQ
b2ludHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKHRy
dW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVu
dHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsK
ICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CkBAIC04NzEsMTEgKzExMTIsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5j
VGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVUYWlsQ2FsbCh2bSksICJ0cnVuYyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcm91bmRU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoanNSb3VuZCkgfHwgIWppdC5zdXBw
b3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2
bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0p
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQz
MkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAg
ICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtOTA1LDM3
ICsxMTQ2LDM3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG8KICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0p
LCAicm91bmQiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV4cFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKQotICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmpp
dEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmpp
dEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVj
aWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAg
ICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdy
YXBwZXIoZXhwKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpm
cFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
VGFpbENhbGwodm0pLCAiZXhwIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVu
a0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbG9nVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSkKLSAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmpp
dFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmpp
dFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1l
bnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5
RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImxvZyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGFic1Ro
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwg
MSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVi
cy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdW5z
aWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDAp
OwpAQCAtOTg4LDcgKzEyMjksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5l
cmF0b3IoCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRh
aWxDYWxsKHZtKSwgImFicyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsKQEAgLTEwMTksMTEgKzEyNjAsMTEg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcgogICAgIHJldHVybiBq
aXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJpbXVsIik7
CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSogdm0p
CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewog
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsKICAgICBpZiAoIWppdC5zdXBwb3J0
c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkp
OworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqaXQuZW1pdFJhbmRvbVRodW5rKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwKTsKQEAgLTEwMzEsMTYgKzEyNzIsMjIgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdAogCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJhbmRvbSIpOwogI2Vsc2UKLSAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+
aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZt
KQogewotICAgIENDYWxsSGVscGVycyBqaXQodm0pOworICAgIEpTSW50ZXJmYWNlSklUIGppdCh2
bSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZXM7CisKKyAgICBqaXQu
c3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwogICAgIAotICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okxh
YmVsIHN0YWNrQXJnc0VudHJ5KCZqaXQpOwogICAgIAorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpOworCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1lLgogICAgIGppdC5zdG9yZVB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6YWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKICAgICBqaXQuc3RvcmUzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMTExMCwyMCArMTM1NywyMyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAotICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRo
QXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAs
IEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NN
dXN0Q2hlY2tBcml0eSkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywg
R1BSSW5mbzo6cmVnVDApOworICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7CiAgICAgCiAgICAgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5jYWxsKEdQUkluZm86
OnJlZ1QwKTsKICAgICAKICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICBqaXQu
cmV0KCk7Ci0gICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwotICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVs
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtKSkpOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBsaW5rQnVmZmVyLCAoIlNwZWNpYWxp
emVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3Modm0pKSk7CisKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3Vt
ZW50cyIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeVB0ciA9IHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkpOworCisgICAgcmV0dXJuIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNv
ZGVSZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2luY2x1ZGUg
IkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKIAogI2lmIEVO
QUJMRShKSVQpCkBAIC0zNiwzNCArMzcsMzUgQEAgY2xhc3MgQ2FsbExpbmtJbmZvOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihW
TSopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVuayhWTSosIENhbGxMaW5r
SW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxp
bmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9s
eW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50
cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiwg
Q2FsbExpbmtJbmZvJik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFs
VGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVDYWxsR2Vu
ZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJh
dG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3Io
Vk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRh
Z3NHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwR2VuZXJh
dG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5yZWFjaGFibGVHZW5lcmF0b3IoVk0q
KTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSop
OwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
ZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVua0dl
bmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSopOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21U
aHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0
b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSop
OworSklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSopOworSklURW50
cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZXhw
VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5rR2Vu
ZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50
c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
cmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiB0cnVuY1Ro
dW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBi
b3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qKTsKIAogfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0
NiwyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtCiAgICAgaWYg
KHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAg
ICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAg
ICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICAg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3Rl
ckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdl
dENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2Rl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVn
aXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwg
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNX
aXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2Vu
ZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJl
Z2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAg
ICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRo
dW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29k
ZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAg
IHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBA
IC01OSwxMiArNzMsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2
bQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsK
ICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcg
RGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSks
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRD
b2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSks
CisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykp
LAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAg
LTcyLDE0ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBD
bwogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZih2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihldmFsRW50
cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cisg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2V2YWxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNv
ZGUoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50
Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCkpLAorICAgICAgICAgICAgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5
cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTg3LDE0ICsxMjksMjggQEAg
c3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLAogI2lmIEVOQUJMRShKSVQp
CiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIo
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRD
VElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAg
ICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
cikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3By
b2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQog
CiBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9j
ayogY29kZUJsb2NrKQpAQCAtMTAyLDE0ICsxNTgsMjggQEAgc3RhdGljIHZvaWQgc2V0TW9kdWxl
UHJvZ3JhbUVudHJ5cG9pbnQoVgogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJ
VCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAg
ICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKG1vZHVsZVBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9s
b2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29k
ZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRf
bW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3Vl
KSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiB2b2lk
IHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDkgKzM3Miw5IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
Ik9TUiBlbnRyeSIsICgiaW4gcHJvbG9ndWUiKSk7CiAgICAgCiAgICAgaWYgKGtpbmQgPT0gUHJv
bG9ndWUpCi0gICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmV4
ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9j
ay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWly
ZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hl
Y2spOwotICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NG
b3JDYWxsKE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKKyAgICBMTElO
VF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiB9CiAjZWxzZSAvLyBF
TkFCTEUoSklUKQogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIqLCBF
bnRyeUtpbmQpCkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHNldFVwQ2FsbChFeGVjCiAjZW5kaWYKIAogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5j
dGlvbigpKSB7Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtp
bmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3Ioa2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOwogICAgIH0gZWxzZSBpZiAo
IWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CiAKQEAgLTEzMDgsMjMgKzEzMDgsMjMgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBzZXRVcENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBl
cnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NF
UlQoY29kZUJsb2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVu
dHJ5UG9pbnRUeXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAg
ICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOwor
ICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOwor
ICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQs
IGVudHJ5VHlwZSk7CiAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogd2ViQXNzZW1ibHlFeGVjdXRhYmxlID0gc3RhdGlj
X2Nhc3Q8V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIGNvZGVC
bG9jayA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAg
ICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAg
ICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7
CisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAg
ICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
YXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkOworICAgICAgICBjb2RlUHRyID0gd2ViQXNzZW1ibHlFeGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAjZW5kaWYKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDEwICs1MSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJ
VkFURSB2bUVudHJ5CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgp
LCBjb25zdCBjaGFyICp0aHVua0tpbmQpCitlbnVtIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkg
eyBDcmVhdGVSZWdpc3RlckVudHJ5LCBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSB9OworCitzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZNKiB2bSwg
dm9pZCAoKnRhcmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kLCBTaG91bGRDcmVhdGVSZWdp
c3RlckVudHJ5IHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgPSBEb250Q3JlYXRlUmVnaXN0ZXJF
bnRyeSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwotICAgIAorCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAoc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9PSBDcmVhdGVSZWdp
c3RlckVudHJ5KQorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZv
cmVQcm9sb2d1ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQ3JlYXRlUmVnaXN0
ZXJFbnRyeSk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0
dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgogICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
dGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QwKTsKQEAgLTYzLDI0ICs3Miw0NCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGdlbmVyYXRlVGh1CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
ICgiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKIH0KIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dl
bmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZt
LCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwiLCBDcmVhdGVSZWdpc3RlckVu
dHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwiKTsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
dm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBjb25zdHJ1Y3QiLCBDcmVh
dGVSZWdpc3RlckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
U3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3RhY2sg
YXJncyBjb25zdHJ1Y3QiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
UmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIGNhbGwiKTsK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVu
Y3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24g
Zm9yIHJlZ2lzdGVyIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJF
bnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY29u
c3RydWN0Iik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwg
ImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBh
cml0eSBjaGVjayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJ
bnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCB3aXRoIGFyaXR5
IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNo
ZWNrIik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0
Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2sp
LCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZp
c2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VY
UE9SVF9QUklWQVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50IHsKIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcihW
TSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihW
TSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JS
ZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRv
cihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9y
KFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IoVk0qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hl
Y2tNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJp
dHlDaGVja01vZGUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQXJpdHlDaGVja01vZGUgeworICAgIFJlZ2lzdGVy
RW50cnksCiAgICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLAogICAgIE11c3RDaGVja0FyaXR5CiB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVC
YXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHZv
aWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2pp
dENvZGVGb3JDYWxsID0gbnVsbHB0cjsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBudWxs
cHRyOwotICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJp
ZXMoKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAjZW5k
aWYKICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJ
TEVEOwogICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IE5VTV9QQVJBTUVURVJTX05P
VF9DT01QSUxFRDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGVCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZUJhc2UuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVk
ZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhhbmRs
ZXJJbmZvLmgiCiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUu
aCIKKyNpbmNsdWRlICJKSVRFbnRyeXBvaW50cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE1
Myw0NyArMTUzLDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVG
b3JDb25zdHJ1Y3QoKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVu
dHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBBcml0eUNoZWNrTW9kZSBh
cml0eSkKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKICAgICB7CiAgICAg
ICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQg
Zm9yIGFyaXR5IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAgICAgICAvLyBuby1hcml0eSBl
bnRyeXBvaW50IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2
YWx1ZSBkaXJlY3RseSBpbgogICAgICAgICAvLyBtYWNoaW5lIGNvZGUuCi0gICAgICAgIGlmIChh
cml0eSA9PSBNdXN0Q2hlY2tBcml0eSkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0g
ICAgICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIGlm
IChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoa2luZCkgewor
ICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JDYWxsLmVudHJ5Rm9yKGVudHJ5VHlwZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5lbnRyeUZvcihlbnRy
eVR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAg
ICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGFyaXR5
KTsKLSAgICAgICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgICAgICAv
LyBDYWNoZSB0aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZpcnR1
YWwgY2FsbCBvcHRpbWl6YXRpb25zLgotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAg
ICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICBtX2ppdENvZGVG
b3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkt
PmFkZHJlc3NGb3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7
IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlv
bnMuCisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgor
ICAgICAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJl
c3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0
OgorICAgICAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKGVudHJ5
VHlwZSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVENv
ZGVXaXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxs
V2l0aEFyaXR5Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVj
dXRhYmxlQmFzZSwgbV9qaXRFbnRyaWVzRm9yQ2FsbCkgKyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0
T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVj
dDoKLSAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNvbnN0cnVjdCkg
KyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAg
ICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yNDEsOCArMjM2LDggQEAgcHJvdGVjdGVkOgogICAgIEludHJpbnNpYyBtX2lu
dHJpbnNpYzsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ2FsbDsKICAgICBSZWZQ
dHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7Ci0gICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5
UG9pbnRzIG1faml0RW50cmllc0ZvckNhbGw7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRy
aWVzRm9yQ29uc3RydWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNObwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gdGFyZ2V0RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aGFz
SklUQ29kZUZvckNhbGwoKSkgewogICAgICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBj
YWNoZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KLSAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBleGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAg
fQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEodGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDg0
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6
OmZpbmlzaENyZWF0aW9uKFZNCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIG1f
aml0Q29kZUZvckNhbGwgPSBjYWxsVGh1bms7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0g
Y29uc3RydWN0VGh1bms7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gbV9q
aXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwotICAgIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5h
ZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5z
ZXRFbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ2FsbC0+YWRk
cmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKKyAgICBtX2ppdEVudHJpZXNG
b3JDb25zdHJ1Y3Quc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIG1faml0Q29k
ZUZvckNvbnN0cnVjdC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsK
ICAgICBtX25hbWUgPSBuYW1lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0MSwxMiArMTQxLDEyIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5z
dGFsbENvZGUoVk0mIHYKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxs
OgogICAgICAgICBtX2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWND
b2RlQmxvY2stPmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxX
aXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX2ppdEVu
dHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JD
YWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSA6IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb2RlRm9yQ29uc3RydWN0OgogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5l
cmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKLSAg
ICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmNsZWFyRW50cmll
cygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJs
b2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRFUlNf
Tk9UX0NPTVBJTEVEOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODksNiArMjg5LDcgQEAg
Q29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbQogCiBzdGF0aWMgdm9pZCBz
ZXR1cExMSW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CisgICAgY29kZUJsb2Nr
LT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBMTEludDo6c2V0RW50cnlwb2ludCh2
bSwgY29kZUJsb2NrKTsKIH0KIApAQCAtMjk2LDYgKzI5Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVw
SklUKFZNJiB2bSwgQ29kZUJsb2NrKiAKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIENvbXBpbGF0
aW9uUmVzdWx0IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCk7CisgICAgY29kZUJsb2NrLT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVu
dHMoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVs
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCwxMCBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2Vy
dmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFz
dFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAg
ICBjbGVhckNvdW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0
byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dGhpcyk7CiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdU
YWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9t
aWNTdHJpbmdUYWJsZSk7CkBAIC00NzQsNyArNDc4LDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06
OmVuc3VyZVNhbXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikK
IAogI2lmIEVOQUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JG
b3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRv
ciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAg
IHN3aXRjaCAoaW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAt
OTIxLDQgKzkyNSwzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlz
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291
bnRlcnMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7
IGkrKykKKyAgICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3Vu
dGVycygpCit7CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2Fs
bGVyKSArIGNvdW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAg
ICBkYXRhTG9nKCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFRvdGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUg
QmFzZWxpbmUgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRh
TG9nRigiJTEwenUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAg
ZGF0YUxvZ0YoIiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykp
OworICAgIGRhdGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxs
KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2
YWwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERp
cmVjdENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNv
dW50ZXJGb3IoUG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUg
VmlydHVhbCBzbG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAg
IGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJl
Z0FyZ3NOb0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlc
biIsIGNvdW50ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBS
ZWdpc3RlciBhcmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOwor
ICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVy
Rm9yKFJlZ0FyZ3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5
IGNoZWNrXG4iLCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUx
MHp1IEFyaXR5IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWly
ZWQpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDYgKzQyMSwxNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJh
dG9yKTsKICAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHVi
KEpJVEVudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRT
dHVicy0+aml0RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENh
bGxUaHVua0VudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBq
aXRTdHVicy0+aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQog
ICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVl
U2F2ZVJlZ2lzdGVyT2Zmc2V0czsKICAgICAKQEAgLTU1OCw2ICs1NjgsNTAgQEAgcHVibGljOgog
ICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrIG1fcmVnRXhwQWxsb2NhdG9yTG9jazsKIAorICAgIGVudW0gVk1Db3VudGVyVHlw
ZSB7CisgICAgICAgIEJhc2VsaW5lQ2FsbGVyLAorICAgICAgICBERkdDYWxsZXIsCisgICAgICAg
IEZUTENhbGxlciwKKyAgICAgICAgQ2FsbFZhcmFyZ3MsCisgICAgICAgIFRhaWxDYWxsLAorICAg
ICAgICBDYWxsRXZhbCwKKyAgICAgICAgRGlyZWN0Q2FsbCwKKyAgICAgICAgUG9seW1vcnBoaWND
YWxsLAorICAgICAgICBWaXJ0dWFsQ2FsbCwKKyAgICAgICAgVmlydHVhbFNsb3dDYWxsLAorICAg
ICAgICBSZWdBcmdzTm9Bcml0eSwKKyAgICAgICAgU3RhY2tBcmdzTm9Bcml0eSwKKyAgICAgICAg
UmVnQXJnc0V4dHJhLAorICAgICAgICBSZWdBcmdzQXJpdHksCisgICAgICAgIFN0YWNrQXJnc0Fy
aXR5LAorICAgICAgICBBcml0eUZpeHVwUmVxdWlyZWQsCisgICAgICAgIE51bWJlclZNQ291bnRl
cgorICAgIH07CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgc2l6ZV90IG1fY291bnRl
cnNbTnVtYmVyVk1Db3VudGVyXTsKKworICAgIHZvaWQgY2xlYXJDb3VudGVycygpOworCisgICAg
c2l6ZV90KiBhZGRyZXNzT2ZDb3VudGVyKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAg
eworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuICZtX2NvdW50ZXJzW2NvdW50ZXJU
eXBlXTsKKyAgICB9CisKKyAgICBzaXplX3QgY291bnRlckZvcihWTUNvdW50ZXJUeXBlIGNvdW50
ZXJUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ZXJUeXBlID49IE51bWJlclZNQ291bnRl
cikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fY291
bnRlcnNbY291bnRlclR5cGVdOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcENvdW50ZXJzKCk7CisjZW5kaWYKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNPd25Qcm9w
ZXJ0eUNhY2hlPiBtX2hhc093blByb3BlcnR5Q2FjaGU7CiAgICAgQUxXQVlTX0lOTElORSBIYXNP
d25Qcm9wZXJ0eUNhY2hlKiBoYXNPd25Qcm9wZXJ0eUNhY2hlKCkgeyByZXR1cm4gbV9oYXNPd25Q
cm9wZXJ0eUNhY2hlLmdldCgpOyB9CiAgICAgSGFzT3duUHJvcGVydHlDYWNoZSogZW5zdXJlSGFz
T3duUHJvcGVydHlDYWNoZSgpOwpJbmRleDogU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHJldmlzaW9uIDIwODQ0NSkK
KysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSAr
MzQsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi0jZGVmaW5lIERBVEFfTE9H
X1RPX0ZJTEUgMAorI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDEKIAogLy8gU2V0IHRvIDEgdG8g
dXNlIHRoZSB0ZW1wIGRpcmVjdG9yeSBmcm9tIGNvbmZzdHIgaW5zdGVhZCBvZiBoYXJkY29kZWQg
ZGlyZWN0b3J5LgogLy8gVGhlIGxhc3QgY29tcG9uZW50IG9mIERBVEFfTE9HX0ZJTEVOQU1FIHdp
bGwgc3RpbGwgYmUgdXNlZC4KLSNkZWZpbmUgREFUQV9MT0dfVE9fREFSV0lOX1RFTVBfRElSIDAK
KyNkZWZpbmUgREFUQV9MT0dfVE9fREFSV0lOX1RFTVBfRElSIDEKIAogLy8gVW5jb21tZW50IHRv
IGZvcmNlIGxvZ2dpbmcgdG8gdGhlIGdpdmVuIGZpbGUgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZSBzYXlzLgogLy8gTm90ZSB0aGF0IHdlIHdpbGwgYXBwZW5kICIu
PHBpZD4udHh0IiB3aGVyZSA8cGlkPiBpcyB0aGUgUElELgpJbmRleDogU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZp
c2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OTMsNiArNjkzLDExIEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKyNk
ZWZpbmUgRU5BQkxFX0NBTExFUl9TUElMTFNfQ0FMTEVFIDAKKyNkZWZpbmUgRU5BQkxFX0NBTExF
Ul9TUElMTFNfQVJHQ09VTlQgMAorI2RlZmluZSBFTkFCTEVfVk1fQ09VTlRFUlMgMAorI2RlZmlu
ZSBFTkFCTEVfQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1FTlRfQ0FMTFMgMQorCiAvKiBUaGUgRlRM
ICpkb2VzIG5vdCogd29yayBvbiAzMi1iaXQgcGxhdGZvcm1zLiBEaXNhYmxlIGl0IGV2ZW4gaWYg
c29tZW9uZSBhc2tlZCB1cyB0byBlbmFibGUgaXQuICovCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICN1bmRlZiBFTkFCTEVfRlRMX0pJVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294722</attachid>
            <date>2016-11-14 11:14:33 -0800</date>
            <delta_ts>2016-12-07 17:20:41 -0800</delta_ts>
            <desc>Fixes to argument predictions</desc>
            <filename>reg-calls-wip156.patch</filename>
            <type>text/plain</type>
            <size>312237</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHkt
Zml4dXAtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
YWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgKGMgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7
CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyAoYyB8IDAp
OworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAg
IHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlv
biBzdW00KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gKGMg
fCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBi
LCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTYp
OworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zLCBzdW00LCBzdW01LCBzdW02
IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rp
b25zW2kgJSA2XShhLCBiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQg
PSB0ZXN0KDIsIDQwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQg
cmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtc3RhY2thcmdzLmpz
CShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorZnVuY3Rpb24gc3VtMShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiBhICsgYiArIGMgKyAo
ZCB8IDApOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjLCBk
KQoreworICAgIHJldHVybiBiICsgYSArIGMgKyAoZCB8IDApOworfQorCitub0lubGluZShzdW0y
KTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsg
YSArIGIgKyBjOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBj
LCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGluZShz
dW00KTsKKworZnVuY3Rpb24gc3VtNShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDAp
ICsgYSArIGIgKyBjOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBi
LCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGlu
ZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3Vt
NSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3Vs
dCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0
aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMp
Cit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0
aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyBjOworfQorCitub0lubGlu
ZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSAr
IGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBzdW00KGEsIGIsIGMpCit7Cisg
ICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1
bTUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW01
KTsKKworZnVuY3Rpb24gc3VtNihhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7Cit9
CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0z
LCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBs
ZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1leHRyYS1hcml0eS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYikKK3sKKyAgICByZXR1
cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIpCit7
CisgICAgcmV0dXJuIGIgKyBhOworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3Vt
MyhhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1
bmN0aW9uIHN1bTQoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1
bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitu
b0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBiKQoreworICAgIHJldHVybiBhICsg
YjsKK30KKworbm9JbmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIs
IHN1bTMsIHN1bTQsIHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQorewor
ICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsr
KQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoNDAsIDIsICJUZXN0Iik7CitpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwNCw2ICsyOTA0LDkgQEAg
aW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGludCByZXN1bHQ7CiAgICAg
cmVzdWx0ID0gcnVuSlNDKHZtLCBvcHRpb25zKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICB2bS0+ZHVtcENvdW50ZXJzKCk7CisjZW5kaWYKICAgICBpZiAoT3B0aW9uczo6Z2NBdEVu
ZCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaG9sZCB0aGUgQVBJIGxvY2sgdG8gZG8gYSBH
Qy4KICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNDIsNiArMTM0Miw3IEBACiAJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3Bw
ICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwICovOyB9OwogCQk2NUMwMjg1RDE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bj
b2RlLmggKi87IH07CisJCTY1REJGMzAyMUQ5MzM5MkIwMDNBRjRCMCAvKiBKSVRFbnRyeXBvaW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwMzAw
RjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVGQjUxMTcxODRFRUU3MDAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5j
cHAgKi87IH07CiAJCTY1RkI2M0E0MUM4RUEwOUMwMDIwNzE5QiAvKiBZYXJyQ2Fub25pY2FsaXpl
VW5pY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUE5NDYxNDFDOEU5RjZGMDBBNzIwOUEgLyogWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3Bw
ICovOyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNC
NEMxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY4OSw2ICszNjkwLDcgQEAK
IAkJNjJFM0Q1RUYxQjhEMEI3MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYyRUM5QkI0MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVm
ZmxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRnJh
bWVTaHVmZmxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyRUM5QkI1
MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NTAzMDBGMjFDNTAyNzQ2MDBENzg2RDcgLyogSklURW50cnlwb2lu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURW50cnlwb2ludHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8q
IEpTVHlwZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEw
MUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSB0ZXN0UmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIzMDUx
NDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RSZWdFeHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC01NTE3LDYgKzU1MTksNyBAQAogCQkJCTBGQUY3RUZCMTY1QkE5MTkw
MDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLywKIAkJCQlGRTE4N0EwQTFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCAqLywKIAkJCQlGRTE4N0EwQjFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggKi8sCisJCQkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4
NkQ3IC8qIEpJVEVudHJ5cG9pbnRzLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZCMTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTc2NDIsNiArNzY0NSw3IEBACiAJCQkJ
NzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5MERBNjdGMUM4RTMxNkEwMDI5NTE1OSAvKiBnZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dD
aGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2
QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAkocmV2aXNpb24g
MjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMyBAQCBwcml2YXRlOgogICAgICAgICBBU1NF
UlQocmVnLmlzU2V0KCkpOwogICAgIH0KIAorICAgIEFyZ3VtZW50UmVnVmFsdWUoT3JpZ2luIG9y
aWdpbiwgUmVnIHJlZywgVHlwZSB0eXBlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IEFyZ3VtZW50UmVnLCB0eXBlLCBvcmlnaW4pCisgICAgICAgICwgbV9yZWcocmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZy5pc1NldCgpKTsKKyAgICB9CisKICAgICBSZWcgbV9yZWc7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Miw5ICsxODIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNl
IEFyZ3VtZW50UmVnOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhh
c0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVudFJlZ1Zh
bHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91YmxlKQot
ICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1ZT4oKS0+
YXJndW1lbnRSZWcoKS5pc0dQUigpCisgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHZhbHVl
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSB8fCB2YWx1ZS0+dHlwZSgpID09IEludDMyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWRk
OgogICAgICAgICAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQogICAgICwgbV9o
YXNTZWVuQ2xvc3VyZShmYWxzZSkKICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAgLCBt
X2FsbG93U3R1YnModHJ1ZSkKKyAgICAsIG1fcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKGZhbHNlKQorICAgICwgbV9hcmd1bWVudHNMb2NhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQXJndW1lbnRzTG9jYXRpb246OlN0YWNrQXJncykpCiAgICAgLCBtX2lzTGlua2VkKGZhbHNl
KQogICAgICwgbV9jYWxsVHlwZShOb25lKQogICAgICwgbV9jYWxsZWVHUFIoMjU1KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbE1vZGUu
aCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KQEAgLTE1Nyw5ICsxNTgsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBtX3N0dWIgfHwgbV9jYWxsZWVPckNvZGVC
bG9jazsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7CiAKLSAgICB2b2lkIHNldFVwQ2FsbChDYWxs
VHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIp
CisgICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIEFyZ3VtZW50c0xvY2F0aW9u
IGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIHVuc2lnbmVkIGNhbGxl
ZUdQUikKICAgICB7CisgICAgICAgIEFTU0VSVCghaXNWYXJhcmdzQ2FsbFR5cGUoY2FsbFR5cGUp
IHx8IChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpKTsKKwogICAgICAgICBtX2NhbGxU
eXBlID0gY2FsbFR5cGU7CisgICAgICAgIG1fYXJndW1lbnRzTG9jYXRpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYXJndW1lbnRzTG9jYXRpb24pOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luOwogICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsKICAgICB9CkBAIC0y
NzUsNiArMjc5LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxU
eXBlPihtX2NhbGxUeXBlKTsKICAgICB9CiAKKyAgICB2b2lkIHNldFByb3ZpZGVzUmVnaXN0ZXJB
bmRTdGFja0FyZ3VtZW50cygpCisgICAgeworICAgICAgICBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBwcm92aWRlc1JlZ2lzdGVy
QW5kU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJvdmlk
ZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBBcmd1bWVudHNM
b2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXJndW1lbnRzTG9jYXRpb24+KG1fYXJndW1lbnRzTG9jYXRpb24pOworICAgIH0KKwor
ICAgIGJvb2wgYXJndW1lbnRzSW5SZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOworICAgIH0KKwogICAgIHVpbnQzMl90KiBh
ZGRyZXNzT2ZNYXhOdW1Bcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuICZtX21heE51
bUFyZ3VtZW50czsKQEAgLTMzOSw2ICszNjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNT
ZWVuQ2xvc3VyZSA6IDE7CiAgICAgYm9vbCBtX2NsZWFyZWRCeUdDIDogMTsKICAgICBib29sIG1f
YWxsb3dTdHVicyA6IDE7CisgICAgYm9vbCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3Vt
ZW50cyA6IDE7CisgICAgdW5zaWduZWQgbV9hcmd1bWVudHNMb2NhdGlvbiA6IDQ7CiAgICAgYm9v
bCBtX2lzTGlua2VkIDogMTsKICAgICB1bnNpZ25lZCBtX2NhbGxUeXBlIDogNDsgLy8gQ2FsbFR5
cGUKICAgICB1bnNpZ25lZCBtX2NhbGxlZUdQUiA6IDg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MTgsNiArMTgxOCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiAKICAgICAsIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXND
b25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2lzU3RyaWN0TW9kZShv
dGhlci5tX2lzU3RyaWN0TW9kZSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNl
KQogICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV91bmxpbmtlZENv
ZGUoKm90aGVyLm1fdm0sIHRoaXMsIG90aGVyLm1fdW5saW5rZWRDb2RlLmdldCgpKQogICAgICwg
bV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKQEAgLTE4ODMsNiArMTg4NCw3IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1faGFzQmVlbkNvbXBp
bGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9j
ay0+aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMoZmFsc2Up
CiAgICAgLCBtX2NvZGVUeXBlKHVubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpKQogICAgICwg
bV91bmxpbmtlZENvZGUobV9nbG9iYWxPYmplY3QtPnZtKCksIHRoaXMsIHVubGlua2VkQ29kZUJs
b2NrKQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKQEAgLTIzNTcsNiArMjM1
OSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1f
aGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxz
ZSkKICAgICAsIG1faXNTdHJpY3RNb2RlKGZhbHNlKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1
bWVudHMoZmFsc2UpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKICAgICAsIG1faGFz
RGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3N0ZXBwaW5nTW9kZShTdGVwcGluZ01v
ZGVEaXNhYmxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCwxNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOwogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgc2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIG1fcHJl
ZmVyc1N0YWNrQXJndW1lbnRzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHByZWZlcnNTdGFj
a0FyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVmZXJzU3RhY2tB
cmd1bWVudHM7CisgICAgfQorCiAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvZGVUeXBlPihtX2NvZGVUeXBlKTsKQEAgLTg1
MCw2ICs4NjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwg
OiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faXNTdHJpY3RN
b2RlIDogMTsKKyAgICBib29sIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzIDogMTsKICAgICB1bnNp
Z25lZCBtX2NvZGVUeXBlIDogMjsgLy8gQ29kZVR5cGUKIAogICAgIC8vIEludGVybmFsIG1ldGhv
ZHMgZm9yIHVzZSBieSB2YWxpZGF0aW9uIGNvZGUuIEl0IHdvdWxkIGJlIHByaXZhdGUgaWYgaXQg
d2Fzbid0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKICAgICAgICAgICAgIG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby0+ZGlzYWxsb3dTdHVicygp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8tPnNl
dFVwQ2FsbCgKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGwsIHN0dWJJbmZvLmNv
ZGVPcmlnaW4sIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86
OkNhbGwsIFN0YWNrQXJncywgc3R1YkluZm8uY29kZU9yaWdpbiwgbG9hZGVkVmFsdWVHUFIpOwog
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAKQEAgLTEwODksNyAr
MTA4OSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgIC8vIFdlICphbHdheXMqIGtub3cgdGhhdCB0aGUgZ2V0dGVyL3NldHRlciwgaWYgbm9u
LW51bGwsIGlzIGEgY2VsbC4KICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKLSAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3JhcmVEYXRh
LT5jYWxsTGlua0luZm8uZ2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZv
LmdldCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAg
ICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKQEAgLTExMTUsNyArMTEx
NSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykpKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5lZWQgdG8g
bWFrZSByb29tIGZvciB0aGUgQyBjYWxsIHNvIGFueSBvZiBvdXIgc3RhY2sgc3BpbGxhZ2UgaXNu
J3Qgb3ZlcndyaXR0ZW4uIEl0J3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIw
ODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVhciB2YWx1
ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9kZS0+bG9j
YWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBH
ZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFibGVzKCku
b3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
KSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBjYXNlIEZv
cndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBzaG91bGQg
Y2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBpdCBzaG91
bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJhc2ljQmxv
Y2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5kaWYKICAg
ICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlzOwogICAg
IFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjA4NDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2OTMsMjAgKzM2OTMsNjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFy
Z3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bw
b3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0gICAgICAg
IC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQg
d2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0T0sgPSB0
cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9udW1Bcmd1
bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJlZ2lzdGVy
IG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9kZXMsCisg
ICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5vZGVzIGFu
ZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhlIHJlbWFp
bmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUgZXhpdCBw
cm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNpbmNlCisg
ICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4gdGhvdWdo
IHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAgICAgLy8g
ZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9yZSB3ZSB3
YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBTZXRMb2Nh
bCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAgICAvLyBX
ZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJndW1lbnQg
bm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50IHRvIHRo
ZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAgIHVuc2ln
bmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMsIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZlY3RvcjxO
b2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0QXJndW1l
bnRSZWdpc3RlclF1ZXVlOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAgICAgZ2V0
QXJndW1lbnRSZWdpc3RlclF1ZXVlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1bWVudCkp
KSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50J3MgZm9y
IHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyUXVldWUuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRBcmd1bWVu
dFJlZ2lzdGVyUXVldWVbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5m
byh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3VtZW50UmVn
aXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAgICAgICAg
ICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQgaXMgbm93
IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAg
IC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Z2V0QXJndW1lbnRSZWdpc3RlclF1ZXVlLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBOb2Rl
KiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3RlclF1ZXVlW2ldOworICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJp
YWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAgICAgICAg
ICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQo
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNj
ZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IGFkZFRv
R3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1bWVudFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJn
dW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0ZXItPnNl
dFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpOworICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsKKyAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3VtZW50UmVn
aXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRz
OyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1
Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7
CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCiAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbYXJn
dW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9y
Q2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODAzLDggKzQ4NTEsMTAgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhlcmUgc2lu
Y2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1lbnRzIG9i
amVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAgICAgICAg
ICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVybigpOwog
ICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdzQ2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2RlOjpUYWls
KTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZvciBvdXIg
YXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAgICAgICAv
LyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFuZCBrZXB0
IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9u
LCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwg
dHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGNh
bGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5dGVj
b2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAgICAgICAg
IC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50IHRo
ZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQgY2xlYW4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVh
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDE0
ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3IgdGhyZWFk
ZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQgdmFyaWFi
bGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2ljIGJsb2Nr
LgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8gRmx1c2gs
IFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8vIFNldEFy
Z3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAgICAgIC8v
IEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9jYWwsIFBo
aSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1lbnQuCisg
ICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBtYXkgb25s
eSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
Ly8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0aGUgdmFy
aWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1c2gsIFBo
YW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhpLgotICAg
ICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290IGJsb2Nr
LiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0TG9jYWwg
dG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2NhbHMgYW5k
Ci0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRoZSB0YWls
IHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQgbWF5IGJl
IGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1bWVudFJl
Z2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJndW1lbnRS
ZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAgICAvLyBp
biB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0TG9jYWwg
dG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dlZCBieSBQ
aGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisgICAgICAg
ICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAgICAgICAg
ICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRoYXQgdGhl
IHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRvbUxvY2Fs
IGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlmCiAgICAg
ICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9sbG93ZWQg
YnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAgICAgIC8v
IE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2ZSByYW5n
ZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGlu
ZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUg
aW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3Vt
ZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRo
ZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAg
ICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1hbGx5LCBh
IFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2ZSByYW5n
ZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRoZSBhY3R1
YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1jYXNlZC4g
V2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2Rl
IHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLAorICAg
ICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBs
aWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3Vt
ZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBv
cGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3Rl
cjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBQ
aGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFyZ3VtZW50
UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgpAQCAtNTg2LDExICs1ODcsMTggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoK
ICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKLSAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3M6CiAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAorICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoK
KyAgICAgICAgLy8gV2UgcmVhZCBhbGwgYXJndW1lbnRzIGFmdGVyICJ0aGlzIi4KKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmcgPSAxOyBhcmcgPCBncmFwaC5tX2FyZ3VtZW50c09uU3RhY2suc2l6
ZSgpOyBhcmcrKykKKyAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChhcmcpKSk7CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAg
ICB3cml0ZShTaWRlU3RhdGUpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldEdldHRl
cjoKICAgICAgICAgcmVhZChHZXR0ZXJTZXR0ZXJfZ2V0dGVyKTsKICAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihHZXR0ZXJMb2MsIEdldHRlclNldHRlcl9nZXR0ZXIsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
CShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDggQEAgZW51bSBTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25SZXN1bHQgeyBTdHJ1YwogCiBlbnVtIE9wdGltaXphdGlvbkZpeHBvaW50U3RhdGUg
eyBCZWZvcmVGaXhwb2ludCwgRml4cG9pbnROb3RDb252ZXJnZWQsIEZpeHBvaW50Q29udmVyZ2Vk
IH07CiAKK2VudW0gU3RyZW5ndGhSZWR1Y2VBcmd1bWVudEZsdXNoZXMgeyBEb250T3B0aW1pemVB
cmd1bWVudEZsdXNoZXMsIE9wdGltaXplQXJndW1lbnRGbHVzaGVzIH07CisKIC8vIERlc2NyaWJl
cyB0aGUgZm9ybSB5b3UgY2FuIGV4cGVjdCB0aGUgZW50aXJlIGdyYXBoIHRvIGJlIGluLgogZW51
bSBHcmFwaEZvcm0gewogICAgIC8vIExvYWRTdG9yZSBmb3JtIG1lYW5zIHRoYXQgYmFzaWMgYmxv
Y2tzIG1heSBmcmVlbHkgdXNlIEdldExvY2FsLCBTZXRMb2NhbCwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2sp
OwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7
CisgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrKTsKKyAg
ICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nKTsKIAog
ICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAg
ICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9j
a0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldEZy
b21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3Vt
ZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWU6CiAgICAgY2Fz
ZSBMb2dTaGFkb3dDaGlja2VuVGFpbDoKICAgICBjYXNlIEdldER5bmFtaWNWYXI6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDggKzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAog
ICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxp
emF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5l
cmF0aW9uVGh1bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5r
R2VuZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVu
a0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RD
YWxsVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBlUHJv
ZmlsZXIoKSkKICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KEFTQ0lJTGl0ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAy
MDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzQ0LDYgKzE3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IERvdWJsZUNvbnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIEdl
dENhbGxlZToKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5n
dGg6CiAgICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw2ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3JtYXQpOwogICAg
IH0KKworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBub2RlLCB1aW50
MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9ICBE
YXRhRm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAgICBtX3Vz
ZUNvdW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZv
cm1hdDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOworICAgICAgICBt
X2NhbkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAgIG1fYm9ybkZv
ck9TUiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgQVNT
RVJUKG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9p
ZCBpbml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHRhZ0dQ
UiwgR1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFy
aWFudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4
dChkYXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQotICAgIEFTU0VSVChub2RlLT5o
YXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpID09IG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMp
KTsKICAgICBpZiAobm9kZS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkgewogICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnRyeUdldFZh
cmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhKSB7CkBA
IC0zNzEsNiArMzcwLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25z
dAogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS0+Y2FzZXNbaV0u
dmFsdWUsIGNvbnRleHQpLCAiOiIsIGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CiAgICAgICAgIG91
dC5wcmludChjb21tYSwgImRlZmF1bHQ6IiwgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgIH0KKyAg
ICBpZiAobm9kZS0+aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCksICIoIiwgR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSwgIikiKTsKICAg
ICBDbG9iYmVyU2V0IHJlYWRzOwogICAgIENsb2JiZXJTZXQgd3JpdGVzOwogICAgIGFkZFJlYWRz
QW5kV3JpdGVzKCp0aGlzLCBub2RlLCByZWFkcywgd3JpdGVzKTsKQEAgLTM5NCw3ICszOTUsNyBA
QCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgIldhc0hvaXN0ZWQiKTsKICAgICBvdXQucHJpbnQoIikiKTsKIAotICAgIGlm
IChub2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vz
c0RhdGEoKSkKKyAgICBpZiAoKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgJiYgbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NE
YXRhKCkpCiAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVt
cChub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAgICAg
ZWxzZSBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgb3V0LnByaW50KCIg
IHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkp
KTsKQEAgLTUwNCw4ICs1MDUsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0
LCBEdW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0
YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZp
Y2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4i
KTsKICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50
IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxz
ZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50
cyksICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZv
ciBjaGVja2luZzogIiwgbGlzdER1bXAobV9hcmd1bWVudHNGb3JDaGVja2luZyksICJcbiIpOwor
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIG9uIHN0YWNrOiAiLCBsaXN0RHVtcChtX2Fy
Z3VtZW50c09uU3RhY2spLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAg
IAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTE2MTYsMTIgKzE2MTksMTIgQEAg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgIHdoaWxlIChub2Rl
KSB7CiAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+
YWNjZXNzZXNTdGFjaygqdGhpcykpIHsKKyAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2so
KnRoaXMpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeyAgLy8gIFJlZ0ND
IFRvRG86IE5lZWQgYSBiZXR0ZXIgdGVzdAogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiByZXN1
bHQgPSBbJl0gKCkgLT4gVmFsdWVQcm9maWxlKiB7CiAgICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCk7Ci0gICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1bWVudHNb
YXJndW1lbnRdOworICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1l
bnRzT25TdGFja1thcmd1bWVudF07CiAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIGlm
IChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNo
RXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9y
aWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wg
bmVlZHNTY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQg
fHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVl
ZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1f
Y29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3Bs
YW47CkBAIC04NTgsOSArODU4LDkgQEAgcHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNj
ZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMg
aXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUg
bWFjaGluZSBjb2RlIGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVt
IGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1
c2gKLSAgICAvLyBub2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRB
cmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBp
bgorICAgIC8vIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBv
ZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNh
dXNlIG9mIHRoZSBGbHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBh
bGwgb2YgdGhlIEdldFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5l
IGNvZGUgYmxvY2sgdGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhl
IHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0
aW9uCkBAIC04ODMsMTEgKzg4MywxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBE
Q0UgdGhlIEFyaXRoQWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRo
aXMgd29uJ3QgZG8gdGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwg
OD4gbV9hcmd1bWVudHM7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c09uU3RhY2s7
CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c0ZvckNoZWNraW5nOwogICAgIAogICAg
IC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1
bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hG
b3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZh
cmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRl
ZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIFNl
Z21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKQEAgLTkzMyw2
ICs5MzQsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlv
blN0YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQ
bGFuU3RhZ2U6OkluaXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBt
X3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hl
czo6RG9udE9wdGltaXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3Jl
ZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1f
aGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9u
IDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSkKICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9h
cmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50
c09uU3RhY2tbaV07CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9y
bWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7
CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTksMTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkK
ICAgICB9CiB9CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8g
VGhpcyBjb2RlIGN1cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24g
aGVhZGVyIHdlIG5lZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZy
YW1lIHZpYSB0aGUgcHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIK
LSAgICAvLyBXZSdsbCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNh
bGxzIChzcGVjaWZpY2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUg
ZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlz
IGluCi0gICAgLy8gYm90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBh
biBleGNlcHRpb24gaGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7Ci19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVu
dHJ5KCkKIHsKICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAg
dm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVj
b3JkJiByZWNvcmQgPSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9
ICpyZWNvcmQuaW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwg
RnVuY3Rpb25QdHIobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3Jk
LnNsb3dDYWxsLCBGdW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
KHJlY29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1
ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDgg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNE
aXJlY3RDYWxsUmVjb3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmso
cmVjb3JkLmNhbGwsIGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAg
ICAgICAgaWYgKHJlY29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50
cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1l
bnRzTG9jYXRpb24oKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENh
bGxMb2NhdGlvbnMoCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAg
ICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0
LDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7
CisKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4o
KnRoaXMpOwogCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dF
cnJvciwgbV9jb2RlQmxvY2spOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX3N0YWNrQXJn
c0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKwor
ICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAg
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgIAor
ICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAg
IGxvYWQ2NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xv
dDo6dGhpc0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7
CisgICAgCisgICAganVtcChlbnRyeVBvaW50KTsKKyNlbmRpZgorCiAgICAgLy8gR2VuZXJhdGUg
c2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3Jz
KG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtNDA2LDI0ICs0MTYsODUgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0
KENvZGVCbG9jazo6TGF0ZVNocmluayk7CiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7
Ci0gICAgCisKKyAgICBKSVRFbnRyeVBvaW50cyBlbnRyeXBvaW50czsKKyAgICBlbnRyeXBvaW50
cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3Io
U3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1f
c3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikpOworICAgICAgICBtX2dy
YXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCBlbnRy
eXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKworICAgIHVuc2lnbmVk
IG51bVBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZv
ckFyZ3VtZW50Q291bnQoKTsKKyAgICBKdW1wTGlzdCBjb250aW51ZVJlZ2lzdGVyRW50cnk7Cisg
ICAgTGFiZWwgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTICsgMV07CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgLy8gU3Bp
bGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0
aGUgc3RhY2suCisgICAgICAgIGZvciAodW5zaWduZWQgZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5k
ZXggPSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIC0gMTsKKyAgICAg
ICAgICAgICBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBleHRy
YVJlZ2lzdGVyQXJndW1lbnRJbmRleC0tKSB7CisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50
c0VudHJ5cG9pbnRzW2V4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4ICsgMV0gPSBsYWJlbCgpOwor
ICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1
bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRl
eCksIGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
bmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzRXh0cmEpOworCisgICAgY29udGludWVS
ZWdpc3RlckVudHJ5LmFwcGVuZChqdW1wKCkpOworCisgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJp
dHlDaGVjayA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJn
c0FyaXR5KTsKKworICAgIExhYmVsIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHkodGhpcyk7CisKKyAg
ICBKdW1wIHJlZ2lzdGVyQ2hlY2tBcml0eTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJD
aGVja0FyaXR5ID0gYnJhbmNoMzIoTm90RXF1YWwsIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIo
bnVtUGFyYW1ldGVycykpOworICAgIGVsc2UgeworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkg
PSBicmFuY2gzMihCZWxvdywgYXJnQ291bnRSZWcsIFRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJz
KSk7CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzID0gbGFiZWwo
KTsKKyAgICB9CisgICAgCisgICAgTGFiZWwgcmVnaXN0ZXJFbnRyeU5vQXJpdHkodGhpcyk7CisK
KyAgICBpZiAobnVtUGFyYW1ldGVycyA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTKQorICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW251bVBhcmFt
ZXRlcnNdID0gcmVnaXN0ZXJFbnRyeU5vQXJpdHk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRo
aXMsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisKKyAgICBjb250aW51ZVJlZ2lzdGVyRW50cnkubGlu
ayh0aGlzKTsKKworICAgIExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKworICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlv
biA9PT0KICAgICAvLyBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCB3aXRob3V0IHBlcmZv
cm1pbmcgYW4gYXJpdHkgY2hlY2suCiAgICAgLy8gSWYgd2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4g
YXJpdHkgY2hlY2sgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgbW92ZWQgdGhlIHJldHVybiBhZGRyZXNz
LAogICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2so
dGhpcyk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19D
QUxMRUUpCisgICAgc3RvcmVQdHIoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJf
U1BJTExTX0FSR0NPVU5UKQorICAgIHN0b3JlMzIoYXJnQ291bnRSZWcsIHBheWxvYWRGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworI2VuZGlmCisKKyAgICBMYWJlbCBmcm9tU3Rh
Y2tFbnRyeSh0aGlzKTsKKyNlbmRpZgorICAgIAorICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwogICAgIC8vIFBsYW50
IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFj
ay4KLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3Jh
cGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QxKTsKLSAgICBKdW1wIHN0YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFi
c29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCkgLSAxKS5v
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgSnVtcCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRy
KEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgLy8gTW92ZSB0aGUgc3RhY2sgcG9pbnRlciBk
b3duIHRvIGFjY29tbW9kYXRlIGxvY2FscwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9ncmFw
aC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtNDQ2LDM0ICs1MTcsMTIx
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgLy8gd2UgbmVlZCB0
byBjYWxsIG91dCB0byBhIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyB0aGUgU3RhY2tPdmVyZmxv
d0Vycm9yLgogICAgIHN0YWNrT3ZlcmZsb3cubGluayh0aGlzKTsKIAotICAgIGVtaXRTdG9yZUNv
ZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7Ci0KICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAgbV9zcGVjdWxhdGl2
ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlv
blRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGp1bXAocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eSk7CisjZWxzZQorICAgIEp1bXAg
Y29udGludWVUb0FyaXR5Q2hlY2sgPSBqdW1wKCk7CisjZW5kaWYKKworICAgIEp1bXBMaXN0IHJl
Z2lzdGVyQXJpdHlOZWVkc0ZpeHVwOworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICByZWdpc3RlckNoZWNr
QXJpdHkubGluayh0aGlzKTsKKyAgICAgICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAuYXBwZW5k
KGJyYW5jaDMyKEJlbG93LCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAgICAgICAgLy8gV2UgaGF2ZSBleHRyYSByZWdpc3RlciBh
cmd1bWVudHMuCisKKyAgICAgICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0
aW9uIGRvZXMgbm90IGNoZWNrIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwor
ICAgICAgICAvLyBoYXZlIGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUg
ZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQorICAgICAgICAvLyBkZXRl
cm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBv
ciBoYXZlIGFscmVhZHkgY2hlY2tlZCkuCisgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFy
aXR5IGNoZWNrIGlzIG5lY2Vzc2FyeSwgd2UgZW50ZXIgaGVyZS4KKyAgICAgICAgCisgICAgICAg
IG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzID0gbGFiZWwoKTsKKworICAgICAg
ICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzRXh0cmEpOworICAgICAgICAKKyAg
ICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNzZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmdJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICBicmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihhcmdJbmRleCkpLmxpbmtUbyhtYWluRW50cnksIHRoaXMpOworICAgICAgICAgICAg
ZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVy
Rm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgfQorICAg
ICAgICBqdW1wKG1haW5FbnRyeSk7CisgICAgfQorICAgIAorICAgIC8vIEZhbGwgdGhyb3VnaAor
CisgICAgSnVtcExpc3QgYXJpdHlPSzsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgewor
ICAgICAgICAvLyBUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRlci4KKyAg
ICAgICAgdW5zaWduZWQgcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQgPSBzdGQ6Om1pbihudW1Q
YXJhbWV0ZXJzIC0gMSwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7
CisgICAgICAgIExhYmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBsYWJlbCgp
OworCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8PSByZWdp
c3RlckFyZ3VtZW50Rml4dXBDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIHJlZ2lzdGVy
QXJndW1lbnRzRW50cnlwb2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJp
dHlGaXh1cDsKKyAgICB9CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdz
QXJpdHkpOworCisgICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAubGluayh0aGlzKTsKKworICAg
IGlmIChudW1QYXJhbWV0ZXJzID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworICAgIAorICAg
IHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIEVO
QUJMRShWTV9DT1VOVEVSUykKKyAgICBKdW1wIGNvbnRpbnVlVG9TdGFja0FyaXR5Rml4dXAgPSBq
dW1wKCk7CisjZW5kaWYKKworICAgIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgp
OworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKworI2lm
IEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwLmxpbmso
dGhpcyk7CisjZW5kaWYKICAgICAKLSAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEg
ZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwot
ICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0
IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5Ci0gICAgLy8gZGV0ZXJtaW5lIHRo
ZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBh
bHJlYWR5IGNoZWNrZWQpLgotICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNrIGlz
IG5lY2Vzc2FyeSwgd2UgZW50ZXIgaGVyZS4KLSAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMgZnJv
bSBhIGN0aSBjYWxsIHRvIGEgREZHIHN0eWxlIG9wZXJhdGlvbiAobm9ybWFsIEMgY2FsbGluZyBj
b252ZW50aW9ucykuCi0gICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKLSAgICBjb21waWxlRW50
cnkoKTsKKyNpZiAhVVNFKEpTVkFMVUU2NCkKKyAgICBjb250aW51ZVRvQXJpdHlDaGVjay5saW5r
KHRoaXMpOworI2VuZGlmCisgICAgCisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAg
IGxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKSkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKKyAgICBhcml0
eU9LLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBUcnVzdGVk
SW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpKTsKKworICAgIGluY3JlbWVudENv
dW50ZXIodGhpcywgVk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7CisgICAgCiAgICAgZW1pdFN0b3Jl
Q29kZU9yaWdpbihDb2RlT3JpZ2luKDApKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIG1fc3BlY3VsYXRpdmUt
PmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9j
ay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJh
dGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaWYgKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGJyYW5j
aFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNo
ZWNrLCB0aGlzKTsKKyAgICBhcml0eU9LLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSk7CiAgICAgbW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICBtX2NhbGxBcml0eUZpeHVwID0gY2FsbCgpOworCisgICAgSnVtcCB0b0Zp
bGxSZWdpc3RlcnMgPSBqdW1wKCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1fc3RhY2tB
cmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OlN0YWNrQXJnc05vQXJpdHkpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKKyAg
ICBhcml0eU9LLmxpbmsodGhpcyk7CisgICAgdG9GaWxsUmVnaXN0ZXJzLmxpbmsodGhpcyk7CisK
KyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworICAg
IGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKworICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgIGxv
YWQ2NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6
dGhpc0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisK
KyAgICBqdW1wKGZyb21TdGFja0VudHJ5KTsKKyNlbHNlCisgICAgYXJpdHlPSy5saW5rVG8oZnJv
bUFyaXR5Q2hlY2ssIHRoaXMpOworCiAgICAganVtcChmcm9tQXJpdHlDaGVjayk7CisjZW5kaWYK
ICAgICAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZl
LT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwpAQCAt
NTAyLDEwICs2NjAsMzEgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAg
ICAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVj
ayk7CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
YWluRW50cnlDb2RlUHRyID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVudHJ5Tm9B
cml0eSk7CisjZWxzZQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnlDb2RlUHRy
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpOworI2VuZGlmCisgICAgSklURW50
cnlQb2ludHMgZW50cnlwb2ludHM7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0
ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBtYWluRW50cnlDb2RlUHRyKTsKKyAgICBlbnRy
eXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywgbGlua0J1
ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncykpOwor
ICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LCBs
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spKTsKKyAg
ICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQs
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKKyAgICBl
bnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZl
ci0+bG9jYXRpb25PZihtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrKSk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAg
ICAgICAgICAgZW50cnkgPSBtYWluRW50cnlDb2RlUHRyOworICAgICAgICBlbHNlIGlmIChyZWdp
c3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAg
ZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2lu
dHNbYXJnQ291bnRdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBl
bnRyeXBvaW50cy5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVG
b3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgIH0KIAogICAgIG1fZ3JhcGgu
bV9wbGFuLmZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAg
ICAgbV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVy
KSwgd2l0aEFyaXR5Q2hlY2spOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2pp
dENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklU
Q29tcGlsZXI6OmRpc2Fzc2VtYmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pzRGlyZWN0Q2Fs
bHMuYXBwZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93UGF0aCwgaW5mbykpOwogICAg
IH0KICAgICAKKyAgICB2b2lkIGFkZEpTRGlyZWN0Q2FsbChDYWxsIGNhbGwsIENhbGwgc2xvd0Nh
bGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgeworICAgICAgICBt
X2pzRGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93Q2FsbCwg
c2xvd1BhdGgsIGluZm8pKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0RpcmVjdFRhaWxD
YWxsKFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCwgQ2FsbCBjYWxsLCBMYWJlbCBzbG93UGF0
aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9qc0RpcmVjdFRhaWxDYWxs
cy5hcHBlbmQoSlNEaXJlY3RUYWlsQ2FsbFJlY29yZChwYXRjaGFibGVKdW1wLCBjYWxsLCBzbG93
UGF0aCwgaW5mbykpOwpAQCAtMjY3LDcgKzI3Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI7CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVt
ZW50YXRpb24gdG8gY29tcGlsZS4KLSAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQg
Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVFbnRyeUV4
ZWN1dGlvbkZsYWcoKTsKICAgICB2b2lkIGNvbXBpbGVCb2R5KCk7CkBAIC0zMTgsNyArMzIyLDE4
IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgSlNE
aXJlY3RDYWxsUmVjb3JkKENhbGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgs
IENhbGxMaW5rSW5mbyogaW5mbykKKyAgICAgICAgICAgIDogY2FsbChjYWxsKQorICAgICAgICAg
ICAgLCBzbG93Q2FsbChzbG93Q2FsbCkKKyAgICAgICAgICAgICwgc2xvd1BhdGgoc2xvd1BhdGgp
CisgICAgICAgICAgICAsIGluZm8oaW5mbykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBoYXNTbG93Q2FsbCgpIHsgcmV0dXJuIHNsb3dDYWxsLm1fbGFiZWwuaXNTZXQoKTsg
fQorCiAgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgQ2FsbCBzbG93Q2FsbDsKICAgICAgICAg
TGFiZWwgc2xvd1BhdGg7CiAgICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwpAQCAt
MzMxLDcgKzM0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGluZm8oaW5mbykKICAgICAg
ICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hh
YmxlSnVtcDsKICAgICAgICAgQ2FsbCBjYWxsOwogICAgICAgICBMYWJlbCBzbG93UGF0aDsKQEAg
LTM1NSw3ICszNzAsMTAgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SW5mbz4gbV9leGNlcHRpb25IYW5kbGVyT1NSRXhpdENhbGxTaXRlczsKICAgICAKICAg
ICBDYWxsIG1fY2FsbEFyaXR5Rml4dXA7Ci0gICAgTGFiZWwgbV9hcml0eUNoZWNrOworICAgIExh
YmVsIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzOworICAgIExhYmVsIG1fcmVn
aXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2s7CisgICAgTGFiZWwgbV9zdGFja0FyZ3NBcml0eU9LRW50
cnk7CisgICAgTGFiZWwgbV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjazsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3BlY3VsYXRpdmVKSVQ+IG1fc3BlY3VsYXRpdmU7CiAgICAgUENUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1Jl
ZlB0cjxKSVRDb2RlPiBqaXRDb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1
ZmZlciwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmluYWxpemVy
OjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBKSVRFbnRyeVBvaW50
cyYgZW50cnlwb2ludHMpCiAgICAgOiBGaW5hbGl6ZXIocGxhbikKICAgICAsIG1faml0Q29kZShq
aXRDb2RlKQogICAgICwgbV9saW5rQnVmZmVyKFdURk1vdmUobGlua0J1ZmZlcikpCi0gICAgLCBt
X3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNrKQorICAgICwgbV9lbnRyeXBvaW50cyhlbnRy
eXBvaW50cykKIHsKIH0KIApAQCAtNTYsOSArNTcsOCBAQCBzaXplX3QgSklURmluYWxpemVyOjpj
b2RlU2l6ZSgpCiAKIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZSgpCiB7Ci0gICAgbV9qaXRD
b2RlLT5pbml0aWFsaXplQ29kZVJlZigKLSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlu
a0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhK
SVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNvZGVSZWYgPSBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29k
ZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9j
aywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSk7CisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXpl
RW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMp
KTsKICAgICAKICAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAg
ICAgCkBAIC02OSwxMCArNjksMTEgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAog
Ym9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogewotICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3dpdGhBcml0eUNoZWNrLmlzRW1wdHlWYWx1ZSgpKTsKLSAgICBtX2ppdENvZGUtPmlu
aXRpYWxpemVDb2RlUmVmKAotICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVy
LCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUo
bV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIG1f
d2l0aEFyaXR5Q2hlY2spOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2VudHJ5cG9pbnRzLmVudHJ5
Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5pc0VtcHR5VmFsdWUoKSk7CisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVy
LCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUo
bV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSk7CisKKyAgICBtX2pp
dENvZGUtPmluaXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJl
ZiwgbV9lbnRyeXBvaW50cykpOworCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgJKHJldmlzaW9uIDIwODQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBj
bGFzcyBKSVRGaW5hbGl6ZXIgOiBwdWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRG
aW5hbGl6ZXIoUGxhbiYsIFBhc3NSZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
QnVmZmVyPiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJ
VEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExp
bmtCdWZmZXI+LCBKSVRFbnRyeVBvaW50cyYpOwogICAgIHZpcnR1YWwgfkpJVEZpbmFsaXplcigp
OwogICAgIAogICAgIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAtNDUsMTAgKzQ1LDEw
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7Ci0gICAg
CisKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxM
aW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0
aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRyeXBvaW50czsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUt
PmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlh
bFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgp
LmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUt
PmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7
CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAg
ICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9y
ZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2Nh
bCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCldOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNl
dExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRB
cmd1bWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSB8fCBub2RlICE9IG1fZ3JhcGgubV9hcmd1bWVudHNP
blN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9j
a0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFm
bHVzaEFjY2Vzc0RhdGEpCkBAIC0xMTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
aWYgKGluaXRpYWxBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+
b3AoKSAhPSBTZXRMb2NhbCk7IC8vIFdlIHNob3VsZCBoYXZlIGluc2VydGVkIGEgRmx1c2ggYmVm
b3JlIHRoaXMhCiAgICAgICAgICAgICBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQp
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICBpbml0aWFsQWNjZXNz
Tm9kZXMub3BlcmFuZChvcGVyYW5kKSA9IG5vZGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAg
ICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAg
ICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFBoYW50
b21Mb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVk
Tm9kZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWluaWZpZWROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDggQEAgTWlu
aWZpZWROb2RlIE1pbmlmaWVkTm9kZTo6ZnJvbU5vZGUoTm9kZQogICAgIHJlc3VsdC5tX29wID0g
bm9kZS0+b3AoKTsKICAgICBpZiAoaGFzQ29uc3RhbnQobm9kZS0+b3AoKSkpCiAgICAgICAgIHJl
c3VsdC5tX2luZm8gPSBKU1ZhbHVlOjplbmNvZGUobm9kZS0+YXNKU1ZhbHVlKCkpOworICAgIGVs
c2UgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgcmVzdWx0
Lm1faW5mbyA9IDA7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBo
YW50b21EaXJlY3RBcmd1bWVudHMgfHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1l
bnRzKTsKICAgICAgICAgcmVzdWx0Lm1faW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWlu
aWZpZWRHcmFwaChOb2RlVAogICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFu
dG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKKyAg
ICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBib29sIE5v
ZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAgY2FzZSBHZXRMb2NhbDoKICAg
ICBjYXNlIFNldExvY2FsOgogICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1
bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAg
ICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MTksNiArODE5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
VmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJik7CiAgICAgYm9vbCBhY2Nlc3Nlc1N0YWNrKEdyYXBo
JiBncmFwaCkKICAgICB7CisgICAgICAgIGlmIChvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgcmV0dXJuIGhhc1ZhcmlhYmxl
QWNjZXNzRGF0YShncmFwaCk7CiAgICAgfQogICAgIApAQCAtODM3LDYgKzg0MCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxWYXJpYWJsZUFjY2Vzc0RhdGEqPigpLT5m
aW5kKCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc2V0VmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUpCisgICAgeworICAgICAgICBtX29wSW5mbyA9IHZhcmlh
YmxlOworICAgIH0KKyAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHZhcmlhYmxlQWNjZXNzRGF0YSgpLT5sb2NhbCgpOwpAQCAtMTIwMCw2ICsx
MjA4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShx
dWVyaWVkVHlwZSgpKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNBcmd1bWVudFJlZ2lzdGVy
SW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rl
cjsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAg
IHJldHVybiBtX29wSW5mbzIuYXM8dW5zaWduZWQ+KCk7CisgICAgfQorICAgIAogICAgIGJvb2wg
aGFzUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXJlc3VsdCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhDcmVhdGVUaGlzLCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVy
YXRlIHNpbmNlIHdlJ3JlIHJldHVybmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhHZXRD
YWxsZWUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudFJlZ2lzdGVy
LCBOb2RlUmVzdWx0SlMgLyogfCBOb2RlTXVzdEdlbmVyYXRlICovKSBcCiAgICAgXAogICAgIC8q
IE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQg
dG9nZXRoZXIgdXNpbmcgUGhpIG5vZGVzLiAqL1wKICAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQg
YXJlIHBhcnQgb2YgdGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lz
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
QXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTEgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJp
bGl0eUNhbGN1bGF0b3I6OmV4ZQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3Bl
cmFuZChub2RlLT5sb2NhbCgpKS5zZXROb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIE1vdkhpbnQ6IHsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMu
b3BlcmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDMyIEBAIHB1
YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0g
dGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZ3VtZW50KSB7
CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJn
dW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4g
aWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHks
IGFsd2F5cyBoYXZlIGFuIGFyZ3VtZW50IG5vZGUgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCisg
ICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1th
cmd1bWVudF07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9v
dC0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJn
dW1lbnQsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRd
ID0gbm9kZTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGU7CisgICAgICAgICAgICBOb2RlKiBzdGFj
a05vZGU7CisgICAgICAgICAgICBpZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFw
cGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBHZXRBcmd1
bWVudFJlZ2lzdGVyLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1
bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSk7CisgICAg
ICAgICAgICAgICAgc3RhY2tOb2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBvcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAg
ICAgICAgICAgICAgIEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAg
ICAgIHN0YWNrTm9kZSA9IG5vZGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdID0gc3RhY2tOb2RlOwogICAgICAg
ICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251
bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDkgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIHBlcmZvcm1DRkEoZGZnKTsKICAg
ICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKGRmZyk7CiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7
CisgICAgZGZnLm1fc3RyZW5ndGhSZWR1Y2VBcmd1bWVudHMgPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1
c2hlczsKICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOworICAg
IGNoYW5nZWQgfD0gcGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKGRmZyk7CiAgICAgY2hhbmdlZCB8
PSBwZXJmb3JtTG9jYWxDU0UoZGZnKTsKICAgICAKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAvLyBBbGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVu
dHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVseSByZWFkLgorICAgICAgICAgICAgLy8gQWxs
IG9mIHRoZSBvdXRlcm1vc3Qgc3RhY2sgYXJndW1lbnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmlu
aXRlbHkgcmVhZC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgbV9yZWFk
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcHJvZmlsZSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmddLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAg
IGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpIHx8IG5vZGUtPm9wKCkgPT0gR2V0
QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uRnJvbVZhbHVl
KG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXNbaV0pKTsKICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJs
ZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNl
bnRJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyT25seSkpCisgICAgICAgICAgICAg
ICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVj
SW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6
IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpA
QCAtOTYyLDYgKzk3Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAg
ICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgog
ICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAg
ICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTcsOCArMTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLy8KICAg
ICAgICAgLy8gRm9yIG91ciBwdXJwb3NlcyBoZXJlLCB0aGUgaW1wcmVjaXNpb24gaW4gdGhlIGFs
aWFzaW5nIGlzIGhhcm1sZXNzLiBJdCBqdXN0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgLy8gbWF5
IG5vdCBkbyBhcyBtdWNoIFBoaSBwcnVuaW5nIGFzIHdlIHdhbnRlZC4KLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IGxpdmVBdEhlYWQuYXRJbmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07
KQotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0
SW5kZXgoMCkuYXJndW1lbnQoaSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2ZUF0SGVh
ZC5hdEluZGV4KDApLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlm
IChpID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAg
ICAgICAgICAgICAvLyBTdGFjayBhcmd1bWVudHMgYXJlIGxpdmUgYXQgdGhlIGhlYWQgb2Ygcm9v
dC4KKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhl
YWQuYXRJbmRleCgwKS5hcmd1bWVudChpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIC8vIE5leHQgaWRlbnRpZnkgd2hlcmUgd2Ugd291bGQgd2FudCB0byBz
aW5rIFB1dFN0YWNrcyB0by4gV2Ugc2F5IHRoYXQgdGhlcmUgaXMgYSBkZWZlcnJlZAogICAgICAg
ICAvLyBmbHVzaCBpZiB3ZSBoYWQgYSBQdXRTdGFjayB3aXRoIGEgZ2l2ZW4gRmx1c2hGb3JtYXQg
YnV0IGl0IGhhc24ndCBiZWVuIG1hdGVyaWFsaXplZCB5ZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9
IG5hbWU7CiAgICAgICAgIG1fZGF0YVtpbmRleF0uc3BpbGxPcmRlciA9IHNwaWxsT3JkZXI7CiAg
ICAgfQorCiAgICAgdm9pZCByZWxlYXNlKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHJlbGVh
c2VBdEluZGV4KEJhbmtJbmZvOjp0b0luZGV4KHJlZykpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgKyttX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJU
KG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKICAgICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJ
RCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4
KHJlZyk7CkBAIC0yMzYsNiArMjM4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBt
X2JhbmstPmlzTG9ja2VkQXRJbmRleChtX2luZGV4KTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdW5sb2NrKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+
dW5sb2NrQXRJbmRleChtX2luZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9p
ZCByZWxlYXNlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNl
QXRJbmRleChtX2luZGV4KTsKQEAgLTI5OCw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2Nr
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5V
TV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAg
ICAgLS1tX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKKyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbmFtZUF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoaW5kZXggPCBOVU1fUkVHUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMgYW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBX
ZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRpbmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwg
YW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5k
IHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LiBXZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBieSBkaXJlY3RseQorICAgICAgICAvLyBhZGRpbmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1h
cHBpbmcgaGFzaCBtYXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFi
bG9jaykKQEAgLTgzLDE0ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25t
ZW50IGZvciBldmVyeSBsb2NhbC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5v
cCgpICE9IFNldEFyZ3VtZW50ICYmIG5vZGUtPm9wKCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxk
Tm9kZTsKKyAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKQEAgLTEwMSw5ICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hcmd1bWVudEdldHRlcnMuYWRkKGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3
RGVmKAotICAgICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZh
cmlhYmxlKSwgYmxvY2ssIGNoaWxkTm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlKQorICAgICAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zc2FWYXJpYWJsZUZvclZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJs
b2NrLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKQEAgLTI5NCw3ICsyOTgsMTMgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJs
ZS0+bG9jYWwoKSkgPSBjaGlsZDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IG5v
ZGU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fYXJndW1lbnRHZXR0ZXJzLmNvbnRhaW5zKG5vZGUpKTsKICAgICAgICAgICAgICAgICAgICAg
dmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQobm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2FsKSA9
IG5vZGU7CkBAIC0zODIsMTcgKzM5MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+
c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXpl
KG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnNpemUo
KSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZs
dXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBp
bmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0p
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKLSAgICAg
ICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CisgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOworICAgICAgICAgICAgICAgIGZvcm1hdCA9IHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3Rh
Y2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJn
dW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9h
ZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmls
aW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShy
ZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2Fz
ZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAg
ICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAg
IGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIAogICAgIENh
bGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsK
LSAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bGVlUGF5bG9hZEdQUik7CisgICAgaW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBTdGFja0FyZ3Ms
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CiAgICAgCiAgICAgYXV0
byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZdICgpIHsKICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICB9CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgp
OwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC01NjA0LDYgKzU2MDQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKKyAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJv
dW5kczoKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgInVuZXhwZWN0ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NTIoR1BSUmVnIHNvdQogICAgIHVubG9jayhmcHIpOwog
fQogCi1HUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKK0dQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcgZ3ByVG9Vc2Up
CiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxS
ZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9t
VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAgICAgCiAgICAgc3dpdGNoIChpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUo
Z3ByVG9Vc2UpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKQEAgLTEyMCw3ICsxMjAs
MTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAv
LyBJZiB0aGUgcmVnaXN0ZXIgaGFzIGFscmVhZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0YWtl
IGEgY29weS4KICAgICAgICAgLy8gSWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFjZSwg
c28gbWFyayBvbiB0aGUgaW5mbyB0aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdEludDMy
LCBub3QgRGF0YUZvcm1hdEpTSW50MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3By
KSkgewotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOworICAgICAgICAgICAgbV9qaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdwclRvVXNlICE9
IEludmFsaWRHUFJSZWcgJiYgZ3ByICE9IGdwclRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcg
cmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOwogICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTEzOCw2ICsxNDMsMTEgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAh
PSBncHJUb1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRv
VXNlKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAg
ICAgICByZXR1cm4gZ3ByOwogICAgIH0KQEAgLTYzNSw2ICs2NDUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlKQogewogICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7Cisg
ICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAg
Ym9vbCBpc1ZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxz
ZTsKICAgICBib29sIGlzVGFpbCA9IGZhbHNlOwpAQCAtNzE3LDcgKzcyOCw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIEdQUlJlZyBjYWxsZWVHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOwot
ICAgIAorCisgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpERkdDYWxsZXIpOworCiAg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoaXNEaXJlY3Qp
IHsKQEAgLTczNiw2ICs3NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7CiAgICAgICAgIHVuc2lnbmVkIG51bVVz
ZWRTdGFja1Nsb3RzID0gbV9qaXQuZ3JhcGgoKS5tX25leHRNYWNoaW5lTG9jYWw7CiAgICAgICAg
IAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkNhbGxWYXJhcmdzKTsKICAg
ICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCkBAIC04MTMsNyArODI3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgdXNl
KG5vZGUtPmNoaWxkMygpKTsKIAogICAgICAgICAvLyBOb3cgc2V0IHVwIHRoZSAidGhpcyIgYXJn
dW1lbnQuCi0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNBcmd1bWVudCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNBcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDIoKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOwogICAg
ICAgICBHUFJSZWcgdGhpc0FyZ3VtZW50R1BSID0gdGhpc0FyZ3VtZW50LmdwcigpOwogICAgICAg
ICB0aGlzQXJndW1lbnQudXNlKCk7CiAgICAgICAgIApAQCAtODQ0LDYgKzg1OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpc1RhaWwpIHsKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
VGFpbENhbGwpOwogICAgICAgICAgICAgRWRnZSBjYWxsZWVFZGdlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAwKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBj
YWxsZWVFZGdlKTsKICAgICAgICAgICAgIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKQEAgLTg2
Nyw3ICs4ODIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0
YW50KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxl
ZVNhdmVSZWdpc3RlcnMobV9qaXQuY29kZUJsb2NrKCkpOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAgIC8v
IENhbGxFdmFsIGlzIGhhbmRsZWQgd2l0aCB0aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBh
c3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKQEAgLTg3OCwyMiArODk0LDY5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsr
aSkKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKworICAgICAgICAgICAgaW5j
cmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAwOykgewor
ICAgICAgICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07
CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2UsIHBsYXRm
b3JtQXJnR1BSKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChhcmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwgcGxhdGZv
cm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZyk7CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGZy
ZWUgdGhlIG5vbi1hcmd1bWVudCByZWdpc3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAg
ICAgICBpZiAocGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAg
ICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQo
YXJnR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJndW1lbnQg
ZWRnZXMgZm9yIGFyZ3VtZW50cyBwYXNzZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgYXJnR1BSID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7
CisgICAgICAgICAgICAgICAgaWYgKGFyZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAg
ICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJl
bltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgICAgIHVzZShh
cmdFZGdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IGFsbG9jYXRlKGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIobnVtUGFzc2VkQXJncyksIGFyZ0NvdW50R1BSKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxM
U19BUkdDT1VOVCkKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRHUFIsIEpJVENv
bXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKTsKKyNlbmRpZgorICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb24gPSBhcmd1bWVudHNM
b2NhdGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAg
ICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGkpOworCisgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGpzVW5kZWZpbmVkKCksIEpJVENvbXBpbGVyOjpjYWxsZWVBcmd1bWVudFNsb3QoaSkpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgYWxsb2NhdGUocGxhdGZv
cm1BcmdHUFIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBp
ZiAoIWlzVGFpbCB8fCBpc1ZhcmFyZ3MgfHwgaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICBF
ZGdlIGNhbGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApOwotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpOwogICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNhbGxlZS51
c2UoKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpjYWxs
ZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjaWYgIUVOQUJMRShDQUxMRVJf
U1BJTExTX0NBTExFRSkKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJn
cykKKyNlbmRpZgorICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBp
bGVyOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CiAKKyAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gIT0g
U3RhY2tBcmdzKQorICAgICAgICB1bmxvY2tBcmd1bWVudFJlZ2lzdGVycygpOworCiAgICAgQ29k
ZU9yaWdpbiBzdGF0aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgQVNTRVJU
KCFpc1RhaWwgfHwgIXN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUgfHwgIXN0YXRpY09yaWdp
bi5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkpOwogICAgIEFT
U0VSVCghaXNFbXVsYXRlZFRhaWwgfHwgKHN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUgJiYg
c3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMo
KSkpOwpAQCAtOTE2LDcgKzk3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICB9OwogICAgIAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKGNhbGxUeXBlLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxl
ZUdQUik7CisgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xv
Y2F0aW9uLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CiAKICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBDYWxsRXZhbCkgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNh
bGwgb3BlcmF0aW9uQ2FsbEV2YWwgYnV0IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBw
YXJhbWV0ZXIgYXJlYSBpbgpAQCAtOTU5LDYgKzEwMjIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgp
OworCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsK
KyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2Fs
bFNpdGUpOwogICAgICAgICAgICAgCkBAIC05NjksNyArMTAzNSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgICAgIHBh
dGNoYWJsZUp1bXAubV9qdW1wLmxpbmtUbyhzbG93UGF0aCwgJm1faml0KTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNhbGxM
aW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
SW52YWxpZEdQUlJlZyk7CkBAIC05ODQsMjQgKzEwNTAsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okxh
YmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgbV9qaXQuZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsID0gbV9qaXQubmVhckNhbGwoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAgICAgCisKICAgICAgICAgSklUQ29tcGlsZXI6
OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQubGFiZWwoKTsKKwogICAgICAgICBpZiAoaXNYODYoKSkK
LSAgICAgICAgICAgIG1faml0LnBvcChKSVRDb21waWxlcjo6c2VsZWN0U2NyYXRjaEdQUihjYWxs
ZWVHUFIpKTsKKyAgICAgICAgICAgIG1faml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKwor
ICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4g
bm9uQXJnR1BSMAorICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5l
YXJDYWxsKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2Fs
bCwgY2FsbExpbmtJbmZvLCBjYWxsZWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAg
ICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzZXRS
ZXN1bHRBbmRSZXNldFN0YWNrKCk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5hZGRKU0RpcmVj
dENhbGwoY2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgbV9qaXQuYWRk
SlNEaXJlY3RDYWxsKGNhbGwsIHNsb3dDYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZvKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTEwMzAsMTQgKzExMDEsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlciBjYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1ZmZsZURhdGEpOwogICAgICAgICBjYWxs
RnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpy
ZWdUMCkpOwogICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVn
VDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLQotICAgICAgICBpZiAoaXNUYWls
KQotICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlzIG5l
ZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKLSAgICB9Cisg
ICAgfSBlbHNlIGlmIChpc1RhaWwpCisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXMoKTsKIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4g
cmVnVDIKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUg
aW4gbm9uQXJnR1BSMAogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVh
ckNhbGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNDEzOSwxOCArNDIwNiw1MyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdl
dENhbGxlZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWdXaXRoVmFsdWUgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgewor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZpcnR1YWxSZWdpc3RlciA9IFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAgICAgICAgR1BSUmVnIGNh
bGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChjYWxsZWVSZWcpICYmIG1fZ3Bycy5uYW1lKGNh
bGxlZVJlZykgPT0gY2FsbGVlVmlydHVhbFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgIGNhbGxl
ZVJlZ1dpdGhWYWx1ZSA9IGNhbGxlZVJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKGNhbGxlZVJlZ1dpdGhWYWx1ZSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
Y2FsbGVlUmVnV2l0aFZhbHVlLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9ncHJzLnVu
bG9jayhjYWxsZWVSZWdXaXRoVmFsdWUpOworICAgICAgICAgICAgbV9ncHJzLnJlbGVhc2UoY2Fs
bGVlUmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBH
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIEdQ
UlJlZyBhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
CisgICAgICAgIGlmICghbV9ibG9jay0+aW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBhcmd1bWVudENvdW50VmlydHVhbFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291
bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpICYmIG1f
Z3Bycy5uYW1lKGFyZ3VtZW50Q291bnRSZWcpID09IGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0
ZXIpCisgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSA9IGFyZ3VtZW50
Q291bnRSZWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhcmd1bWVudENvdW50
UmVnV2l0aFZhbHVlID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVu
ZDMyVG9QdHIoYXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSwgcmVzdWx0LmdwcigpKTsKKyAgICAg
ICAgICAgIG1fZ3Bycy51bmxvY2soYXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSk7CisgICAgICAg
ICAgICBtX2dwcnMucmVsZWFzZShhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlKTsKKyAgICAgICAg
fQogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOiB7CiAgICAgICAgIGNvbXBp
bGVHZXRSZXN0TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMDg0
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRp
dmVKSVQoSklUQ29tcGlsCiAgICAgLCBtX2xhc3RHZW5lcmF0ZWROb2RlKExhc3ROb2RlVHlwZSkK
ICAgICAsIG1faW5kZXhJbkJsb2NrKDApCiAgICAgLCBtX2dlbmVyYXRpb25JbmZvKG1faml0Lmdy
YXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCkpCisgICAgLCBtX2FyZ3VtZW50R2VuZXJhdGlvbklu
Zm8oQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICsgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVycykKICAgICAsIG1fc3RhdGUobV9qaXQuZ3JhcGgoKSkKICAgICAsIG1faW50ZXJwcmV0ZXIo
bV9qaXQuZ3JhcGgoKSwgbV9zdGF0ZSkKICAgICAsIG1fc3RyZWFtKCZqaXQuaml0Q29kZSgpLT52
YXJpYWJsZUV2ZW50U3RyZWFtKQpAQCAtNDA0LDYgKzQwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNsZWFyR2VuZXJhdGlvbkluZm8KIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tp
XSA9IEdlbmVyYXRpb25JbmZvKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJn
dW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hcmd1bWVudEdlbmVy
YXRpb25JbmZvW2ldID0gR2VuZXJhdGlvbkluZm8oKTsKICAgICBtX2dwcnMgPSBSZWdpc3RlckJh
bms8R1BSSW5mbz4oKTsKICAgICBtX2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKIH0K
QEAgLTEyMzIsNiArMTIzNSwyNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUZvcm1hdFN0cmlu
ZyhEYXRhCiAgICAgcmV0dXJuIHN0cmluZ3NbZm9ybWF0XTsKIH0KIAorc3RhdGljIHZvaWQgZHVt
cFJlZ2lzdGVySW5mbyhHZW5lcmF0aW9uSW5mbyYgaW5mbywgdW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgaWYgKGluZm8uYWxpdmUoKSkKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBp
bmRleCwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0
U3RyaW5nKGluZm8uc3BpbGxGb3JtYXQoKSkpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZ0Yo
IiAgICAlIDNkOltfX11bX19dIiwgaW5kZXgpOworICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKKyAgICAgICAgZGF0YUxvZ0YoIjpmcHIlZFxuIiwgaW5m
by5mcHIoKSk7CisgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3Jt
YXROb25lCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCisjZW5kaWYKKyAgICAgICAgKSB7CisgICAgICAgIEFT
U0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBkYXRhTG9nRigiOiVz
XG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOworICAgIH0gZWxzZQorICAgICAg
ICBkYXRhTG9nRigiXG4iKTsKKyAgICAKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZHVtcChj
b25zdCBjaGFyKiBsYWJlbCkKIHsKICAgICBpZiAobGFiZWwpCkBAIC0xMjQxLDI1ICsxMjY0LDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hhciogbGEKICAgICBtX2dwcnMu
ZHVtcCgpOwogICAgIGRhdGFMb2dGKCIgIGZwcnM6XG4iKTsKICAgICBtX2ZwcnMuZHVtcCgpOwot
ICAgIGRhdGFMb2dGKCIgIFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkgewotICAgICAgICBHZW5l
cmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9baV07Ci0gICAgICAgIGlmIChpbmZv
LmFsaXZlKCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgICUgM2Q6JXMlcyIsIGksIGRhdGFG
b3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZv
LnNwaWxsRm9ybWF0KCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAg
ICAlIDNkOltfX11bX19dIiwgaSk7Ci0gICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdERvdWJsZSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGlu
Zm8uZnByKCkpOwotICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0
YUZvcm1hdE5vbmUKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgJiYgIShpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCi0jZW5kaWYKLSAgICAgICAgICAgICkg
ewotICAgICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAg
ICAgICAgICBkYXRhTG9nRigiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgIH0KKwor
ICAgIGRhdGFMb2dGKCIgIEFyZ3VtZW50IFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvLnNpemUoKTsgKytp
KQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSwg
aSk7CisKKyAgICBkYXRhTG9nRigiICBMb2NhbCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisg
ICAgICAgIGR1bXBSZWdpc3RlckluZm8obV9nZW5lcmF0aW9uSW5mb1tpXSwgaSk7CisKICAgICBp
ZiAobGFiZWwpCiAgICAgICAgIGRhdGFMb2dGKCI8LyVzPlxuIiwgbGFiZWwpOwogfQpAQCAtMTcx
MCw2ICsxNzIzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawog
ICAgIAogICAgIG1faml0LmJsb2NrSGVhZHMoKVttX2Jsb2NrLT5pbmRleF0gPSBtX2ppdC5sYWJl
bCgpOwogCisgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAgICAgICAgY2hlY2tBcmd1bWVudFR5
cGVzKCk7CisKICAgICBpZiAoIW1fYmxvY2stPmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkg
ewogICAgICAgICAvLyBEb24ndCBnZW5lcmF0ZSBjb2RlIGZvciBiYXNpYyBibG9ja3MgdGhhdCBh
cmUgdW5yZWFjaGFibGUgYWNjb3JkaW5nIHRvIENGQS4KICAgICAgICAgLy8gQnV0IHRvIGJlIHN1
cmUgdGhhdCBub2JvZHkgaGFzIGdlbmVyYXRlZCBhIGp1bXAgdG8gdGhpcyBibG9jaywgZHJvcCBp
biBhCkBAIC0xNzIwLDE1ICsxNzM2LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
dXJyZW50QmxvY2sKIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6
cmVzZXQoKSk7CiAgICAgCisgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAgICAgICAgc2V0dXBB
cmd1bWVudFJlZ2lzdGVyc0ZvckVudHJ5KCk7CisgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFz
VmFsaWRDYWxsRnJhbWUoKTsKICAgICBtX2ppdC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOwogICAg
IG1faml0LmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCk7CiAKICAgICBtX3N0YXRlLnJlc2V0
KCk7CiAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2sobV9ibG9jayk7Ci0gICAgCisKICAgICBm
b3IgKHNpemVfdCBpID0gbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgaS0tOykgewog
ICAgICAgICBpbnQgb3BlcmFuZCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9y
SW5kZXgoaSk7CisgICAgICAgIGlmICghbV9ibG9jay0+aW5kZXggJiYgb3BlcmFuZElzQXJndW1l
bnQob3BlcmFuZCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50ID0gbV9ibG9jay0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50Rm9ySW5kZXgoaSk7CisgICAgICAgICAgICBOb2RlKiBh
cmd1bWVudE5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1l
bnRdOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYXJndW1lbnROb2RlICYmIGFyZ3Vt
ZW50Tm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFhcmd1bWVudE5vZGUtPnJlZkNvdW50KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIEdldEFyZ3VtZW50UmVnaXN0ZXJzJ3MuCisg
ICAgICAgICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZygKKyAgICAgICAgICAgICAgICAg
ICAgVmFyaWFibGVFdmVudDo6bW92SGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlm
aWVkSUQoYXJndW1lbnROb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Tm9k
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZFtpXTsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgY29udGludWU7IC8vIE5vIG5l
ZWQgdG8gcmVjb3JkIGRlYWQgU2V0TG9jYWwncy4KQEAgLTE4MTUsMTMgKzE4NDksMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9k
ZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7
Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAg
ICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ld
OwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBk
ZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50CisgICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5j
aGlsZDEoKS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgfHwgbm9k
ZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPnNo
b3VsZEdlbmVyYXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVB
Y2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0xODMyLDIzICsxODY4
LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAg
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2YXJpYWJsZUFjY2Vz
c0RhdGEtPmxvY2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpT
VmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7Cisg
ICAgICAgIEpTVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CisKKyAgICAgICAgR1BSUmVnIGFyZ3Vt
ZW50UmVnaXN0ZXI7CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGkpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgYXJndW1lbnRSZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGkpOworICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKGFyZ3VtZW50
UmVnaXN0ZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXJndW1lbnRSZWdpc3Rl
ciA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3Vy
Y2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisgICAgICAgIH0K
ICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsK
ICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6IHsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRS
ZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgYXJndW1lbnRSZWdpc3RlciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgaWYg
KGFyZ3VtZW50UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXIsIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwg
bV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE4NzksMTAgKzE5MzQsNTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50
UmVnaXN0ZXJzRm9yRW50cnkoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgQmFzaWNCbG9j
ayogZmlyc3RCbG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soMCk7CisKKyAgICBmb3IgKHNpemVf
dCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBmaXJzdEJsb2NrLT5zaXplKCk7ICsr
aW5kZXhJbkJsb2NrKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBmaXJzdEJsb2NrLT5hdChpbmRl
eEluQmxvY2spOworCisgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0
ZXIpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2Rl
LT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
Z2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAg
ICAgICAgICBHUFJSZWcgYXJndW1lbnRSZWcgPSBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
bm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBBU1NFUlQoYXJndW1lbnRSZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50UmVnKSk7CisgICAgICAg
ICAgICBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhhcmd1bWVudFJlZyk7CisgICAgICAgICAgICBt
X2dwcnMucmV0YWluKGFyZ3VtZW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7
CisgICAgICAgICAgICBpbmZvLmluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUobm9kZSwgbm9kZS0+
cmVmQ291bnQoKSwgYXJndW1lbnRSZWcsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpbmZv
Lm5vdGljZU9TUkJpcnRoKCptX3N0cmVhbSwgbm9kZSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldENhbGxlZSkgeworICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpOworICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisKKyAgICAg
ICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGNhbGxlZVJlZykpOworICAgICAgICAgICAg
bV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoY2FsbGVlUmVnKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oY2FsbGVlUmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAg
ICAgICBpbmZvLmluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUobm9kZSwgbm9kZS0+cmVmQ291bnQo
KSwgY2FsbGVlUmVnLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JC
aXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZv
JiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCgh
bV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5h
bGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50Q291bnRSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJl
dGFpbihhcmd1bWVudENvdW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2Vy
KTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2Rl
LT5yZWZDb3VudCgpLCBhcmd1bWVudENvdW50UmVnLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAg
ICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdpc3Rl
cik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKwogYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSgpCiB7Ci0gICAgY2hlY2tBcmd1bWVudFR5cGVzKCk7Ci0gICAgCiAgICAgQVNTRVJU
KCFtX2N1cnJlbnROb2RlKTsKICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2ppdC5ncmFwaCgpLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKICAg
ICAgICAgbV9qaXQuc2V0Rm9yQmxvY2tJbmRleChibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBHUFJSZWcgZmlsbEpTVmFsdWUoRWRnZSk7CisgICAgR1BSUmVn
IGZpbGxKU1ZhbHVlKEVkZ2UsIEdQUlJlZyBncHJUb1VzZSA9IEludmFsaWRHUFJSZWcpOwogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBib29sIGZpbGxKU1ZhbHVlKEVkZ2UsIEdQUlJlZyYs
IEdQUlJlZyYsIEZQUlJlZyYpOwogI2VuZGlmCkBAIC0yMDAsNyArMjAwLDEyIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKICAgICAgICAg
bV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZzZXQoKSk7
CiAjZW5kaWYKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUgPSBtX2dwcnMuYWxsb2Nh
dGVTcGVjaWZpYyhzcGVjaWZpYyk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lOwor
ICAgICAgICBpZiAoc3BlY2lmaWMgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHNwZWNp
ZmljID0gbV9ncHJzLmFsbG9jYXRlKHNwaWxsTWUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzcGlsbE1lID0gbV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoc3BlY2lmaWMpOworCiAgICAgICAg
IGlmIChzcGlsbE1lLmlzVmFsaWQoKSkgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3RlcihzcGlsbE1lKTsKQEAgLTMxNSw2ICszMjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNo
ZWNrQXJndW1lbnRUeXBlcygpOwogCisgICAgdm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9y
RW50cnkoKTsKKwogICAgIHZvaWQgY2xlYXJHZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUs
NiArNDkyLDkgQEAgcHVibGljOgogICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRo
ZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAg
eworICAgICAgICBpZiAoc3BpbGxNZS5pc0FyZ3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAw
KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
Z2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKQEAgLTYxMyw2ICs2MjMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIHVubG9ja0FyZ3VtZW50UmVnaXN0ZXJzKCkKKyAgICB7
CisgICAgICAgIGZvciAodW5zaWduZWQgcmVnSW5kZXggPSAwOyByZWdJbmRleCA8IE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlM7IHJlZ0luZGV4KyspIHsKKyAgICAgICAgICAgIEdQUlJlZyBh
cmdSZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3IocmVnSW5kZXgpOworICAgICAgICAgICAg
aWYgKG1fZ3Bycy5pc0xvY2tlZChhcmdSZWdpc3RlcikpIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoIW1fZ3Bycy5uYW1lKGFyZ1JlZ2lzdGVyKS5pc1ZhbGlkKCkpOworICAgICAgICAgICAgICAg
IG1fZ3Bycy51bmxvY2soYXJnUmVnaXN0ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6Oklt
bTY0IHZhbHVlT2ZKU0NvbnN0YW50QXNJbW02NChOb2RlKiBub2RlKQogICAgIHsKQEAgLTI4NjUs
NyArMjg4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9M
b2NhbCgpXTsKKyAgICAgICAgaWYgKHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkpCisgICAgICAg
ICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsK
KyAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKV07
CiAgICAgfQogICAgIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBu
b2RlKQpAQCAtMjg4OCw2ICsyOTEyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1faW5kZXhJ
bkJsb2NrOwogICAgIC8vIFZpcnR1YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1hcHMuCiAgICAg
VmVjdG9yPEdlbmVyYXRpb25JbmZvLCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAgICBWZWN0b3I8
R2VuZXJhdGlvbkluZm8sIDg+IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAgICBSZWdpc3Rl
ckJhbms8R1BSSW5mbz4gbV9ncHJzOwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZvPiBtX2ZwcnM7
CiAKQEAgLTI5ODYsNiArMzAxMSwyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgR1BSUmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1faml0KGppdCkK
KyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlk
R1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgaWYgKCFlZGdl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkp
IHx8IHJlZ1RvVXNlICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBncHJVc2VTcGVjaWZp
YyhyZWdUb1VzZSk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVPcGVyYW5kKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9lZGdlKQpAQCAtMzAyMiw2ICszMDYxLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRn
ZSk7CiAgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CisgICAgR1BSUmVnIGdw
clVzZVNwZWNpZmljKEdQUlJlZyByZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9y
SW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBt
X2ppdC0+ZmlsbEpTVmFsdWUobV9lZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJldHVybiBtX2dw
ck9ySW52YWxpZDsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChsb2NhbC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5tX3N0cmVuZ3Ro
UmVkdWNlQXJndW1lbnRzICE9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsg
aS0tOykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgp
ID09IGxvY2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwxNSArMTMwLDMzIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdU
MywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVv
ZihpbnQzMl90KSkpKTsKICAgICBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oLXN0YXRpY19jYXN0PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVycykpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAotICAgIGppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBD
KSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PigxMDAwKSkpKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwog
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGlu
YXRpb24pOwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Ly8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBqaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50
UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgYXJnQ291bnRSZWcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25l
TG9hZGluZ0FyZ3M7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0lu
ZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgr
KykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4
KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVy
Rm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGRvbmVMb2FkaW5nQXJn
cy5saW5rKCZqaXQpOworI2VuZGlmCisgICAgCisgICAgLy8gV2h5IGRpZCBJIHB1dCB0aGlzIFJl
Z2lzdGVyU2V0IGhlcmU/CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lz
dGVycygpLCBHUFJJbmZvOjpyZWdUMCk7CisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6
ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKLSAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7Cisg
ICAgaml0Lmp1bXAoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUgPT0gREZHTW9kZSk7Ci0gICAgICAg
IAorCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRMSklUKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9j
ay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDg4LDcgKzQ4OCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9j
ay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
YXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9jay0+dmFy
aWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1l
bnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwotICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAg
ICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsOCArMTMzLDEzIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3Qo
CiAgICAgaWYgKCFpbmRleCkgewogICAgICAgICB2YWx1ZVJlY292ZXJpZXMgPSBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZVJlY292ZXJpZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmRp
c3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFsdWVS
ZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAg
ICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAg
ICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjppbkdQUigK
KyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
aSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygK
KyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVy
YW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjEsNiArMTY2LDE0IEBAIHZvaWQgVmFyaWFi
bGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgICAgICBNaW5pZmllZEdlbmVyYXRp
b25JbmZvIGluZm87CiAgICAgICAgICAgICBpbmZvLnVwZGF0ZShldmVudCk7CiAgICAgICAgICAg
ICBnZW5lcmF0aW9uSW5mb3MuYWRkKGV2ZW50LmlkKCksIGluZm8pOworICAgICAgICAgICAgTWlu
aWZpZWROb2RlKiBub2RlID0gZ3JhcGguYXQoZXZlbnQuaWQoKSk7CisgICAgICAgICAgICBpZiAo
bm9kZSAmJiBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIgPSBldmVudC5ncHIoKTsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IEdQUkluZm86OnRvQXJndW1lbnRJbmRleChn
cHIpIC0gMjsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnQgIT0gR1BSSW5mbzo6SW52
YWxpZEluZGV4KTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCk7CisgICAgICAgICAgICAgICAg
b3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChhcmd1bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQu
aWQoKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBGaWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0
dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVn
aXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBA
QCBwdWJsaWM6CiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9j
YXRpb24iKQogICAgIHsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIo
U2NvcmVCb2FyZCYgc2NvcmVCb2FyZCwgTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZp
cnN0LCBjYWxsIHVzZSBvbiBhbGwgb2YgdGhlIGN1cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVu
CisgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdl
IGRvIHNvIGluIHRoaXMKKyAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9u
IGl0cyBsYXN0IHVzZSwgYW5kIGEKKyAgICAgICAgLy8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVk
LCB0aGVuIGl0IG1heSBiZSByZXVzZWQgZm9yIG5vZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFn
cygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJ
ZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsg
bm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKKyAgICAgICAgICAgICAgICBzY29yZUJv
YXJkLnVzZUlmSGFzUmVzdWx0KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9k
ZS0+Y2hpbGQzKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZ2lzdGVyID0gc2NvcmVCb2FyZC5hbGxvY2F0ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScg
bm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAg
IC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZvciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+
bXVzdEdlbmVyYXRlKCkpCisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9
CisKICAgICBib29sIHJ1bigpCiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51
bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBGb3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJl
cmVkIHZpcnR1YWwgcmVnaXN0ZXJzLgogICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZy
ZWUoKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50
UmVnaXN0ZXIgTm9kZXMgZmlyc3QgYXMgdGhlIHJlZ2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5Cisg
ICAgICAgICAgICAvLyB0byB0aGUgZnVuY3Rpb24gYW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQg
YmVmb3JlIGFueSB1c2UuCisgICAgICAgICAgICBpZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9j
ay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQsIG5vZGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0g
MDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAg
IApAQCAtNzMsMzIgKzExMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRM
b2NhbDoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVz
dWx0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJ
bmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxs
IG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJlbiwgdGhlbgotICAgICAgICAgICAgICAgIC8v
IGFsbG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRo
aXMKLSAgICAgICAgICAgICAgICAvLyBvcmRlciBzbyB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRz
IGxhc3QgdXNlLCBhbmQgYQotICAgICAgICAgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBm
cmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBu
b2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAg
ICAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5j
aGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQo
bm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
ICghbm9kZS0+aGFzUmVzdWx0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9h
cmQuYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2Rl
cyBoYXZlIHRoZWlyIHVzZUNvdW50IGFydGlmaWNpYWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAg
ICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9h
cmQudXNlKG5vZGUpOworICAgICAgICAgICAgICAgIGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2Fy
ZCwgbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzY29yZUJvYXJkLmFzc2VydENs
ZWFyKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2
Nyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNl
IEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIEdldENhbGxlZToK
KyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIw
ODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAgSklUQ29kZTo6fkpJVENvZGUoKQogICAgICAgICBk
YXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwogICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRh
dGFMb2coY29tbWEsIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAg
IGRhdGFMb2coY29tbWEsIG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAg
IH0KIH0KIApAQCAtNTksMzEgKzYwLDI2IEBAIHZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUIzQnlw
cm9kdWN0cyhzdGQKICAgICBtX2IzQnlwcm9kdWN0cyA9IFdURk1vdmUoYnlwcm9kdWN0cyk7CiB9
CiAKLXZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIgYWRkcmVz
cykKK3ZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2RlUmVmIGVudHJ5
cG9pbnRUaHVuaykKIHsKLSAgICBtX2FkZHJlc3NGb3JDYWxsID0gYWRkcmVzczsKKyAgICBtX2Vu
dHJ5cG9pbnRUaHVuayA9IGVudHJ5cG9pbnRUaHVuazsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0
aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZiBlbnRyeXBvaW50KQordm9pZCBKSVRD
b2RlOjpzZXRFbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQogewot
ICAgIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQgPSBlbnRyeXBvaW50OworICAgIG1fZW50cnlwb2lu
dHMuc2V0RW50cnlGb3IodHlwZSwgZW50cnkpOwogfQotCi1KSVRDb2RlOjpDb2RlUHRyIEpJVENv
ZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2spCisgICAgCitKSVRD
b2RlOjpDb2RlUHRyIEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZSkKIHsKLSAgICBzd2l0Y2ggKGFyaXR5Q2hlY2spIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tO
b3RSZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIG1fYWRkcmVzc0ZvckNhbGw7Ci0gICAgY2FzZSBN
dXN0Q2hlY2tBcml0eToKLSAgICAgICAgcmV0dXJuIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQuY29k
ZSgpOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBDb2RlUHRyKCk7CisgICAgQ29kZVB0ciBlbnRyeSA9IG1fZW50cnlwb2ludHMuZW50cnlGb3Io
ZW50cnlUeXBlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChlbnRyeSk7CisgICAgcmV0dXJuIGVudHJ5
OwogfQogCiB2b2lkKiBKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBv
ZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWRkcmVzc0Zv
ckNhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CiB9CiAKIHZvaWQqIEpJVENv
ZGU6OmRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmgJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBKSVRDb2RlKCk7CiAgICAgfkpJVENvZGUoKTsKIAotICAgIENvZGVQdHIgYWRk
cmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZGF0YUFk
ZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBvZmZz
ZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJyaWRlOwpAQCAtNTMsOSArNTMsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVCM0NvZGUoQ29kZVJlZik7CiAgICAgdm9pZCBp
bml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0
cz4pOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIpOwotICAgIHZv
aWQgaW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYpOwotICAgIAorICAgIHZv
aWQgaW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2RlUmVmKTsKKyAgICB2b2lkIHNldEVudHJ5
Rm9yKEVudHJ5UG9pbnRUeXBlLCBDb2RlUHRyKTsKKwogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVu
Y2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgb3ZlcnJpZGU7CiAKICAgICBSZWdpc3RlclNl
dCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2Rl
QmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsKQEAgLTc3LDcgKzc3LDEyIEBAIHByaXZh
dGU6CiAgICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxsOwogICAgIENvZGVSZWYgbV9iM0NvZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVCeXByb2R1Y3RzPiBtX2IzQnlwcm9kdWN0
czsKLSAgICBDb2RlUmVmIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQ7CisgICAgQ29kZVJlZiBtX2Vu
dHJ5cG9pbnRUaHVuazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5cG9pbnRzOworICAgIENv
ZGVQdHIgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQ7CisgICAgQ29k
ZVB0ciBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9z
dGFja0FyZ3NBcml0eU9LRW50cnlQb2ludDsKKyAgICBDb2RlUHRyIG1fc3RhY2tBcmdzQ2hlY2tB
cml0eUVudHJ5cG9pbnQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lv
biAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlu
a0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIEIzIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENv
ZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRh
dGEoKSkpKTsKIAotICAgIGppdENvZGUtPmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludCgK
KyAgICBqaXRDb2RlLT5pbml0aWFsaXplRW50cnlwb2ludFRodW5rKAogICAgICAgICBGSU5BTEla
RV9DT0RFX0lGKAogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqZW50cnlwb2ludExpbmtC
dWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIz
IGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1f
cGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIwODQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNywxNCArMTI3LDEwNiBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAg
IHN3aXRjaCAoZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6IHsKLSAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1bXBzOwotICAgIAotICAgICAgICBq
aXQubG9hZDMyKAotICAgICAgICAgICAgZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIp
ICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksCi0gICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMSk7Ci0gICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2gzMigKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZpbGxSZWdpc3RlcnNBbmRD
b250aW51ZU1haW5QYXRoOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHRvTWFpblBh
dGg7CisKKyAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIHVuc2lnbmVkIG1heFJl
Z2lzdGVyQXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKG51bVBhcmFtZXRlcnMsIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIEdQUlJlZyBhcmdDb3Vu
dFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKyAxXTsKKworICAgICAgICBpZiAobnVtUGFy
YW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAg
ICAgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRv
IGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJ
bmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOyBhcmdJ
bmRleCA+PSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleC0tKSB7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRleCArIDFdID0gaml0LmxhYmVsKCk7Cisg
ICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZN
OjpSZWdBcmdzRXh0cmEpOworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAo
KSk7CisgICAgICAgIH0KKworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVl
VG9Bcml0eUZpeHVwOworICAgICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFj
a0FyZ3NDaGVja0FyaXR5RW50cnkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6U3RhY2tBcmdzQXJpdHkpOworICAgICAgICBqaXQubG9hZDMyKGZyYW1l
LndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmFwcGVu
ZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJlbG93LCBHUFJJbmZv
OjpyZWdUMSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFt
ZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBjb250aW51ZVRvU3RhY2tBcml0eU9rID0gaml0Lmp1bXAoKTsKKyNlbmRpZgorICAg
ICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NBcml0eU9LRW50cnkg
PSBqaXQubGFiZWwoKTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpTdGFj
a0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVl
VG9TdGFja0FyaXR5T2subGluaygmaml0KTsKKyNlbmRpZgorCisgICAgICAgIC8vIExvYWQgYXJn
dW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwg
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgaml0LmVtaXRHZXRQYXlsb2Fk
RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQsIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgbWF4UmVnaXN0ZXJB
cmd1bWVudENvdW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZv
ckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICAgICAgCisgICAgICAgIHRvTWFpblBh
dGguYXBwZW5kKGppdC5qdW1wKCkpOworICAgICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAg
aW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXA7CisgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzOworCisg
ICAgICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUykgeworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMy
KAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSkpOworICAgICAgICAgICAgY29u
dGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSkpOworICAgICAgICAgICAgLy8gIEZhbGwgdGhyb3Vn
aCB0byB0aGUgImV4dHJhIHJlZ2lzdGVyIGFyaXR5IiBjYXNlLgorCisgICAgICAgICAgICBjaGVj
a0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHMgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgIC8v
IFNwaWxsIGFueSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9u
dG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IG51bVBh
cmFtZXRlcnM7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgICAgIGppdC5l
bWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdB
cmdzRXh0cmEpOworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMy
KAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBhcmdDb3VudFJl
ZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpKTsKKworI2lmIEVO
QUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5h
cHBlbmQoaml0Lmp1bXAoKSk7CisjZW5kaWYKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA+
IDApIHsKKyAgICAgICAgICAgIC8vICBUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBh
cmFtZXRlci4KKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmd1bWVu
dHNOZWVkQXJpdHlGaXh1cCA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXggPCBudW1QYXJhbWV0ZXJzICYm
IGFyZ0luZGV4IDw9IG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgrKykKKyAgICAg
ICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4XSA9IHJlZ2lz
dGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXA7CisgICAgICAgIH0KKworI2lmIEVOQUJMRShWTV9D
T1VOVEVSUykKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0FyaXR5
KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1
cC5saW5rKCZqaXQpOworCisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFt
ZUJlZm9yZVByb2xvZ3VlKG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCk7CisKKyAgICAgICAgY29u
dGludWVUb0FyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpBcml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKQEAgLTE1NSwxMSArMjQ3LDIw
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuYnJh
bmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNo
VGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CisK
KyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGguYXBwZW5kKGppdC5qdW1w
KCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmxpbmtUbyhz
dGFja0FyZ3NBcml0eU9LRW50cnksICZqaXQpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5ID0gaml0Lmxh
YmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NOb0FyaXR5
KTsKKyAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisjZW5kaWYKIAogICAg
ICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVy
LT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CkBAIC0xNjksOSArMjcwLDM1IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNv
ZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6
IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxs
TG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5
Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1h
aW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUu
Z2VuZXJhdGVkRnVuY3Rpb24pKSk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsodG9NYWluUGF0
aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRG
dW5jdGlvbikpKTsKIAotICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0Zv
ckNhbGwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2Vu
ZXJhdGVkRnVuY3Rpb24pKSk7CisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0
YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YWNrQXJnc0No
ZWNrQXJpdHlFbnRyeSkpOworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihTdGFj
a0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tB
cmdzQXJpdHlPS0VudHJ5KSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJl
Z2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtYWluRW50cnkgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpOworI2VuZGlmCisgICAgICAgIHN0YXRlLmppdENvZGUt
PnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFpbkVudHJ5
KTsKKworICAgICAgICBpZiAoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzLmlzU2V0KCkp
CisgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQb3Nz
aWJsZUV4dHJhQXJncywgbGlua0J1ZmZlci0+bG9jYXRpb25PZihjaGVja0ZvckV4dHJhUmVnaXN0
ZXJBcmd1bWVudHMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+
c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIG1haW5FbnRyeSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihS
ZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3Rl
ckFyZ3NDaGVja0FyaXR5RW50cnkpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50
ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UzsgYXJnQ291bnQrKykgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5
OworICAgICAgICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAg
ICAgICAgZW50cnkgPSBtYWluRW50cnk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdpc3RlckFy
Z3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGVu
dHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRz
W2FyZ0NvdW50XSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50cnkgPSBs
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSk7CisgICAg
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0
ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xODEsNyArMzA4LDE2IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIHBvaW50IHdlJ3ZlIGV2ZW4gZG9uZSB0
aGUgc3RhY2sgY2hlY2suIEJhc2ljYWxseSB3ZSBqdXN0IGhhdmUgdG8gbWFrZSB0aGUKICAgICAg
ICAgLy8gY2FsbCB0byB0aGUgQjMtZ2VuZXJhdGVkIGNvZGUuCiAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc3RhcnQgPSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKKworICAgICAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3Vt
ZW50IHJlZ2lzdGVycworICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZv
cmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxs
ZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZv
cmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVudFJlZ2lzdGVy
Rm9yQXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZv
ckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKQEAgLTE5MSw3ICszMjcsNyBAQCB2b2lkIGxpbmsoU3RhdGUm
IHN0YXRlKQogICAgICAgICB9CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1
bmN0aW9uKSkpOwogCi0gICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9y
Q2FsbChsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CisgICAgICAgIHN0YXRlLmppdENv
ZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1
ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGNvZGVC
bG9jaygpKSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAorICAgICAg
ICAvLyBTdG9yZSBvdXQgY2FsbGVlIGFuZCBhcmd1bWVudCBjb3VudCBmb3IgcG9zc2libGUgT1NS
IGV4aXQuCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICAgICAgbV9vdXQu
c3RvcmU2NChtX291dC5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUo
KSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjZW5kaWYKKyNpZiAhRU5B
QkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
YXJndW1lbnRSZWdpc3RlckludDMyKGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkp
LCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyNlbmRpZgorCiAg
ICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJh
bWVTaXplID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2Yo
UmVnaXN0ZXIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3NPZlN0YWNrTGltaXQodm0oKS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKTsKQEAgLTI0Niwy
MCArMjU0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQ2hlY2sgQXJndW1lbnRzLgogICAgICAg
ICBhdmFpbGFiaWxpdHlNYXAoKS5jbGVhcigpOwogICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5t
X2xvY2FscyA9IE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKSwgMCk7CisKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudE5vZGVzOworICAg
ICAgICBWZWN0b3I8TFZhbHVlLCA4PiBhcmd1bWVudFZhbHVlczsKKworICAgICAgICBhcmd1bWVu
dE5vZGVzLnJlc2l6ZShjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgYXJn
dW1lbnRWYWx1ZXMucmVzaXplKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAg
ICAgIG1faGlnaEJsb2NrID0gbV9ncmFwaC5ibG9jaygwKTsKKwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAg
ICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1bWVudChpKSA9Ci0gICAgICAgICAgICAg
ICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1ZSwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSkpKTsKLSAgICAgICAgfQotICAgICAgICBtX25vZGUgPSBudWxscHRyOwot
ICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigw
KSwgdHJ1ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNG
b3JDaGVja2luZ1tpXTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExW
YWx1ZSBqc1ZhbHVlID0gbV9vdXQubG9hZDY0KGFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAg
ICAgICAgCisgICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG51bGxwdHI7CisKICAgICAgICAg
ICAgIGlmIChub2RlKSB7Ci0gICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2Rl
LCBvcGVyYW5kID09IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5tYWNoaW5lTG9jYWwpOworICAg
ICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUykgeworICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5h
cmd1bWVudChpKSA9IEF2YWlsYWJpbGl0eShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAganNW
YWx1ZSA9IG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVy
KG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
c2V0SlNWYWx1ZShub2RlLCBqc1ZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1bWVudChpKSA9
CisgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHkoRmx1c2hlZEF0KEZsdXNoZWRK
U1ZhbHVlLCBvcGVyYW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUgPSBtX291dC5s
b2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbm9kZSwgbm9kZS0+aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkgfHwgb3BlcmFuZCA9
PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGluZUxvY2FsKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgaGFjaywgYnV0IGl0J3MgYW4gZWZmZWN0
aXZlIG9uZS4gSXQgYWxsb3dzIHVzIHRvIGRvIENTRSBvbiB0aGUKICAgICAgICAgICAgICAgICAv
LyBwcmltb3JkaWFsIGxvYWQgb2YgYXJndW1lbnRzLiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgR2V0
TG9jYWwgdGhhdCBnb3QgcHV0IGluCkBAIC0yNjcsNyArMjg5LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAvLyBzaG91bGQgaG9sZCB0cnVlLgogICAgICAgICAgICAgICAgIG1fbG9hZGVk
QXJndW1lbnRWYWx1ZXMuYWRkKG5vZGUsIGpzVmFsdWUpOwogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBhcmd1bWVudE5vZGVzW2ldID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50VmFs
dWVzW2ldID0ganNWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7
CisgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2lu
KDApLCB0cnVlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKTsgaS0tOykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50Tm9k
ZXNbaV07CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBhcmd1bWVudFZh
bHVlc1tpXTsKKwogICAgICAgICAgICAgc3dpdGNoIChtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRz
W2ldKSB7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBub2RlLCBpc05vdEludDMy
KGpzVmFsdWUpKTsKQEAgLTgwNSw2ICs4NDEsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICAgICAgY29tcGlsZUdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50UmVn
aXN0ZXIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUxMTIs
NiArNTE1MSwxNiBAQCBwcml2YXRlOgogICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVyKCkKKyAgICB7CisgICAgICAgIC8vIFdl
IG1pZ2h0IGhhdmUgYWxyZWFkeSBoYXZlIGEgdmFsdWUgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAg
aWYgKExWYWx1ZSB2YWx1ZSA9IG1fbG9hZGVkQXJndW1lbnRWYWx1ZXMuZ2V0KG1fbm9kZSkpIHsK
KyAgICAgICAgICAgIHNldEpTVmFsdWUodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQuYXJndW1lbnRSZWdpc3RlcihHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkpKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoKQogICAgIHsKICAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVh
cHMuSlNGdW5jdGlvbl9zY29wZSkpOwpAQCAtNTUwMSw5ICs1NTUwLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIHRoZSBjYWxsLgogICAgICAgICBWZWN0b3I8Q29uc3RyYWluZWRWYWx1ZT4gYXJn
dW1lbnRzOwogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRv
IEdQUjAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhlIHNsb3cgcGF0aCB0aHVua3MgZXhwZWN0IHRo
ZQotICAgICAgICAvLyBjYWxsZWUgdG8gYmUuCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMCkpKTsK
KyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8gYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpIGJlY2F1c2UgdGhhdCdzIHdoZXJlCisgICAgICAgIC8vIHRoZSBz
bG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUgY2FsbGVlIHRvIGJlLgorICAgICAgICBHUFJSZWcg
Y2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVl
UmVnKSkpOwogCiAgICAgICAgIGF1dG8gYWRkQXJndW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwg
VmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNldCkgewogICAgICAgICAgICAgaW50cHRyX3Qg
b2Zmc2V0RnJvbVNQID0KQEAgLTU1MTEsMTAgKzU1NjEsMjIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0
YWNrQXJndW1lbnQob2Zmc2V0RnJvbVNQKSkpOwogICAgICAgICB9OwogCisgICAgICAgIEFyZ3Vt
ZW50c0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQXJncyk7
CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFs
dWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVF
KQogICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSksIDApOworI2VuZGlmCisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWYWx1ZVJlcDo6cmVnKGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7CisjaWYgRU5BQkxFKENBTExFUl9T
UElMTFNfQVJHQ09VTlQpCiAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50MzIobnVt
QXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgUGF5
bG9hZE9mZnNldCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyAr
K2kpCi0gICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworI2Vu
ZGlmCisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShs
b3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6OnJl
Zyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSkpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDAp
OworICAgICAgICB9CiAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9v
dXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihh
cmd1bWVudHMpOwpAQCAtNTU0Myw5ICs1NjA1LDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
ICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZN
OjpGVExDYWxsZXIpOworCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFiZWxQ
dHIgdGFyZ2V0VG9DaGVjazsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2xv
d1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgdGFyZ2V0VG9DaGVjaywKKyAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlUmVnLCB0YXJnZXRU
b0NoZWNrLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
MCkpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGZhc3RDYWxsID0gaml0
Lm5lYXJDYWxsKCk7CkBAIC01NTUzLDEzICs1NjE3LDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Y2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwogCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRV
cENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0ID8gQ2Fs
bExpbmtJbmZvOjpDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgICAgICAgICBhcmdMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBhcmd1bWVudFJl
Z2lzdGVyRm9yQ2FsbGVlKCkpOwogCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXBhcmFtcy5wcm9jKCku
ZnJhbWVTaXplKCkpLApAQCAtNTU2OCw3ICs1NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0xvY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygK
QEAgLTU2MTIsMjAgKzU2NzYsMzggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIFZlY3Rv
cjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CiAgICAgICAgIAotICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0
ZXIpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8gYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIGJlY2F1c2UgdGhhdCdzIHdoZXJlCisgICAgICAgIC8v
IHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUgY2FsbGVlIHRvIGJlLgorICAgICAgICBH
UFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWco
Y2FsbGVlUmVnKSkpOwogICAgICAgICBpZiAoIWlzVGFpbCkgewogICAgICAgICAgICAgYXV0byBh
ZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBpbnQg
b2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQID0KICAgICAg
ICAgICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJl
Z2lzdGVycykgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0OwogICAgICAgICAgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0
YWNrQXJndW1lbnQob2Zmc2V0RnJvbVNQKSkpOwogICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxs
ZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExT
X0NBTExFRSkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7CisjZW5kaWYKKyAgICAgICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDMyKG51bVBhc3NlZEFy
Z3MpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7
CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCiAgICAgICAgICAgICBhZGRBcmd1
bWVudChtX291dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkKLSAgICAgICAgICAg
ICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSAr
IGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOwotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkK
LSAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsK
KyNlbmRpZgorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNWYWx1ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFs
bG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChpKSkpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bVBhc3NlZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEg
KyBpKSksIFZhbHVlUmVwOjpXYXJtQW55KSk7CkBAIC01Njg1LDcgKzU3NjcsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJl
bCgpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgICAgICBpbmNy
ZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgICAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKSk7CkBAIC01NzA2LDcgKzU3OTIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgK
LSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKGV4ZWN1dGFibGUpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldE1heE51bUFyZ3VtZW50cyhudW1B
bGxvY2F0ZWRBcmdzKTsKQEAgLTU3MjksNiArNTgxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGpp
dC5sYWJlbCgpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6
RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpE
aXJlY3RDYWxsKTsKKwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwpAQCAtNTc0MCw3ICs1ODI5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0lu
Zm86OkRpcmVjdENvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtUGFzc2VkQXJncyksIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPiBudW1QYXNzZWRBcmdzKQogICAgICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldE1heE51bUFyZ3VtZW50cyhudW1BbGxvY2F0
ZWRBcmdzKTsKQEAgLTU3NTEsMTMgKzU4NDAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcChDQ2FsbEhlbHBlcnM6OnNl
bGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8g
bmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayhBc3NlbWJs
eUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZhckp1bXBX
aWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBh
dGgsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soCkBAIC01NzY2LDYgKzU4NTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIubGluayhjYWxsLCBzbG93UGF0aExvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtF
bnRyeVN0dWIobGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJ
bmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRh
YmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgp
LApAQCAtNTgzMSw2ICs1OTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwogCisgICAgICAgICAgICAgICAgaW5j
cmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICBpbmNy
ZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisKICAgICAgICAgICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0
YS5udW1Mb2NhbHMgPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudDsK
ICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQ
UihHUFJJbmZvOjpyZWdUMCwgRGF0YUZvcm1hdEpTKTsKQEAgLTU4NjUsMTcgKzU5NTgsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNldENhbGxlZUpTVmFs
dWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgICAgICAgICAgc2xv
d1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogCiAgICAg
ICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwp
OwogCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZv
OjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIFN0YWNrQXJn
cywgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAgICAgICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5r
Q2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENU
SVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0Nh
bGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01OTYwLDExICs2MDUzLDE1IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9y
VW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJmppdCwgVk06OkNhbGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAg
ICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKICAgICAg
ICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEo
KTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAgLTYxMjUsNyAr
NjIyMiw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAg
ICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZv
KSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwo
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAg
LTYxMzMsNyArNjIzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLApAQCAtNjE0Miw3ICs2MjM5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENh
bGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0Fy
Z3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBG
dW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2Fs
bExvY2F0aW9ucygKQEAgLTYyMTEsMTMgKzYzMDgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhh
bmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENy
ZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
CisKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIp
OworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxFdmFsKTsK
KwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlu
a0luZm8oKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlu
a0luZm86OkNhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwg
U3RhY2tBcmdzLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVy
RnJhbWVPZmZzZXQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
bnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
bnRyeS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCog
cHJlcGFyZU9TUkVudHJ5KAogICAgIAogICAgIGV4ZWMtPnNldENvZGVCbG9jayhlbnRyeUNvZGVC
bG9jayk7CiAgICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2Fs
bChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgdm9pZCog
cmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNoZWNr
Tm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwgZ29pbmcg
dG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykK
ICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50UmVnaXN0
ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3Vt
ZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7Cit9CisK
IExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5vZGUq
IG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7IHJl
dHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0
ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKTsK
ICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1ZSogbG9j
a2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6
dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9IGFkdmFu
Y2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNhbGxlZSgpLCBjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpOwogICAgICAgICAgICAgYm9vbCBpc1RhaWxEZWxldGVkID0gZmFsc2U7
CiAgICAgICAgICAgICBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CisgICAgICAgICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgICAgICAgICBpZiAoY29kZUJs
b2NrICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNv
ZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgICAgIHNj
b3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQo
KSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2Nv
cGU6OmluZm8oKSkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZyYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsKLSAgICAgICAgICAg
ICAgICBpZiAoc2NvcGUpCisgICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+
d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5o
ZXJpdHMoSlNTY29wZTo6aW5mbygpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGZvdW5kRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXNjb3BlKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNjb3BlID0gbV9sb2dbaW5kZXhJbkxvZ10uc2NvcGU7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICAgICAgICAgICAgICB0aGlzVmFsdWUgPSBtX2xvZ1tpbmRleEluTG9nXS50aGlzVmFsdWU7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b1B1c2guYXBwZW5kKEZyYW1lKHZpc2l0b3ItPmNh
bGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCks
IHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2FsbFNpdGVJbmRleCgpKSk7CisgICAgICAg
ICAgICB0b1B1c2guYXBwZW5kKEZyYW1lKHZpc2l0b3ItPmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlz
VGFpbERlbGV0ZWQsIHRoaXNWYWx1ZSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxs
U2l0ZUluZGV4KCkpKTsKIAogICAgICAgICAgICAgaWYgKGluZGV4SW5Mb2cgPCBsb2dDdXJzb3JJ
bmRleAogICAgICAgICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIHByb3RlY3RzIHVzIGZyb20g
dGhlIGNhc2Ugd2hlcmUgYWR2YW5jZUluZGV4SW5Mb2dUbyBkaWRuJ3QgZmluZApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24g
MjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MTYsMTMgKzYxNiwxMyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6cmVzdG9yZUNhbGxlZVNhdmVzCiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0RHVtYlZp
cnR1YWxDYWxsKENhbGxMaW5rSW5mbyogaW5mbykKIHsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
aW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwogICAgIENhbGwgY2FsbCA9IG5lYXJDYWxsKCk7CiAgICAgYWRk
TGlua1Rhc2soCiAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zv
cigmbGlua0J1ZmZlci52bSgpLCAqaW5mbyk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1
YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssIGxpbmtCdWZmZXIudm0oKSwgbnVs
bHB0ciwgdHJ1ZSkpOwotICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIENvZGVMb2Nh
dGlvbkxhYmVsKHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKKyAgICAgICAgICAgIEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcigmbGlu
a0J1ZmZlci52bSgpLCAqaW5mbyk7CisgICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihjcmVh
dGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29kZVJlZigpLCBsaW5rQnVmZmVyLnZtKCks
IG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2Rl
TG9jYXRpb25MYWJlbCh2aXJ0dWFsVGh1bmsuZW50cnlGb3IoU3RhY2tBcmdzKSkpOwogICAgICAg
ICB9KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNiArNDE0LDk3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAorICAgIGVudW0gU3BpbGxSZWdpc3RlclR5cGUgeyBTcGlsbEFs
bCwgU3BpbGxFeGFjdGx5IH07CisKKyAgICB2b2lkIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0Zy
YW1lQmVmb3JlUHJvbG9ndWUodW5zaWduZWQgbWluaW11bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxS
ZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxBbGwpCisgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIEp1bXBMaXN0IGRvbmVTdG9yaW5nQXJnczsKKworI2lmICFFTkFCTEUoQ0FM
TEVSX1NQSUxMU19DQUxMRUUpCisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9y
ZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKTsKKyNlbmRpZgorICAgICAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpOworI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VO
VCkKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJnQ291
bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworI2VuZGlmCisKKyAgICAgICAg
dW5zaWduZWQgYXJnSW5kZXggPSAwOworICAgICAgICAvLyBBbHdheXMgc3BpbGwgInRoaXMiCisg
ICAgICAgIG1pbmltdW1BcmdzVG9TcGlsbCA9IHN0ZDo6bWF4KG1pbmltdW1BcmdzVG9TcGlsbCwg
MVUpOworCisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IG1pbmltdW1BcmdzVG9TcGlsbCAmJiBh
cmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0lu
ZGV4KyspCisgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xv
Z3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5k
ZXgpOworCisgICAgICAgIGlmIChzcGlsbFR5cGUgPT0gU3BpbGxBbGwpIHsKKyAgICAgICAgICAg
IC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1bmN0aW9uCisgICAgICAgICAgICBmb3Ig
KDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBh
cmdJbmRleCsrKSB7CisgICAgICAgICAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmFwcGVuZChicmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0
QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmxpbmsodGhpcyk7CisjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0obWluaW11bUFyZ3NUb1NwaWxsKTsKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHNwaWxsVHlwZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHNwaWxsQXJndW1lbnRSZWdp
c3RlcnNUb0ZyYW1lKHVuc2lnbmVkIG1pbmltdW1BcmdzVG9TcGlsbCA9IDAsIFNwaWxsUmVnaXN0
ZXJUeXBlIHNwaWxsVHlwZSA9IFNwaWxsQWxsKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBKdW1wTGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9T
UElMTFNfQ0FMTEVFKQorICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisgICAg
ICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50
KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisgICAgICAgIAorICAgICAgICBm
b3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAg
ICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3Bp
bGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBh
c3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJn
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvbmVTdG9yaW5nQXJn
cy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9T
cGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAgfQor
ICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9n
dWUoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wTGlzdCBkb25lTG9h
ZGluZ0FyZ3M7CisKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9s
b2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7
CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCk7CisgICAgICAgIGVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9y
ZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKyAg
ICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAg
ICAgICAgICAgIGlmIChhcmdJbmRleCkgLy8gQWx3YXlzIGxvYWQgInRoaXMiCisgICAgICAgICAg
ICAgICAgZG9uZUxvYWRpbmdBcmdzLmFwcGVuZChicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVs
b3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJ
bmRleCkpKTsKKyAgICAgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQ
cm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJn
SW5kZXgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9uZUxvYWRpbmdBcmdzLmxp
bmsodGhpcyk7CisjZW5kaWYKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQog
ICAgIHN0YXRpYyBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCiAgICAgewpAQCAt
NjI0LDYgKzcxNSwzMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdG9yZVB0cihmcm9tLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKICAg
ICB9CisKKyAgICB2b2lkIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUo
R1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgc3RvcmVQdHIo
ZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNB
cmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKKyAgICB9CisKKyAgICB2b2lk
IGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lKEdQUlJlZyBmcm9tLCB1bnNpZ25lZCBhcmd1bWVu
dCkKKyAgICB7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihmcm9tLCBDYWxsRnJh
bWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVudCk7CisgICAgfQorCisgICAgdm9pZCBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGNvbnN0IGludCBlbnRyeSwgR1BS
UmVnIHRvKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKHVuc2lnbmVkIGFyZ3Vt
ZW50LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVudCkgKiBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpKSwgdG8pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGVtaXRHZXRQYXlsb2Fk
RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGNvbnN0IGludCBlbnRyeSwgR1BSUmVn
IHRvKQorICAgIHsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCB0byk7CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGVt
aXRQdXRQYXlsb2FkVG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwg
aW50IGVudHJ5KQogICAgIHsKQEAgLTE1NzQsNyArMTY5MCwxNCBAQCBwdWJsaWM6CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3Vs
dCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoVk1fQ09VTlRF
UlMpCisgICAgdm9pZCBpbmNyZW1lbnRDb3VudGVyKFZNOjpWTUNvdW50ZXJUeXBlIGNvdW50ZXJU
eXBlKQorICAgIHsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRy
ZXNzKHZtKCktPmFkZHJlc3NPZkNvdW50ZXIoY291bnRlclR5cGUpKSk7CisgICAgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2Nr
OwpAQCAtMTU4Myw2ICsxNzA2LDEyIEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBtX2RlY29kZWRDb2RlTWFwczsK
IH07CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIo
aml0LCBjb3VudGVyVHlwZSkgKGppdCktPmluY3JlbWVudENvdW50ZXIoY291bnRlclR5cGUpCisj
ZWxzZQorI2RlZmluZSBpbmNyZW1lbnRDb3VudGVyKGppdCwgY291bnRlclR5cGUpICgodm9pZCkw
KQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMDg0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAKICNpZiBDUFUoWDg2KQogI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC0zNzksNiArMzgwLDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9B
cmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
OF0gPSB7IDIsIDAsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICByZXR1cm4gaW5kZXhGb3JBcmd1bWVudFJlZ2lz
dGVyW3JlZ107CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTM5OCw5ICs0MDcsMTEgQEAgcHVibGljOgogI2lmIENQVShYODZfNjQpCiAjaWYgIU9TKFdJTkRP
V1MpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNnUKKyNkZWZpbmUgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyAtIDJ1KQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyA1dQogI2Vsc2UKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2Rl
ZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5l
IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDd1CiAjZW5kaWYKIApAQCAtNDY0LDYg
KzQ3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3Rl
cnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC01MDgsNiArNTIwLDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52YWxp
ZEluZGV4LCAzLCAyLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAx
LCAwLCA0LCA1LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZWxzZQorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCB9OworI2VuZGlmCisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
cmVnXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTUzOCw2ICs1NjIsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNKQogI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC02MDEsNiArNjI2LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9B
cmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYp
OworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFIzKQorICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorICAgIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC02MjEsNiArNjU1LDcgQEAgcHVi
bGljOgogCiAjaWYgQ1BVKEFSTTY0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDh1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKIC8vIENhbGxlZSBTYXZlcyBpbmNs
dWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CiAKQEAgLTY5OCw2ICs3MzMsNyBAQCBwdWJsaWM6
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMyA9PSAxMywgcTEzX2lzXzEz
KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTE0ID09IDE0LCBxMTRfaXNf
MTQpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTUgPT0gMTUsIHExNV9p
c18xNSk7CisKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKQEAgLTcxNSw2ICs3NTEsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdG9SZWdpc3RlcihpbmRleCk7CiAgICAgfQogCisgICAg
c3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3Vt
ZW50R1BSNykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpcmVnOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CkBAIC03NDYsNiArNzkwLDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTgyNSw2ICs4NzAsNyBAQCBw
dWJsaWM6CiAKICNpZiBDUFUoU0g0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
MHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3Mg
R1BSSW5mbyB7CkBAIC04OTAsNiArOTM2LDQzIEBAIHB1YmxpYzoKIH07CiAKICNlbmRpZiAvLyBD
UFUoU0g0KQoraW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9yKHVuc2lnbmVkIGFyZ3Vt
ZW50SW5kZXgpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoYXJndW1lbnRJbmRleCA+
PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZXR1cm4gSW52YWxpZEdQ
UlJlZzsKKyAgICByZXR1cm4gR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50SW5k
ZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRJbmRleCk7CisKKyAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVn
aXN0ZXJGb3JDYWxsZWUoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lzdGVyRm9yKDApOwor
fQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkKK3sK
KyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcigxKTsKK30KKworaW5saW5lIHVuc2lnbmVk
IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudCh1bnNpZ25lZCBhcmd1
bWVudCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnQgKyAyOworfQorCitpbmxpbmUgR1BSUmVnIGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgp
Cit7CisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoYXJndW1lbnRSZWdpc3RlckluZGV4
Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KGFyZ3VtZW50SW5kZXgpKTsKK30KKworaW5saW5lIHVuc2ln
bmVkIG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkK
K3sKKyAgICByZXR1cm4gc3RkOjptaW4oYXJndW1lbnRDb3VudCwgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7Cit9CiAKIC8vIFRoZSBiYXNlbGluZSBKSVQgdXNlcyAi
YWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3aXRoIHJlZ1QwIChmb3IgNjQtYml0KQogLy8g
YW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQpIHNlcnZpbmcgYXMgdGhlIGFjY3VtdWxhdG9y
IHJlZ2lzdGVyKHMpIGZvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNp
b24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NiwxNCArNjYsNiBAQCB2b2lkIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BCiAgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotSklUOjpDb2RlUmVm
IEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQot
ewotICAgIGlmICghdm0tPmNhblVzZUpJVCgpKQotICAgICAgICByZXR1cm4gQ29kZVJlZjo6Y3Jl
YXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOwotICAgIEpJVCBq
aXQodm0sIDApOwotICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKHZt
LCBmdW5jKTsKLX0KLQogSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICA6IEpTSW50ZXJmYWNlSklUKHZtLCBjb2RlQmxvY2spCiAgICAgLCBtX2ludGVycHJldGVyKHZt
LT5pbnRlcnByZXRlcikKQEAgLTU3Niw2ICs1NjgsMjAgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRo
b3V0TGlua2luZyhKSVRDb21waQogICAgIGlmIChtX3JhbmRvbUdlbmVyYXRvci5nZXRVaW50MzIo
KSAmIDEpCiAgICAgICAgIG5vcCgpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzcGlsbEFy
Z3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBK
dW1wIGNvbnRpbnVlU3RhY2tFbnRyeSA9IGp1bXAoKTsKKyNlbmRpZgorI2VuZGlmCisgICAgbV9z
dGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhp
cywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkgJiYgRU5BQkxF
KFZNX0NPVU5URVJTKQorICAgIGNvbnRpbnVlU3RhY2tFbnRyeS5saW5rKHRoaXMpOworI2VuZGlm
CisKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKIApAQCAtNjMyLDcg
KzYzOCwyMSBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAg
Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CiAKICAgICBpZiAobV9jb2RlQmxv
Y2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7Ci0gICAgICAgIG1fYXJpdHlDaGVjayA9
IGxhYmVsKCk7CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgp
OworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisK
KyAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwor
CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBKdW1wIGNvbnRpbnVlU3RhY2tBcml0
eUVudHJ5ID0ganVtcCgpOworI2VuZGlmCisKKyAgICAgICAgbV9zdGFja0FyZ3NXaXRoQXJpdHlD
aGVjayA9IGxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlN0YWNr
QXJnc0FyaXR5KTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVlU3Rh
Y2tBcml0eUVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJ
bW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCk7CiAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKQEAgLTY0MCw2ICs2NjAs
OCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIGxv
YWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCByZWdUMSk7CiAg
ICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVC
bG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogCisgICAg
ICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7CisKICAg
ICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsKQpAQCAtNzc1LDkgKzc5NywxNCBAQCBDb21waWxhdGlvblJlc3VsdCBK
SVQ6OmxpbmsoKQogICAgIH0KICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZU1hcChqaXRDb2Rl
TWFwRW5jb2Rlci5maW5pc2goKSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFy
aXR5Q2hlY2s7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSkKLSAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fYXJp
dHlDaGVjayk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlBcml0eU9LUHRy
ID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeSk7CisgICAg
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlDaGVja1B0
cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRy
OworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAg
ICAgICAgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgc3RhY2tFbnRyeVdp
dGhBcml0eUNoZWNrUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0YWNrQXJnc1dpdGhB
cml0eUNoZWNrKTsKKyAgICB9CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkp
IHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAocGF0Y2hCdWZmZXIpOwpAQCAtNzk1LDE0
ICs4MjIsMjYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBDb2RlUmVmIHJl
c3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIkJh
c2VsaW5lIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZSht
X2NvZGVCbG9jaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKS5kYXRhKCkpKTsKLSAgICAKKwogICAg
IG1fdm0tPm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVC0+YWRk
KAogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJlc3VsdC5zaXplKCkpIC8KICAgICAgICAg
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX2luc3RydWN0aW9ucy5zaXplKCkpKTsKIAogICAgIG1fY29k
ZUJsb2NrLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOworICAgIEpJVEVudHJ5
UG9pbnRzIGVudHJ5cG9pbnRzKHJlc3VsdC5jb2RlKCksIHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlD
aGVja1B0ciwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyLCBzdGFja0VudHJ5QXJpdHlP
S1B0ciwgc3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRyKTsKKworICAgIHVuc2lnbmVkIG51bVBh
cmFtZXRlcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7CisgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5OworICAgICAgICBpZiAoYXJnQ291bnQgPT0g
bnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIGVudHJ5ID0gcmVzdWx0LmNvZGUoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZW50cnkgPSByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQ
dHI7CisgICAgICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKEpJVEVudHJ5UG9pbnRzOjpyZWdp
c3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoYXJnQ291bnQpLCBlbnRyeSk7CisgICAgfQor
CiAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSkp
OworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhS
ZWYocmVzdWx0LCBlbnRyeXBvaW50cyksIEpJVENvZGU6OkJhc2VsaW5lSklUKSkpOwogCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFKQogICAgIGRhdGFMb2dGKCJKSVQgZ2VuZXJhdGVkIGNvZGUgZm9y
ICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5
KCktPnN0YXJ0KCksIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPmVuZCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIkpJVElubGluZUNhY2hlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCiAj
aW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNsdWRlICJVbnVzZWRQb2lu
dGVyLmgiCiAKQEAgLTI0Niw3ICsyNDcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBqaXQucHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoYnlWYWxJbmZvLCByZXR1cm5B
ZGRyZXNzLCBhcnJheU1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIENvZGVSZWYg
Y29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIHN0YXRp
YyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgY29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyhWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghdm0t
PmNhblVzZUpJVCgpKSB7CisgICAgICAgICAgICAgICAgQ29kZVJlZiBuYXRpdmVDYWxsUmVmID0g
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUp
OworICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYobmF0aXZlQ2Fs
bFJlZiwgbmF0aXZlQ2FsbFJlZi5jb2RlKCksIG5hdGl2ZUNhbGxSZWYuY29kZSgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEpJVCBqaXQodm0sIDApOworICAgICAgICAgICAgcmV0dXJu
IGppdC5wcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbCh2bSwgZnVuYyk7CisgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVC
bG9jayopOwogICAgICAgICBzdGF0aWMgaW50IHN0YWNrUG9pbnRlck9mZnNldEZvcihDb2RlQmxv
Y2sqKTsKQEAgLTI2Niw4ICsyNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lk
IHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJl
c3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKLSAgICAgICAgTGFiZWwgcHJpdmF0ZUNvbXBpbGVDVElO
YXRpdmVDYWxsKFZNKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKLSAgICAgICAgQ29kZVJl
ZiBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBOYXRpdmVGdW5jdGlvbik7CisgICAg
ICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2Fs
bChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNo
R2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKIAogICAgICAg
ICAvLyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBj
aGVjay4KQEAgLTk0Niw4ICs5NTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fcHV0QnlJZEluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleDsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleDsKLSAgICAgICAgCi0g
ICAgICAgIExhYmVsIG1fYXJpdHlDaGVjazsKKworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc0Fy
aXR5T0tFbnRyeTsKKyAgICAgICAgTGFiZWwgbV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjazsKKyAg
ICAgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjazsKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExpbmtCdWZmZXI+IG1fbGlua0J1ZmZlcjsKIAogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SklURGlzYXNzZW1ibGVyPiBtX2Rpc2Fzc2VtYmxlcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24q
IGkKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQ2Fs
bExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGlu
Zm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBT
dGFja0FyZ3MsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKIApAQCAtMjExLDEyICsyMTEsMTIgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdp
c3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
LCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbW92ZShU
cnVzdGVkSW1tUHRyKGluZm8pLCByZWdUMik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8p
LCBub25BcmdHUFIwKTsKIAogICAgIGVtaXRMb2FkKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVn
VDEsIHJlZ1QwKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmly
dHVhbFRodW5rRm9yKG1fdm0sICppbmZvKTsKLSAgICBpbmZvLT5zZXRTbG93U3R1YihjcmVhdGVK
SVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICptX3ZtLCBudWxscHRyLCB0cnVlKSk7Ci0gICAg
ZW1pdE5ha2VkQ2FsbCh2aXJ0dWFsVGh1bmsuY29kZSgpKTsKKyAgICBKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmlu
Zm8pOworICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxU
aHVuay5jb2RlUmVmKCksICptX3ZtLCBudWxscHRyLCB0cnVlKSk7CisgICAgZW1pdE5ha2VkQ2Fs
bCh2aXJ0dWFsVGh1bmsuZW50cnlGb3IoU3RhY2tBcmdzKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVy
KSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tT
dGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7
CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0lu
Zm9JbmRleCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Io
b3Bjb2RlSUQpLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5m
by0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpLCBTdGFja0Fy
Z3MsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKICAgICBtX2NhbGxDb21w
aWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbkluZm8oKSk7CiAgICAgbV9jYWxsQ29t
cGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4gPSBhZGRyZXNzT2ZM
aW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKQEAgLTMxNywxMiArMzE3LDEzIEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1f
Y2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVn
VDIpOworICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25J
bmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGNhbGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9w
X3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykKICAgICAgICAg
ZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVt
aXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtH
ZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwog
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJv
bVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2
aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFy
YXJnc0ZyYW1lKE9wY29kCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgQ2FsbEZy
YW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkpKTsKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVy
KHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6Q2FsbFZhcmFyZ3MpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKQEAgLTk4LDYgKzEwMCw5IEBAIHZvaWQgSklUOjpjb21waWxlQ2Fs
bEV2YWwoSW5zdHJ1Y3Rpb24qIGkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBzdGFja1BvaW50ZXJSZWdp
c3RlciwgcmVnVDEpOwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNzKHJl
Z1QxLCBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKIAorICAgIGluY3JlbWVudENv
dW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRo
aXMsIFZNOjpDYWxsRXZhbCk7CisKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRl
ck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCgpOwogCkBAIC0xMTMsNyArMTE4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJ
bnN0cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZv
KCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0lu
Zm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDAp
OwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1p
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CkBAIC0xNTQsMTQgKzE1OSwyMyBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RF
X0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50cyksIGNhbGxfYW5kX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19vcGNvZGVzX211
c3RfYmVfc2FtZV9sZW5ndGgpOwogCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbnVsbHB0cjsK
KyAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKKwog
ICAgIGlmIChvcGNvZGVJRCAhPSBvcF9jYWxsX2V2YWwpCiAgICAgICAgIGluZm8gPSBtX2NvZGVC
bG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFy
YXJncyB8fCBvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMpCiAgICAgICAgIGNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb24sIGluZm8pOwogICAgIGVsc2UgewotICAgICAgICBpbnQgYXJnQ291bnQgPSBpbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gaW5zdHJ1
Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOwogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAt
aW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwogCisjaWYgRU5BQkxFKEJBU0VMSU5FX1JFR0lTVEVS
X0FSR1VNRU5UX0NBTExTKQorICAgICAgICBpZiAoTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUyAmJiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9j
b25zdHJ1Y3QpKSB7CisgICAgICAgICAgICBhcmd1bWVudHNMb2NhdGlvbiA9IGFyZ3VtZW50c0xv
Y2F0aW9uRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgICAgIGluZm8tPnNldFByb3ZpZGVzUmVnaXN0
ZXJBbmRTdGFja0FyZ3VtZW50cygpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBpZiAo
b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFy
Z3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAgICAgICAgSnVtcCBk
b25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CkBAIC0xNzEsMTUgKzE4NSwyNSBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIH0KICAgICAK
ICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gIT0gU3Rh
Y2tBcmdzKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgdW5zaWduZWQgcmVn
aXN0ZXJBcmdzID0gc3RkOjptaW4oYXJnQ291bnQsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmcgPSAwOyBhcmcg
PCByZWdpc3RlckFyZ3M7IGFyZysrKQorICAgICAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJnKSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmcpKTsKKyAgICAg
ICAgfQogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsgc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQuCisKKyAg
ICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CiAgICAgCiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihs
b2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09m
ZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8g
cmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBHUFJSZWcg
Y2FsbGVlUmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnaXN0ZXIpOworICAgIHN0b3JlNjQo
Y2FsbGVlUmVnaXN0ZXIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwp
IHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTE4NywxNiArMjEx
LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICB9CiAK
ICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKLSAgICBKdW1w
IHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09m
TGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CisgICAgSnVtcCBzbG93Q2Fz
ZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgY2FsbGVlUmVnaXN0ZXIsIGFkZHJlc3NP
ZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09
IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpj
YWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1Qw
KTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCksIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBjYWxs
ZWVSZWdpc3Rlcik7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChDYWxsQ29tcGls
YXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRl
eF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBtX2Nh
bGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyA9IGluZm87
CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CisgICAgICAgIGluY3JlbWVu
dENvdW50ZXIodGhpcywgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICBDYWxsRnJhbWVTaHVmZmxl
RGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9j
YWxzID0KQEAgLTIwOSw3ICsyMzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJCiAgICAgICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIH0K
ICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0KLSAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6
OmluR1BSKHJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6
aW5HUFIoY2FsbGVlUmVnaXN0ZXIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIHNodWZmbGVEYXRh
LnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAgICAgICAgIGluZm8tPnNl
dEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICBDYWxsRnJhbWVTaHVmZmxl
cigqdGhpcywgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAtMjQ2LDkgKzI3
MiwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlECiAgICAgaWYg
KG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAg
ICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyksIHJl
Z1QyKTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2FsbENvbXBpbGF0aW9u
SW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8pLCBub25BcmdHUFIwKTsKIAotICAgIG1fY2FsbENvbXBpbGF0aW9u
SW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2Fs
bChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAg
bV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRp
b24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9u
KCkpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0g
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MpIHsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERpZFJl
dHVybkZyb21UYWlsQ2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5j
cHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKSVRDb2RlOjpl
eGVjdXRlKFZNKiB2bSwgUHJvdG9DYQogCiAgICAgaWYgKCFmdW5jdGlvbiB8fCAhcHJvdG9DYWxs
RnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpIHsKICAgICAgICAgQVNTRVJUKCFwcm90b0NhbGxGcmFt
ZS0+bmVlZEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIGVudHJ5QWRkcmVzcyA9IGV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JDYWxsKFN0YWNrQXJn
c0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9IGVsc2UK
LSAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JDYWxs
KFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3JpcHQoZW50cnlBZGRy
ZXNzLCB2bSwgcHJvdG9DYWxsRnJhbWUpKTsKICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCkg
PyBqc051bGwoKSA6IHJlc3VsdDsKIH0KQEAgLTE2Miw5ICsxNjIsOSBAQCBEaXJlY3RKSVRDb2Rl
OjpEaXJlY3RKSVRDb2RlKEpJVFR5cGUgaml0CiB7CiB9CiAKLURpcmVjdEpJVENvZGU6OkRpcmVj
dEpJVENvZGUoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5
Q2hlY2ssIEpJVFR5cGUgaml0VHlwZSkKLSAgICA6IEpJVENvZGVXaXRoQ29kZVJlZihyZWYsIGpp
dFR5cGUpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNrKQorRGlyZWN0SklU
Q29kZTo6RGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcywgSklUVHlw
ZSBqaXRUeXBlKQorICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKGVudHJpZXMuY29kZVJlZigpLCBq
aXRUeXBlKQorICAgICwgbV9lbnRyeVBvaW50cyhlbnRyaWVzKQogewogfQogCkBAIC0xNzIsMjUg
KzE3MiwxNiBAQCBEaXJlY3RKSVRDb2RlOjp+RGlyZWN0SklUQ29kZSgpCiB7CiB9CiAKLXZvaWQg
RGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJ
VENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCit2b2lkIERpcmVjdEpJVENvZGU6OmluaXRp
YWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcykKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghbV9yZWYpOwotICAgIG1fcmVmID0gcmVmOwotICAgIG1fd2l0aEFyaXR5
Q2hlY2sgPSB3aXRoQXJpdHlDaGVjazsKKyAgICBtX3JlZiA9IGVudHJpZXMuY29kZVJlZigpOwor
ICAgIG1fZW50cnlQb2ludHMgPSBlbnRyaWVzOwogfQogCi1KSVRDb2RlOjpDb2RlUHRyIERpcmVj
dEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorSklUQ29kZTo6
Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSB0eXBl
KQogewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJl
ZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICByZXR1cm4gbV9yZWYu
Y29kZSgpOwotICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlDaGVjazsKLSAg
ICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29kZVB0
cigpOworICAgIHJldHVybiBtX2VudHJ5UG9pbnRzLmVudHJ5Rm9yKHR5cGUpOwogfQogCiBOYXRp
dmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlwZSkKQEAgLTIxMyw3ICsyMDQs
NyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENvCiAgICAgbV9yZWYg
PSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNh
bGwoQXJpdHlDaGVja01vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJVENvZGU6OmFkZHJl
c3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCEhbV9yZWYp
OwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgorI2lu
Y2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCkBA
IC0xNzMsOSArMTczLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaml0Q29kZS0+aml0VHlw
ZSgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJp
dHlDaGVja01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50
cnlQb2ludFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkg
eyByZXR1cm4gZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB1
bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpID0gMDsKICAgICAKQEAgLTIy
NCwxNSArMjIzLDE1IEBAIHByb3RlY3RlZDoKIGNsYXNzIERpcmVjdEpJVENvZGUgOiBwdWJsaWMg
SklUQ29kZVdpdGhDb2RlUmVmIHsKIHB1YmxpYzoKICAgICBEaXJlY3RKSVRDb2RlKEpJVFR5cGUp
OwotICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjaywgSklU
VHlwZSk7CisgICAgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYsIEpJVFR5cGUp
OwogICAgIHZpcnR1YWwgfkRpcmVjdEpJVENvZGUoKTsKICAgICAKLSAgICB2b2lkIGluaXRpYWxp
emVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOworICAgIHZvaWQgaW5p
dGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZik7CiAKLSAgICBDb2RlUHRy
IGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAgICBDb2RlUHRyIGFk
ZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBD
b2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRyeVBvaW50
czsKIH07CiAKIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklUQ29kZVdpdGhDb2RlUmVm
IHsKQEAgLTI0Myw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXpl
Q29kZVJlZihDb2RlUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVj
a01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5
cGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeXBvaW50cy5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlwb2ludHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEpJVEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgSklURW50cnlwb2ludHNfaAor
CisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK2NsYXNz
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86ICBDb25zaWRlciB1c2lu
ZyBhIG1hY3JvIGJhc2UgY29udHJ1Y3Rpb24gdG8gZ2V0IGVudW0gImluaGVyaXRlbmNlIgorZW51
bSBBcmd1bWVudHNMb2NhdGlvbiA6IHVuc2lnbmVkIHsKKyAgICBTdGFja0FyZ3MgPSAwLAorI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzLAorICAgIFJlZ2lz
dGVyQXJnczJJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3MzSW5SZWdpc3RlcnMsCisgICAg
UmVnaXN0ZXJBcmdzNEluUmVnaXN0ZXJzLAorI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlckFy
Z3M1SW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNkluUmVnaXN0ZXJzLAorI2VuZGlmCisj
ZW5kaWYKKyAgICBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrCit9OworCisvLyBUaGlzIGVu
dW0gbmVlZHMgdG8gaGF2ZSB0aGUgc2FtZSBlbnVtZXJhdG9yIG9yZGVyaW5nIGFzIEFyZ3VtZW50
c0xvY2F0aW9uLgorZW51bSBUaHVua0VudHJ5UG9pbnRUeXBlIDogdW5zaWduZWQgeworICAgIFN0
YWNrQXJnc0VudHJ5ID0gMCwKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIFJlZ2lzdGVyMUFyZ0Vu
dHJ5LAorICAgIFJlZ2lzdGVyMkFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjNBcmdzRW50cnksCisg
ICAgUmVnaXN0ZXI0QXJnc0VudHJ5LAorI2lmIENQVShBUk02NCkKKyAgICBSZWdpc3RlcjVBcmdz
RW50cnksCisgICAgUmVnaXN0ZXI2QXJnc0VudHJ5LAorI2VuZGlmCisjZW5kaWYKKyAgICBUaHVu
a0VudHJ5UG9pbnRUeXBlQ291bnQKK307CisKK2VudW0gRW50cnlQb2ludFR5cGUgeworICAgIFN0
YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eSwKKyAgICBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgUmVnaXN0ZXJB
cmdzUG9zc2libGVFeHRyYUFyZ3MsCisgICAgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSZWdpc3RlckFyZ3MxLAorICAgIFJlZ2lzdGVyQXJnczIs
CisgICAgUmVnaXN0ZXJBcmdzMywKKyAgICBSZWdpc3RlckFyZ3M0LAorI2lmIENQVShBUk02NCkK
KyAgICBSZWdpc3RlckFyZ3M1LAorICAgIFJlZ2lzdGVyQXJnczYsCisjZW5kaWYKKyNlbmRpZgor
ICAgIE51bWJlck9mRW50cnlQb2ludFR5cGVzCit9OworCitjbGFzcyBKSVRFbnRyeVBvaW50cyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZFbnRyeVR5cGVzID0gRW50cnlQb2ludFR5
cGU6Ok51bWJlck9mRW50cnlQb2ludFR5cGVzOworCisgICAgSklURW50cnlQb2ludHMoKQorICAg
IHsKKyAgICAgICAgY2xlYXJFbnRyaWVzKCk7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMo
Q29kZVB0ciByZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRFbnRyeSwgQ29kZVB0ciByZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LAorICAgICAgICBDb2RlUHRyIHJlZ2lzdGVyQXJn
c0NoZWNrQXJpdHlFbnRyeSwgQ29kZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgewor
ICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZF0g
PSByZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50
c1tSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc10gPSByZWdpc3RlckFyZ3NQb3NzaWJsZUV4
dHJhQXJnc0VudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5XSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBv
aW50c1tTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRdID0gc3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkRW50cnk7CisgICAgICAgIG1fZW50cnlQb2ludHNbU3RhY2tBcmdzTXVzdENo
ZWNrQXJpdHldID0gc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5OworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUzsgaSArKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbcmVn
aXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGkpXSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJp
dHlFbnRyeTsKKyNlbmRpZgorCisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihFbnRyeVBv
aW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50cnlQb2ludHNbdHlwZV07
CisgICAgfQorCisgICAgdm9pZCBzZXRFbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0eXBlLCBDb2Rl
UHRyIGVudHJ5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPCBOdW1iZXJPZkVudHJ5UG9p
bnRUeXBlcyk7CisgICAgICAgIG1fZW50cnlQb2ludHNbdHlwZV0gPSBlbnRyeTsKKyAgICB9CisK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRFbnRyeVBvaW50cywgbV9lbnRy
eVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRUeXBlIHJlZ2lz
dGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudCh1bnNpZ25lZCBhcmdDb3VudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChhcmdDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJnQ291
bnQgPSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgaWYg
KCFyZWdpc3RlckFyZ0NvdW50IHx8IHJlZ2lzdGVyQXJnQ291bnQgIT0gYXJnQ291bnQpCisgICAg
ICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihSZWdpc3RlckFyZ3MxICsgcmVnaXN0ZXJB
cmdDb3VudCAtIDEpOworICAgIH0KKworICAgIHN0YXRpYyBFbnRyeVBvaW50VHlwZSByZWdpc3Rl
ckVudHJ5VHlwZUZvckFyZ3VtZW50VHlwZShBcmd1bWVudHNMb2NhdGlvbiB0eXBlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHR5cGUgIT0gU3RhY2tBcmdzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0g
UmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaykKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdzMSArIHR5cGUgLSBSZWdpc3RlckFyZ3MxSW5S
ZWdpc3RlcnMpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAg
ICAgIG1fZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisK
KyAgICBKSVRFbnRyeVBvaW50cyYgb3BlcmF0b3I9KGNvbnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhl
cikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsg
aS0tOykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRz
W2ldOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBD
b2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKK2NsYXNzIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZiA6IHB1YmxpYyBKSVRFbnRyeVBvaW50cyB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKworICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb25zdCBKSVRFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgICAgICA6IEpJVEVudHJ5
UG9pbnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAg
eworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIGNv
bnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhlcikKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhvdGhl
cikKKyAgICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorICAgIAorICAg
IEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQdHIgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hl
Y2tBcml0eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKENvZGVQdHIoKSwgQ29kZVB0
cigpLCBDb2RlUHRyKCksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LCBzdGFj
a0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAg
eworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENv
ZGVQdHIgcmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRy
IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAg
OiBKSVRFbnRyeVBvaW50cyhyZWdpc3RlckFyZ3NOb0NoZWNrc1JlcXVpcmVkRW50cnksIHJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksCisgICAgICAgICAgICByZWdpc3RlckFyZ3ND
aGVja0FyaXR5RW50cnksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAg
ICAgICAgICAgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihj
b2RlUmVmKQorICAgIHsKKyAgICB9CisKKyAgICBDb2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBt
X2NvZGVSZWY7IH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsKK307CisKK2lu
bGluZSBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbkZvcih1bnNpZ25lZCBhcmd1
bWVudENvdW50KQoreworICAgIGlmICghTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyB8fCAhYXJndW1lbnRDb3VudCkKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnczsKKyAg
ICAKKyAgICBhcmd1bWVudENvdW50ID0gc3RkOjptaW4oTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUyArIDEsIGFyZ3VtZW50Q291bnQpOworICAgIAorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxBcmd1bWVudHNMb2NhdGlvbj4oQXJndW1lbnRzTG9jYXRpb246OlJlZ2lzdGVy
QXJnczFJblJlZ2lzdGVycyArIGFyZ3VtZW50Q291bnQgLSAxKTsKK30KKworaW5saW5lIEVudHJ5
UG9pbnRUeXBlIHJlZ2lzdGVyRW50cnlQb2ludFR5cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3Vu
dCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQgfHwgYXJndW1lbnRDb3VudCA+IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJldHVybiBSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQ
b2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgYXJndW1lbnRDb3VudCAt
IDEpOworfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGVGb3IoQXJndW1l
bnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRMb2NhdGlv
biA9PSBTdGFja0FyZ3MpCisgICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsK
KyAgICAKKyAgICBpZiAoYXJndW1lbnRMb2NhdGlvbiA9PSBSZWdpc3RlckFyZ3NXaXRoRXh0cmFP
blN0YWNrKQorICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisgICAg
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihFbnRyeVBvaW50VHlwZTo6
UmVnaXN0ZXJBcmdzMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVudExvY2F0aW9uIC0g
UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzKSk7Cit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRU
eXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2Nh
dGlvbikKK3sKKyAgICB1bnNpZ25lZCBhcmd1bWVudExvY2F0aW9uSW5kZXggPSBzdGQ6Om1pbihS
ZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrIC0gMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFy
Z3VtZW50TG9jYXRpb24pKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50
VHlwZT4oYXJndW1lbnRMb2NhdGlvbkluZGV4KTsKK30KKworaW5saW5lIFRodW5rRW50cnlQb2lu
dFR5cGUgdGh1bmtFbnRyeVBvaW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQorewor
ICAgIGlmICghTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAg
ICAgcmV0dXJuIFN0YWNrQXJnc0VudHJ5OworCisgICAgYXJndW1lbnRDb3VudCA9IG51bWJlck9m
UmVnaXN0ZXJBcmd1bWVudHNGb3IoYXJndW1lbnRDb3VudCk7CisgICAgCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KFRodW5rRW50cnlQb2ludFR5cGU6OlJlZ2lz
dGVyMUFyZ0VudHJ5ICsgYXJndW1lbnRDb3VudCAtIDEpOworfQorCitjbGFzcyBKSVRKU0NhbGxU
aHVua0VudHJ5UG9pbnRzV2l0aFJlZiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgQ29kZVB0cjsKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBD
b2RlUmVmOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBU
aHVua0VudHJ5UG9pbnRUeXBlOjpUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7CisKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZikKKyAgICAgICAgOiBt
X2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYoY29uc3QgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG90
aGVyKQorICAgICAgICA6IG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAgeworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFbnRyeVR5cGVzOyBpKyspCisgICAg
ICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50c1tpXTsKKyAgICB9
CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2VudHJ5UG9pbnRzW3R5cGVdOworICAgIH0KKworICAgIENvZGVQ
dHIgZW50cnlGb3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pCisgICAgewor
ICAgICAgICByZXR1cm4gZW50cnlGb3IodGh1bmtFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudHNM
b2NhdGlvbikpOworICAgIH0KKworICAgIHZvaWQgc2V0RW50cnlGb3IoVGh1bmtFbnRyeVBvaW50
VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0
eXBlXSA9IGVudHJ5OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRy
eUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zm
c2V0b2YoSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYsIG1fZW50cnlQb2ludHNbdHlw
ZV0pOworICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisKKyAgICBD
b2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBtX2NvZGVSZWY7IH0KKworICAgIEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmJiBvcGVyYXRvcj0oY29uc3QgSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9jb2RlUmVmID0gb3RoZXIu
bV9jb2RlUmVmOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7
IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50
c1tpXTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7CisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJl
ck9mRW50cnlUeXBlc107Cit9OworCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEpJVEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUOjpD
b2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuYykKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVQ6OnByaXZhdGVDb21waWxlSklU
RW50cnlOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgYWJsZSB0byBsb2cgU2hhZG93Q2hpY2tlbiBwcm9sb2d1ZSBw
YWNrZXRzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU2ODkKQEAgLTEyOSw3ICsxMjksOSBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGls
ZUNUSU5hdGl2CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIEdMT0JB
TF9USFVOS19JRCk7CiAKICAgICBwYXRjaEJ1ZmZlci5saW5rKG5hdGl2ZUNhbGwsIEZ1bmN0aW9u
UHRyKGZ1bmMpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQg
Q1RJIG5hdGl2ZSBjYWxsIikpOworICAgIEpJVDo6Q29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG5hdGl2ZSBjYWxsIikpOworICAgIAorICAgIHJl
dHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVS
ZWYuY29kZSgpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi1KSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbikKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBKSVQ6OnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiB2bSwgTmF0
aXZlRnVuY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHZtLT5nZXRDVElTdHViKG5hdGl2ZUNhbGxHZW5l
cmF0b3IpOworICAgIHJldHVybiB2bS0+Z2V0SklURW50cnlTdHViKG5hdGl2ZUNhbGxHZW5lcmF0
b3IpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU3LDIxICs5NTcsMjMgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIEpTU2NvcGUqIHNjb3BlID0g
Y2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29k
ZVB0cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciwgY29kZVB0ckZvckxpbmtp
bmc7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAg
ICBpZiAoIWNhbGxMaW5rSW5mby0+cHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCkg
JiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgY29k
ZVB0ckZvckxpbmtpbmcgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVy
QXJnc011c3RDaGVja0FyaXR5KTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgfSBlbHNl
IGlmIChleGVjdXRhYmxlLT5pc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIFdl
YkFzc2VtYmx5RXhlY3V0YWJsZSogd2ViQXNzZW1ibHlFeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8
V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIGNvZGVCbG9jayA9
IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICBBU1NF
UlQoY29kZUJsb2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVu
dHJ5UG9pbnRUeXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAg
ICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNv
ZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkp
OworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICBjb2RlUHRyID0gd2ViQXNzZW1ibHlFeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9y
KGtpbmQsIGVudHJ5VHlwZSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpOwpAQCAtOTkzLDE3ICs5OTUsMzggQEAgU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIGNvZGVCbG9j
ayA9ICpjb2RlQmxvY2tTbG90OwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKLSAgICAg
ICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8t
PmlzVmFyYXJncygpKQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAg
ICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJp
dHkpOworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CisgICAgICAgIGJvb2wgdXNl
U3RhY2tFbnRyeSA9IGNvZGVCbG9jay0+cHJlZmVyc1N0YWNrQXJndW1lbnRzKCkgJiYgY2FsbExp
bmtJbmZvLT5wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMoKTsKKyAgICAgICAgc2l6
ZV90IGNhbGxlckFyZ3VtZW50Q291bnQgPSBleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpOworICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICBpZiAoY2Fs
bGVyQXJndW1lbnRDb3VudCA8IGNhbGxlZUFyZ3VtZW50Q291bnQgfHwgY2FsbExpbmtJbmZvLT5p
c1ZhcmFyZ3MoKSkgeworICAgICAgICAgICAgaWYgKCF1c2VTdGFja0VudHJ5ICYmIGNhbGxMaW5r
SW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgICAgIGNvZGVQdHJG
b3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJVEVu
dHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJndW1l
bnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtpbmcpCisgICAg
ICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5Owor
ICAgICAgICAgICAgKHZvaWQpIGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5k
LCBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpKTsK
KyAgICAgICAgfSBlbHNlIGlmICghdXNlU3RhY2tFbnRyeSAmJiBjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIGlmIChjYWxsZXJBcmd1bWVudENvdW50
ID09IGNhbGxlZUFyZ3VtZW50Q291bnQgfHwgY2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgIGNvZGVQ
dHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJl
Z2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50
cnlwb2ludEZvcihraW5kLCBKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1
bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNv
ZGVQdHJGb3JMaW5raW5nKQorICAgICAgICAgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBSZWdpc3RlckFyZ3NQb3Nz
aWJsZUV4dHJhQXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyAgUHJlcG9wdWxh
dGUgdGhlIGVudHJ5IHBvaW50cyB0aGUgdmlydHVhbCB0aHVuayBtaWdodCB1c2UuCisgICAgICAg
ICAgICAodm9pZCkgZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5
UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOworCisgICAg
ICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIGlmICghY2FsbExpbmtJbmZvLT5z
ZWVuT25jZSgpKQogICAgICAgICBjYWxsTGlua0luZm8tPnNldFNlZW4oKTsKICAgICBlbHNlCi0g
ICAgICAgIGxpbmtGb3IoZXhlY0NhbGxlZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxs
ZWUsIGNvZGVQdHIpOworICAgICAgICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8s
IGNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRyRm9yTGlua2luZyA/IGNvZGVQdHJGb3JMaW5raW5n
IDogY29kZVB0cik7CiAgICAgCiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2Fs
bE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUp
KTsKIH0KQEAgLTEwMzgsNyArMTA2MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rRGlyZWN0Q2EKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1
bmN0aW9uKCkpCi0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtp
bmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3Ioa2luZCwgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpID8gUmVn
aXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkgOiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTEwNTAs
MTMgKzEwNzMsMjUgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYQog
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5
OworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CiAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50U3RhY2tTbG90cyA9IGNhbGxMaW5rSW5mby0+bWF4TnVtQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7
CisgICAgICAgIHNpemVfdCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA9IHN0YXRpY19jYXN0PHNp
emVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICBpZiAoY2FsbExpbmtJ
bmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAvLyAgUmVnQ0MgVG9k
bzogIFRoaXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAg
ICAgICAgICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFy
Z3VtZW50c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Ns
b3RzID4gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0g
cmVnaXN0ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9
IGVsc2UgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQor
ICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAg
ICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5
KTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihr
aW5kLCBlbnRyeVR5cGUpOwogICAgIH0KICAgICAKICAgICBsaW5rRGlyZWN0Rm9yKGV4ZWMsICpj
YWxsTGlua0luZm8sIGNvZGVCbG9jaywgY29kZVB0cik7CkBAIC0xMTE0LDggKzExNDksMTUgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogI2VuZGlmCiAgICAgICAg
IH0KICAgICB9CisgICAgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkg
eworICAgICAgICAvLyBQdWxsIGludG8gdGhlIGNhY2hlIHRoZSBhcml0eSBjaGVjayByZWdpc3Rl
ciBlbnRyeSBpZiB0aGUgY2FsbGVyIHdhbnRzIGEgcmVnaXN0ZXIgZW50cnkuCisgICAgICAgIC8v
IFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSBnZW5lcmljIHZpcnR1YWwgY2FsbCB0aHVuay4KKyAg
ICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdz
TXVzdENoZWNrQXJpdHkpOworICAgICAgICAodm9pZCkgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZv
cihraW5kLCBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9u
KCkpKTsKKworICAgIH0KICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShy
ZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVu
a3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVD
YWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdl
bmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIs
IG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0
aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6
OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1
bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAo
IXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZl
Q29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2
ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1
bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50
cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50
cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRp
b24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZh
bHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBn
ZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRo
cmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9
IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7
Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBu
dWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5l
cmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9y
KHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5
LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2
ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5j
dGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxl
KGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0
aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9u
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51
bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgog
ICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRF
bnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlO
YXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSos
IE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRp
dmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRv
ciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9j
dGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50
cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1f
aml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdl
bmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0Vu
dHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA4NDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQp
OworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNl
bmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQog
ICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50
MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBG
UFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVu
dFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAg
ICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgp
OworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBz
dGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMg
dXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lz
dGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5
IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjgsMjEgKzU2OCwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1
bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJl
Zi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBv
aW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8s
IHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9
CiAKIHZvaWQgbGlua0ZvcigKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAog
ICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZl
cnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2Rl
UmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8uaXNEaXJlY3QoKSkgewogICAgICAgICBjYWxs
TGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIHVubGlu
a0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlu
a0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwogICAgIAotICAgIHJldmVydENhbGwoJnZtLCBj
YWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAg
IHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBA
IC02ODMsOSArNjgzLDkgQEAgdm9pZCBsaW5rVmlydHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtp
bmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVy
RnJhbWUoKS0+Y29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlu
a0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVu
ay5jb2RlUmVmKCksICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAt
NzM0LDYgKzczNCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExp
bmtJbmZvLnNldEhhc1NlZW5DbG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGlj
Q2FsbENhc2U+IGNhbGxDYXNlczsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91
dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlz
dCkgewpAQCAtNzUwLDcgKzc1MSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsKICAgICAgICAgICAgIC8vIElmIHdlIGNhbm5vdCBo
YW5kbGUgYSBjYWxsZWUsIGVpdGhlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBDb2RlQmxvY2sg
b3IgYmVjYXVzZSBhcml0eSBtaXNtYXRjaCwKICAgICAgICAgICAgIC8vIGFzc3VtZSB0aGF0IGl0
J3MgYmV0dGVyIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIGJlIGEgdmlydHVhbCBjYWxsLgotICAg
ICAgICAgICAgaWYgKCFjb2RlQmxvY2sgfHwgZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8
IGNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSkgeworICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2sg
fHwgY2FsbGVyQXJndW1lbnRDb3VudCA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAg
ICAgICAgIGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNzcxLDYgKzc3Miw5IEBAIHZvaWQgbGlua1Bv
bHltb3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUigpKTsKKworICAgIGlmIChjYWxs
TGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQ
UiA9PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwogICAgIAogICAgIENDYWxsSGVscGVy
cyBzdHViSml0KHZtLCBjYWxsZXJDb2RlQmxvY2spOwogICAgIApAQCAtNzkzLDYgKzc5Nyw4IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CiAg
ICAgICAgIGlmIChmcmFtZVNodWZmbGVyKQogICAgICAgICAgICAgc2NyYXRjaEdQUiA9IGZyYW1l
U2h1ZmZsZXItPmFjcXVpcmVHUFIoKTsKKyAgICAgICAgZWxzZSBpZiAoY2FsbExpbmtJbmZvLmFy
Z3VtZW50c0luUmVnaXN0ZXJzKCkpCisgICAgICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6
bm9uQXJnR1BSMDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEFzc2Vt
Ymx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpOwogICAgICAgICAvLyBWZXJp
ZnkgdGhhdCB3ZSBoYXZlIGEgZnVuY3Rpb24gYW5kIHN0YXNoIHRoZSBleGVjdXRhYmxlIGluIHNj
cmF0Y2hHUFIuCkBAIC04NTgsMTMgKzg2NCwyMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgR1BSUmVnIGZhc3RDb3VudHNCYXNlR1BSOwogICAgIGlmIChmcmFtZVNodWZmbGVyKQog
ICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IGZyYW1lU2h1ZmZsZXItPmFjcXVpcmVHUFIoKTsK
KyAgICBlbHNlIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyNpZiBD
UFUoQVJNNjQpCisgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0gR1BSSW5mbzo6bm9uQXJnR1BS
MTsKKyNlbHNlCisgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0gR1BSSW5mbzo6cmVnVDA7Cisj
ZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPQogICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY29tcGFyaXNv
blZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgfQotICAgIHN0dWJKaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNCYXNl
R1BSKTsKKyAgICBpZiAoZmFzdENvdW50cykKKyAgICAgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihmYXN0Q291bnRzLmdldCgpKSwgZmFzdENvdW50c0Jhc2VHUFIp
OwogICAgIGlmICghZnJhbWVTaHVmZmxlciAmJiBjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKQog
ICAgICAgICBzdHViSml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKworICAgIGluY3JlbWVu
dENvdW50ZXIoJnN0dWJKaXQsIFZNOjpQb2x5bW9ycGhpY0NhbGwpOworCiAgICAgQmluYXJ5U3dp
dGNoIGJpbmFyeVN3aXRjaChjb21wYXJpc29uVmFsdWVHUFIsIGNhc2VWYWx1ZXMsIEJpbmFyeVN3
aXRjaDo6SW50UHRyKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgd2hp
bGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CkBAIC04NzMsOCArODg5LDMwIEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9
IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VS
VCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CisKKyAgICAgICAg
RW50cnlQb2ludFR5cGUgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbENhc2VzW2Nhc2VJbmRleF0uY29k
ZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAgICAgICAgICAg
c2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlQXJndW1lbnRD
b3VudCA9PSBjYWxsZXJBcmd1bWVudENvdW50IHx8IGNhbGxlZUFyZ3VtZW50Q291bnQgPj0gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAg
ICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRy
eUZvckFyZ0NvdW50ID0gSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1l
bnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFu
dC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxs
KGVudHJ5Rm9yQXJnQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVudHJ5Rm9yQXJnQ291bnQ7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVyQXJnc1Bv
c3NpYmxlRXh0cmFBcmdzOworICAgICAgICB9CisKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHIgPQotICAgICAgICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7
CisgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNh
bGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlUeXBlKTsKKyAgICAgICAgQVNTRVJUKGNvZGVQdHIp
OwogICAgICAgICAKICAgICAgICAgaWYgKGZhc3RDb3VudHMpIHsKICAgICAgICAgICAgIHN0dWJK
aXQuYWRkMzIoCkBAIC05MDcsMTUgKzk0NSwxNSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAjZW5kaWYKICAgICAgICAgZnJhbWVTaHVmZmxlci0+cHJlcGFyZUZvclNsb3dQYXRoKCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVn
VDApOworLy8gIFJlZ0NDIFRvZG86ICBzdHViSml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpy
ZWdUMCk7ICAvLyAgTWF5IG5lZWQgZm9yIDMyIGJpdAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOwogI2VuZGlmCiAgICAgfQotICAgIHN0dWJKaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJl
Z1QyKTsKLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5m
bzo6cmVnVDQpOwotICAgIAotICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oR1BSSW5mbzo6cmVnVDQpOworICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBzdHViSml0LnJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgc3R1Ykpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIHNsb3cgPSBzdHViSml0
Lmp1bXAoKTsKICAgICAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIHN0dWJK
aXQsIGNhbGxlckNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKQEAgLTkzNiw3ICs5
NzQsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoZG9uZSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQo
MCkpOwogICAgIGVsc2UKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0lu
Zm8uaG90UGF0aE90aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhzbG93LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWND
YWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywg
Q29kZUxvY2F0aW9uTGFiZWwodm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rUG9seW1v
cnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby5hcmd1bWVudHNM
b2NhdGlvbigpKSkpOwogICAgIAogICAgIGF1dG8gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZigqbmV3
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFX0ZPUigK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVO
QUJMRShKSVQpCiAKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVRFbnRyeVBvaW50cy5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTM3LDE4ICszOCwzOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUIDogcHVibGljIEpTSW50ZXJmYWNlSklU
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgVGhpc0FyZ3VtZW50ID0g
LTE7Ci0gICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoVk0qIHZtLCBpbnQgZXhwZWN0ZWRBcmdD
b3VudCkKKyAgICAgICAgZW51bSBBcmdMb2NhdGlvbiB7IE9uU3RhY2ssIEluUmVnaXN0ZXJzIH07
CisKKyAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0Nv
dW50LCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsUmVnaXN0ZXJUeXBlIHNwaWxsVHlwZSA9IEFzc2Vt
Ymx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBBcmdMb2NhdGlvbiBhcmdMb2NhdGlvbiA9IE9uU3Rh
Y2spCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0
ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2
ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgbV9mYWlsdXJl
cy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09IEluUmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSA9IGxhYmVsKCk7
CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgICAg
ICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAgICAgICAg
IC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cwor
ICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBhcmd1
bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdD
b3VudCArIDEpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0ZWRBcmdDb3VudCAr
IDEsIHNwaWxsVHlwZSk7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0g
bGFiZWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CisgICAgICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsK
KyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJl
ciBvZiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gz
MihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1
c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChW
TSogdm0pCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1l
QmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNFbnRyeSA9IExh
YmVsKCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAg
ICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICB9
CkBAIC05NCwxMSArMTE1LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbG9hZElu
dDMyQXJndW1lbnQoYXJndW1lbnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAgICAgICAgICAg
ICBtX2ZhaWx1cmVzLmFwcGVuZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgY2hlY2tKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJRCBhcmd1bWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1pdEp1bXBJZk5v
dEpTQ2VsbChhcmd1bWVudCkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNo
U3RydWN0dXJlKE5vdEVxdWFsLAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJndW1lbnQsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5k
RmFpbHVyZShjb25zdCBKdW1wJiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2Zh
aWx1cmVzLmFwcGVuZChmYWlsdXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGlua0Zh
aWx1cmVIZXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5saW5rKHRoaXMp
OworICAgICAgICAgICAgbV9mYWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJRCBzcmMpCiAg
ICAgICAgIHsKQEAgLTE2NCwxMyArMjAwLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIq
IHRodW5rS2luZCkKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFsaXplKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQogICAgICAg
ICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xP
QkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywg
Q29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwotICAgICAgICAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsg
Zm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBzdGFja0VudHJ5OworICAgICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNFbnRyeS5pc1Nl
dCgpKQorICAgICAgICAgICAgICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
KG1fc3RhY2tBcmd1bWVudHNFbnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgcmVnaXN0ZXJFbnRyeTsKKyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1lbnRzRW50
cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNw
ZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAgICAgICBpZiAo
bV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9y
ZWdpc3RlckFyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50
cnksIHJlZ2lzdGVyRW50cnksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUoKSwgZW50
cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGVudHJ5
LCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBB
c3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIwIGFzIHRoZSBm
aXJzdCBhcmd1bWVudApAQCAtMjA3LDYgKzI1OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJl
czsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRy
eTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVudHNFbnRyeTsK
ICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1fY2FsbHM7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZjsKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
OwogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9yKShWTSop
OwordHlwZWRlZiBKSVRFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVyYXRvcikoVk0q
KTsKK3R5cGVkZWYgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRDYWxsVGh1
bmtFbnRyeUdlbmVyYXRvcikoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9u
IDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHRocm93RXhjZXB0aW9uRnJvbQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwogfQogCitz
dGF0aWMgdm9pZCBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRU
eXBlQ291bnRdKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmdJ
bmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4
LS0gPiAwOykgeworICAgICAgICBlbnRyeVBvaW50c1t0aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFy
Z0luZGV4ICsgMSldID0gaml0LmxhYmVsKCk7CisgICAgICAgIGppdC5lbWl0UHV0QXJndW1lbnRU
b0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgIH0KKworI2lmICFFTkFCTEUoQ0FMTEVSX1NQ
SUxMU19DQUxMRUUpCisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xv
Z3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsK
KyNlbmRpZgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKKyAgICBqaXQuZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckFy
Z3VtZW50Q291bnQoKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisjZW5kaWYKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGppdCk7CisgICAgVU5VU0VEX1BBUkFNKGVudHJ5UG9pbnRz
KTsKKyNlbmRpZgorICAgIGVudHJ5UG9pbnRzW1N0YWNrQXJnc10gPSBqaXQubGFiZWwoKTsKK30K
Kwogc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIFZNKiB2
bSwgU3BydF9KSVRPcGVyYXRpb25fRUNsaSBzbG93UGF0aEZ1bmN0aW9uKQogewpAQCAtODgsNyAr
MTA5LDcgQEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAgICAgLy8gTW92aW5nIHRoZSBzdGFj
ayBkb3duIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsIGJ5dGVzIGdpdmVzIHVzIHJvb20g
Zm9yIG91ciAzIGFyZ3VtZW50cwogICAgIC8vIGFuZCBzcGFjZSBmb3IgdGhlIDE2IGJ5dGUgcmV0
dXJuIGFyZWEuCiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKKyAgICBqaXQubW92ZShHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOwogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMzIpLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KHNsb3dQYXRoRnVuY3Rpb24pKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CkBAIC0xMDAsNyArMTIxLDcgQEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAjZWxzZQogICAg
IGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwp
LCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHNsb3dQYXRoRnVuY3Rp
b24pKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGpp
dCwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CkBAIC0xMjcsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAgICAgaml0
Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICAvLyBUaGUg
cmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBX
ZSB3aWxsIGhlbmNlCiAgICAgLy8gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwg
ZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsCkBAIC0xMzUsNDUgKzE1Niwx
NjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcgogICAgIC8vIHRv
IGJlIGluIHJlZ1QwL3JlZ1QxIChwYXlsb2FkL3RhZyksIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBh
bHJlYWR5CiAgICAgLy8gYmVlbiBhZGp1c3RlZCwgYW5kIGFsbCBvdGhlciByZWdpc3RlcnMgdG8g
YmUgYXZhaWxhYmxlIGZvciB1c2UuCiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7Ci0gICAgCisK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlw
ZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVu
dHJ5UG9pbnRzKTsKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2FsbCk7
CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNhbGwg
c2xvdyBwYXRoIHRodW5rIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsK
KyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKworICAgIGZvciAodW5z
aWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9p
bnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0
RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisg
ICAgICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhd
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGNhbGxFbnRyeVBvaW50czsKK30KKworSklUSlNDYWxs
VGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcihWTSog
dm0pCit7CisgICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0
aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQorICAgIC8vIHNhdmUgdGhlIHJldHVybiBh
ZGRyZXNzIHRvIHRoZSBjYWxsIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2Fs
bAorICAgIC8vIHRvIHBlcmZvcm0gbGlua2luZyBhbmQgbGF6eSBjb21waWxhdGlvbiBpZiBuZWNl
c3NhcnkuIFdlIGV4cGVjdCB0aGUgQ2FsbExpbmtJbmZvCisgICAgLy8gdG8gYmUgaW4gR1BSSW5m
bzo6bm9uQXJnR1BSMCwgdGhlIGNhbGxlZSB0b2JlIGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxs
ZWUoKSwKKyAgICAvLyB0aGUgQ2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeSBiZWVuIGFkanVzdGVk
LCBhbmQgYXJndW1lbnRzIGluIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIC8vIGFuZC9vciBpbiB0
aGUgc3RhY2sgYXMgYXBwcm9wcmlhdGUuCisgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAg
CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5
cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBl
bnRyeVBvaW50cyk7CisKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6bm9uQXJnR1BSMSk7IC8vIFNhdmUgY2FsbGVlJ3MgZnJhbWUgcG9pbnRlcgorICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOworCisgICAgaWYgKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhHUFJJbmZv
Ojpub25BcmdHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2Fs
bGVlKCkpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAp
OworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGlmIChtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1l
SGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJnQ291
bnRSZWcpOworCisgICAgLy8gbG9hZCAidGhpcyIKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJh
bWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKDAsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFy
Z3VtZW50KDApKTsKKworICAgIENDYWxsSGVscGVyczo6SnVtcCBmaWxsVW5kZWZpbmVkW05VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlNdOworICAgIAorICAgIGZvciAodW5z
aWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVmaW5lZFthcmdJ
bmRleF0gPSBqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291
bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKTsKKyAgICAgICAg
aml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwg
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICB9CisK
KyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZUZpbGxpbmcgPSBqaXQuanVtcCgpOworCisgICAg
Zm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICBmaWxsVW5kZWZp
bmVkW2FyZ0luZGV4XS5saW5rKCZqaXQpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKworICAgIGRvbmVG
aWxsaW5nLmxpbmsoJmppdCk7CisjZW5kaWYKKworCisgICAgaml0LnJldCgpOworCisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxp
bmsgZGlyZWN0IGNhbGwgdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYo
Y29kZVJlZik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdz
OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7
CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0Vu
dHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIGNhbGxFbnRyeVBvaW50czsKIH0KIAogLy8gRm9yIGNs
b3N1cmUgb3B0aW1pemF0aW9ucywgd2Ugb25seSBpbmNsdWRlIGNhbGxzLCBzaW5jZSBpZiB5b3Un
cmUgdXNpbmcgY2xvc3VyZXMgZm9yCiAvLyBvYmplY3QgY29uc3RydWN0aW9uIHRoZW4geW91J3Jl
IGdvaW5nIHRvIGxvc2UgYmlnIHRpbWUgYW55d2F5LgotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxp
bmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogewogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwogICAgIAorICAgIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdOworCisgICAgY3Jl
YXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5KGppdCwgZW50cnlQb2ludHMpOworCiAgICAg
c2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCk7CiAgICAg
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3JwaGlj
IGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBwb2x5bW9ycGhpYyBjYWxsIHNs
b3cgcGF0aCB0aHVuayIpKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBj
YWxsRW50cnlQb2ludHMgPSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVm
KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5
SW5kZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAg
ICAgY2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2lu
dFR5cGU+KGVudHJ5SW5kZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihl
bnRyeVBvaW50c1tlbnRyeUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2FsbEVu
dHJ5UG9pbnRzOwogfQogCiAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4g
YSBtZWdhbW9ycGhpYyB2aXJ0dWFsIGNhbGwgdnMuIGEgc2xvdwogLy8gcGF0aCB2aXJ0dWFsIGNh
bGwgc28gdGhhdCB3ZSBjYW4gZW5hYmxlIGZhc3QgdGFpbCBjYWxscyBmb3IgbWVnYW1vcnBoaWMK
IC8vIHZpcnR1YWwgY2FsbHMgYnkgdXNpbmcgdGhlIHNodWZmbGVyLgogLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgzMQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxUaHVua0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAgLy8gVGhlIGNhbGxlZSBpcyBpbiByZWdU
MCAoZm9yIEpTVkFMVUUzMl82NCwgdGhlIHRhZyBpcyBpbiByZWdUMSkuCi0gICAgLy8gVGhlIHJl
dHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdl
IHdpbGwgaGVuY2UKLSAgICAvLyBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVy
biBhZGRyZXNzIHRvIHRoZSBjYWxsIGZyYW1lIHdoaWxlIHdlCi0gICAgLy8gbWFrZSBhIEMrKyBm
dW5jdGlvbiBjYWxsIHRvIHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgorICAgIC8vIFRo
ZSBjYWxsZWUgaXMgaW4gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIChmb3IgSlNWQUxVRTMy
XzY0LCBpdCBpcyBpbiByZWdUMTpyZWdUMCkuCisgICAgLy8gVGhlIENhbGxMaW5rSW5mbyBpcyBp
biBHUFJJbmZvOjpub25BcmdHUFIwLgorICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0
aGUgc3RhY2ssIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLgorICAgIC8vLyBXZSB3aWxsIGhlbmNl
IGp1bXAgdG8gdGhlIGNhbGxlZSwgb3Igc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNh
bGwKKyAgICAvLyBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhl
IGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24uCiAKICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
ICAgICAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOworCisgICAgR1BSUmVn
IGNhbGxlZVJlZzsKKyAgICBHUFJSZWcgdGFyZ2V0UmVnOworICAgIEdQUlJlZyB0ZW1wUmVnOwor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBDUFUoQVJNNjQpCisgICAgdGFyZ2V0UmVnID0gR1BS
SW5mbzo6bm9uQXJnR1BSMTsKKyAgICB0ZW1wUmVnID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsKKyNl
bGlmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQorICAgIHRhcmdldFJlZyA9IEdQUkluZm86
OnJlZ1QwOworICAgIHRlbXBSZWcgPSBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQ
UjsKKyNlbHNlCisgICAgdGFyZ2V0UmVnID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgdGVtcFJlZyA9
IEdQUkluZm86OnJlZ1QwOworI2VuZGlmCisgICAgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpOwogICAgIAotICAgIC8vIFRoaXMgaXMgYSBzbG93IHBhdGggZXhlY3V0aW9u
LCBhbmQgcmVnVDIgY29udGFpbnMgdGhlIENhbGxMaW5rSW5mby4gQ291bnQgdGhlCi0gICAgLy8g
c2xvdyBwYXRoIGV4ZWN1dGlvbiBmb3IgdGhlIHByb2ZpbGVyLgorICAgIGppdC5maWxsQXJndW1l
bnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworI2Vsc2UKKyAgICBjYWxsZWVS
ZWcgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICB0YXJnZXRSZWcgPSBHUFJJbmZvOjpyZWdUNDsKKyAg
ICB0ZW1wUmVnID0gR1BSSW5mbzo6cmVnVDA7CisjZW5kaWYKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCByZWdpc3RlckVudHJ5ID0gaml0LmxhYmVsKCk7CisKKyAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZqaXQsIFZNOjpWaXJ0dWFsQ2FsbCk7CisKKyAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4gQ291bnQgdGhlIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxl
ci4KICAgICBqaXQuYWRkMzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5r
SW5mbzo6b2Zmc2V0T2ZTbG93UGF0aENvdW50KCkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0
aENvdW50KCkpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZvciBl
bGltaW5hdGluZyB0aGVzZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERGRyBr
bm93cyB0aGF0IHRoZSB2YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVseSBh
IGZ1bmN0aW9uLgpAQCAtMTgxLDU0ICszMjIsNjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZp
cnR1YWxUaHVua0ZvcihWTQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc2xvd0Nhc2UuYXBwZW5k
KAogICAgICAgICBqaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZVJlZywgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CiAjZWxzZQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJy
YW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVn
VDEsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwogI2VuZGlmCi0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUo
R1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb25UeXBlKSk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGpp
dC5icmFuY2hJZk5vdFR5cGUoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uVHlwZSkpOwogICAgIAogICAg
IC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogICAgIAogICAgIGppdC5sb2Fk
UHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVu
Y3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGUoKSksCisgICAgICAgIHRhcmdldFJlZyk7CiAgICAgaml0LmxvYWRQdHIo
CiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJl
Z1Q0LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0g
ICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCi0gICAg
ICAgIEdQUkluZm86OnJlZ1Q0KTsKLSAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQ
dHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOworICAgICAgICAgICAgdGFy
Z2V0UmVnLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZvcigKKyAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksCisgICAgICAgICAgICAgICAgZW50
cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSksCisgICAg
ICAgIHRhcmdldFJlZyk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKEND
YWxsSGVscGVyczo6WmVybywgdGFyZ2V0UmVnKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cg
dGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBh
IGZhc3QKICAgICAvLyBjYWxsLgogICAgIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMg
d2lsbCByZXR1cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24o
aml0LCBHUFJJbmZvOjpyZWdUNCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgdGFy
Z2V0UmVnKTsKICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewotICAgICAgICBq
aXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBq
aXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAg
ICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHRlbXBSZWcpOworICAgICAgICBq
aXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyh0YXJnZXRSZWcpOwogICAgIH0KLSAgICBqaXQuanVt
cChHUFJJbmZvOjpyZWdUNCk7Ci0KKyAgICBqaXQuanVtcCh0YXJnZXRSZWcpOwogICAgIHNsb3dD
YXNlLmxpbmsoJmppdCk7Ci0gICAgCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpW
aXJ0dWFsU2xvd0NhbGwpOworCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93IGFueXRoaW5nLCBz
byByZXZlcnQgdG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgorICAgIGppdC5zcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCiAgICAgc2xvd1BhdGhGb3Ioaml0
LCB2bSwgb3BlcmF0aW9uVmlydHVhbENhbGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUoCi0gICAgICAgIHBhdGNoQnVmZmVyLAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsCiAgICAgICAgICgiVmlydHVhbCAlcyBzbG93
IHBhdGggdGh1bmsiLAogICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBDYWxsTW9k
ZTo6UmVndWxhciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2Rl
OjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0IikpOworICAgIEpJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lz
dGVyRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50cnkpOworCisg
ICAgY2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJnc0VudHJ5LCBjb2RlUmVmLmNv
ZGUoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBSZWdpc3RlcjFBcmdFbnRy
eTsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykK
KyAgICAgICAgY2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50
cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgpLCByZWdpc3RlckVudHJ5UHRyKTsKKyAgICAKKyAgICBy
ZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQogCiBlbnVtIFRodW5rRW50cnlUeXBlIHsgRW50ZXJW
aWFDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2
ZWRUYWdzIH07CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2VuZXJh
dG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5VHlwZSBl
bnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCitzdGF0aWMgSklURW50cnlQb2ludHNXaXRoUmVmIG5h
dGl2ZUZvckdlbmVyYXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgVGh1
bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFDYWxsKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBhY2tldHMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY4OQpA
QCAtMjM3LDggKzM5MSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZv
ckdlCiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKIAorICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBzdGFja0FyZ3NFbnRyeTsKKwogICAgIHN3aXRjaCAoZW50cnlUeXBlKSB7CiAg
ICAgY2FzZSBFbnRlclZpYUNhbGw6CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJz
VG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyAgICAgICAgc3RhY2tBcmdzRW50cnkgPSBqaXQu
bGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzOgpAQCAtMzc5LDI1ICs1
MzksMzMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIGpp
dC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJW
aWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBl
ID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRh
Z3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUgJXMlcyB0
cmFtcG9saW5lIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFp
bCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2
ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQp
LmRhdGEoKSkpOworICAgIGlmIChlbnRyeVR5cGUgPT0gRW50ZXJWaWFDYWxsKSB7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0
aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29k
ZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKKyAgICB9CisKKyAgICByZXR1cm4g
SklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNv
ZGUoKSk7CisKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3Io
Vk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qIHZt
KQogewogICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZNKiB2bSkK
IHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJW
aWFKdW1wV2l0aFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwg
Q29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MpLmNvZGVSZWYoKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFnc0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZv
ckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpOworICAgIHJldHVybiBuYXRpdmVG
b3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdz
KS5jb2RlUmVmKCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RH
ZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0cnVjdEdl
bmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29k
ZUZvckNvbnN0cnVjdCk7CiB9CkBAIC01MzYsNiArNzA0LDQzIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgKCJ1bnJlYWNoYWJsZSB0aHVuayIpKTsKIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCitz
dGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0
LCBWTSogdm0pCit7CisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBHUFJSZWcgdGhpc1JlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDApOworICAgIEdQUlJlZyBpbmRleFJl
ZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDIpOworICAgIEdQUlJlZyBs
ZW5ndGhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKTsKKyAgICBH
UFJSZWcgdGVtcFJlZyA9IFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjA7CisKKyAgICBq
aXQuY2hlY2tKU1N0cmluZ0FyZ3VtZW50KCp2bSwgdGhpc1JlZyk7CisKKyAgICAvLyBMb2FkIHN0
cmluZyBsZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRo
ZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAorICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwg
bGVuZ3RoUmVnKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlz
UmVnLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nVmFsdWVPZmZzZXQoKSksIHRlbXBSZWcpOworICAg
IGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHRlbXBSZWcpKTsKKworICAgIC8vIGxvYWQgaW5kZXgKKyAgICBqaXQubW92ZShhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgxKSwgaW5kZXhSZWcpOworICAgIGppdC5hcHBlbmRG
YWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50MzIoaW5kZXhSZWcpKTsKKworICAgIC8vIERvIGFu
IHVuc2lnbmVkIGNvbXBhcmUgdG8gc2ltdWx0YW5lb3VzbHkgZmlsdGVyIG5lZ2F0aXZlIGluZGlj
ZXMgYXMgd2VsbCBhcyBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgIGppdC5hcHBlbmRG
YWlsdXJlKGppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleFJl
ZywgbGVuZ3RoUmVnKSk7CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUOjpKdW1wTGlzdCBpczE2Qml0OworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6
Okp1bXBMaXN0IGNvbnQ4Qml0OworICAgIC8vIExvYWQgdGhlIHN0cmluZyBmbGFncworICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBSZWcsIFN0cmluZ0ltcGw6OmZs
YWdzT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXBSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHRlbXBSZWcpOwor
ICAgIGlzMTZCaXQuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IGxlbmd0aFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFn
SXM4Qml0KCkpKSk7CisgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgodGVt
cFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIHRlbXBSZWcpOwor
ICAgIGNvbnQ4Qml0LmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICBpczE2Qml0LmxpbmsoJmppdCk7
CisgICAgaml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHRlbXBSZWcsIGluZGV4
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCB0ZW1wUmVnKTsKKyAgICBjb250OEJp
dC5saW5rKCZqaXQpOworfQorI2Vsc2UKIHN0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2FkKFNwZWNp
YWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtKQogewogICAgIC8vIGxvYWQgc3RyaW5nCkBAIC01
NjUsNiArNzcwLDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaAog
ICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc1R3bywgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBjb250OEJpdC5s
aW5rKCZqaXQpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhTcGVjaWFs
aXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc3Jj
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkc3QsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIHNjcmF0Y2gpCiB7CkBAIC01NzQsMzQgKzc4MCw2OSBAQCBzdGF0aWMgdm9pZCBjaGFyVG9T
dHJpbmcoU3BlY2lhbGl6ZWRUaHVuCiAgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGRzdCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6
U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3Ry
aW5nQ2hhckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFs
aXplZFRodW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7Cisg
ICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6
U3BpbGxFeGFjdGx5KTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAi
Y2hhckNvZGVBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7
CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNvZGVBdCIpOworI2VuZGlmCiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5
SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7
CisgICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGNoYXJUb1N0cmluZyhq
aXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
MykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFs
dWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVu
dFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAg
IGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbHNlCiAg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGpp
dCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsK
ICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwo
dm0pLCAiY2hhckF0Iik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21D
aGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9t
Q2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDEpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRo
dW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgLy8gbG9hZCBjaGFyIGNvZGUKKyAgICBqaXQubW92
ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgxKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6bm9uQXJnR1BSMCk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZO
b3RJbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwKSk7CisKKyAgICBjaGFyVG9T
dHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFy
Z3VtZW50KDMpKTsKKyAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
dHVyblZhbHVlR1BSKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7CisgICAgaml0LnNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxBbGwpOwor
ICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkpOworICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsK
KyNlbHNlCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVy
czo6U3BpbGxBbGwpOwogICAgIC8vIGxvYWQgY2hhciBjb2RlCiAgICAgaml0LmxvYWRJbnQzMkFy
Z3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBjaGFyVG9TdHJpbmco
aml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CiAgICAgaml0LnJldHVybkpTQ2Vs
bChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vu
ZGlmCiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsK
ICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm9uSW50QXJnSnVtcDsKQEAgLTYyMiwxMSArODYzLDExIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2x6MzIiKTsKIH0KIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgp
KQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVy
biB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAKICAgICBqaXQubG9hZERv
dWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuc3FydERvdWJsZShTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKQEAgLTc4MiwxMiArMTAy
MywxMiBAQCBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYyk7CiAKIHN0YXRpYyBjb25z
dCBkb3VibGUgaGFsZkNvbnN0YW50ID0gMC41OwogICAgIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGZsb29y
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZt
LCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGlmICghVW5h
cnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJu
IHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZEludDMy
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAg
IGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgbm9uSW50
SnVtcC5saW5rKCZqaXQpOwpAQCAtODI1LDExICsxMDY2LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmbG9vclRodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZmxvb3IiKTsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhS
ZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihjZWlsKSB8fCAhaml0
LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2Fs
bCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9h
ZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXAp
OwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC04
NDgsMTEgKzEwODksMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRv
cgogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJjZWlsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiB0cnVuY1RodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYg
KCFVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYykgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9p
bnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICBy
ZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50
MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtODcxLDExICsxMTEyLDExIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZp
bmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAidHJ1bmMiKTsKIH0K
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFw
cGVyKGpzUm91bmQpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVi
cy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25J
bnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKQEAgLTkwNSwzNyArMTE0NiwzNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgcm91bmRUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJvdW5kIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
ZXhwVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBw
ZXIoZXhwKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAg
ICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5n
UG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAg
ICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5s
b2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2
aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpOwogICAgIGppdC5yZXR1cm5Eb3Vi
bGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImV4cCIpOwogfQogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2lu
dHNXaXRoUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBpZiAoIVVuYXJ5RG91
YmxlT3BXcmFwcGVyKGxvZykpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0p
KTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsK
ICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9y
dHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0p
KTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsK
ICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91
YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpKTsKICAgICBqaXQu
cmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIHJldHVybiBq
aXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJsb2ciKTsK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRp
bmdQb2ludEFicygpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Cisg
ICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4ID0gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKQEAgLTk4OCw3ICsxMjI5LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKAogICAgIHJldHVybiBqaXQuZmluYWxpemUo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJhYnMiKTsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50
c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50QXJnMEp1
bXA7CkBAIC0xMDE5LDExICsxMjYwLDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1
bmtHZW5lcmF0b3IKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlVGFpbENhbGwodm0pLCAiaW11bCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFu
ZG9tVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHJhbmRvbVRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwg
MCk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+
aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaml0LmVt
aXRSYW5kb21UaHVuayhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMywgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CkBAIC0xMDMxLDE2ICsx
MjcyLDIyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXQKIAogICAg
IHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSks
ICJyYW5kb20iKTsKICNlbHNlCi0gICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAjZW5kaWYK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdl
bmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYm91bmRUaGlzTm9BcmdzRnVu
Y3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
KyAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVzOworCisgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVm
b3JlUHJvbG9ndWUoKTsKICAgICAKLSAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAg
ICBTcGVjaWFsaXplZFRodW5rSklUOjpMYWJlbCBzdGFja0FyZ3NFbnRyeSgmaml0KTsKICAgICAK
KyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKwogICAgIC8vIFNldCB1cCBvdXIgY2Fs
bCBmcmFtZS4KICAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51
bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSk7CiAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxs
SGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKQEAgLTExMTAs
MjAgKzEzNTcsMjMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgog
ICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxl
QmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNhbGwpKSwKKyAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZv
cihDb2RlRm9yQ2FsbCwgU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKSwKICAgICAgICAgR1BSSW5m
bzo6cmVnVDApOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVz
dFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICBmYWlsdXJlcy5h
cHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdU
MCkpOwogICAgIAogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgaml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwotICAgIAotICAgIExpbmtCdWZmZXIgbGlu
a0J1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICBsaW5rQnVmZmVyLmxpbmso
bm9Db2RlLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
V2l0aG91dFNhdmVkVGFncyh2bSkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAgICAg
ICAgbGlua0J1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2Fs
bHMgd2l0aCBubyBhcmd1bWVudHMiKSk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZXMs
IENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0
U2F2ZWRUYWdzKHZtKSkpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVu
Y3Rpb24gY2FsbHMgd2l0aCBubyBhcmd1bWVudHMiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHN0YWNrQXJnc0VudHJ5
KTsKKworICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5j
b2RlKCksIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgc3RhY2tFbnRyeVB0ciwgc3Rh
Y2tFbnRyeVB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAyMDg0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCIKKyNpbmNsdWRlICJKSVRFbnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMzYsMzQgKzM3LDM1IEBAIGNs
YXNzIENhbGxMaW5rSW5mbzsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZy
b21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0qKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxp
bmtDYWxsVGh1bmsoVk0qLCBDYWxsTGlua0luZm8mLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7
CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rRGlyZWN0Q2FsbFRo
dW5rR2VuZXJhdG9yKFZNKik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHZpcnR1YWxUaHVua0ZvcihWTSosIENhbGxMaW5rSW5mbyYpOworSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rRm9yKFZNKiwgQ2FsbExpbmtJbmZvJik7CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRo
UmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHVucmVhY2hhYmxlR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFy
Q29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRU
aHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5l
cmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVy
YXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKik7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9n
VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2Vu
ZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZN
Kik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhS
ZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
Y2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjbHozMlRo
dW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZnJvbUNoYXJDb2RlVGh1
bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBhYnNUaHVua0dlbmVyYXRv
cihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSopOwor
SklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRo
UmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcm91bmRU
aHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHNxcnRUaHVua0dlbmVy
YXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSop
OworSklURW50cnlQb2ludHNXaXRoUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSk7
CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNKik7CiAKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25F
bnRyeXBvaW50KFZNJiB2bQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUoCisgICAgICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvciksCisgICAg
ICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxs
RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0u
Z2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JS
ZWdpc3RlckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5r
R2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAor
ICAgICAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBh
ZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAg
ICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
UmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAgICAgICAgIHZt
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
clJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAg
ICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcikuY29k
ZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tD
b25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAg
ICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNTksMTIgKzczLDI2IEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0KICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgK
LSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
KSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwor
ICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAg
SklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRD
b2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cisg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC03MiwxNCArMTAwLDI4IEBAIHN0YXRpYyB2b2lkIHNl
dEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ28KICNpZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5j
YW5Vc2VKSVQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAg
ICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlU
aHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAg
ICAgIHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvcikuY29k
ZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSkuY29k
ZSgpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCkBAIC04NywxNCArMTI5LDI4IEBAIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50
KFZNJiB2bSwKICNpZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAg
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
ciksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50
cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUp
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsK
KyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTElu
dENvZGVQdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVu
dHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTEwMiwxNCArMTU4LDI4
IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFYKICNpZiBFTkFCTEUo
SklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElT
dHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJl
ZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksCisgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIobW9k
dWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgp
KSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFS
QU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9n
dWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKIH0KIAogdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw5ICszNzIs
OSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTCiAgICAgQ09ERUJM
T0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJPU1IgZW50cnkiLCAoImluIHByb2xvZ3VlIikpOwog
ICAgIAogICAgIGlmIChraW5kID09IFByb2xvZ3VlKQotICAgICAgICBMTElOVF9SRVRVUk5fVFdP
KGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoU3Rh
Y2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKICAg
ICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKLSAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVC
bG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgMCk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUo
KS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIDApOwogfQogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBjaGFyKiwgRW50cnlLaW5kKQpAQCAtMTI5NSw3ICsxMjk1LDcgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogI2VuZGlmCiAKICAgICBp
ZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGNv
ZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVj
a0FyaXR5KTsKICAgICB9IGVsc2UgaWYgKCFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSkgewogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC0xMzA4LDIzICsxMzA4LDIz
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAg
IExMSU5UX0NBTExfVEhST1coZXhlYywgZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29k
ZUJsb2NrU2xvdDsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIEFyaXR5Q2hl
Y2tNb2RlIGFyaXR5OworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CiAgICAgICAg
IGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0
eSA9IE11c3RDaGVja0FyaXR5OworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVj
a05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIGFyaXR5KTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJn
c0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0gZWxzZSB7CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIHdlYkFz
c2VtYmx5RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5RXhlY3V0YWJsZSo+KGV4
ZWN1dGFibGUpOwogICAgICAgICBjb2RlQmxvY2sgPSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPmNv
ZGVCbG9ja0ZvckNhbGwoKTsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIEFy
aXR5Q2hlY2tNb2RlIGFyaXR5OworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CiAg
ICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3Rh
dGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAg
ICBhcml0eSA9IE11c3RDaGVja0FyaXR5OworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJp
dHlDaGVja05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gd2ViQXNzZW1ibHlFeGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5KTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IHdlYkFz
c2VtYmx5RXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVR5cGUpOwogI2VuZGlm
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeQogCiBuYW1lc3BhY2UgTExJbnQg
ewogCi1zdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KFZNKiB2bSwgdm9pZCAoKnRhcmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQorZW51bSBT
aG91bGRDcmVhdGVSZWdpc3RlckVudHJ5IHsgQ3JlYXRlUmVnaXN0ZXJFbnRyeSwgRG9udENyZWF0
ZVJlZ2lzdGVyRW50cnkgfTsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRo
dW5rS2luZCwgU2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSBzaG91bGRDcmVhdGVSZWdpc3RlckVu
dHJ5ID0gRG9udENyZWF0ZVJlZ2lzdGVyRW50cnkpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
KHZtKTsKLSAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKHNob3VsZENyZWF0ZVJl
Z2lzdGVyRW50cnkgPT0gQ3JlYXRlUmVnaXN0ZXJFbnRyeSkKKyAgICAgICAgaml0LnNwaWxsQXJn
dW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkpOworI2VuZGlmCisKICAgICAvLyBGSVhN
RTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdt
IG5vdCBzdXJlIEkgY2FyZS4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAp
OwogICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CkBAIC02MywyNCArNzIsNDQg
QEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1
bmtLaW5kKSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
clJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJn
cyBjYWxsIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3Rh
Y2sgYXJncyBjYWxsIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJl
Z2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIHJlZ2lz
dGVyIGFyZ3MgY29uc3RydWN0IiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRv
cihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTElu
dDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpLCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0Iik7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
KSwgImZ1bmN0aW9uIGZvciBjYWxsIik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwgd2l0aCBhcml0
eSBjaGVjayIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWUpLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpOworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjYWxsIHdp
dGggYXJpdHkgY2hlY2siKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihW
TSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwg
ImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKTsKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIg
YXJncyBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOwog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
U3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZv
ciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0
cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFs
RW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0Miwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVudHJ5CiAKIG5hbWVzcGFj
ZSBMTEludCB7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNr
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJh
dG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBw
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1v
ZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgJKHJldmlzaW9uIDIwODQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIEFyaXR5
Q2hlY2tNb2RlIHsKKyAgICBSZWdpc3RlckVudHJ5LAogICAgIEFyaXR5Q2hlY2tOb3RSZXF1aXJl
ZCwKICAgICBNdXN0Q2hlY2tBcml0eQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsOCArNTQsOCBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUoKQog
I2lmIEVOQUJMRShKSVQpCiAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IG51bGxwdHI7CiAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0ID0gbnVsbHB0cjsKLSAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKLSAgICBtX2ppdENvZGVGb3JDb25z
dHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgIG1faml0
RW50cmllc0ZvckNhbGwuY2xlYXJFbnRyaWVzKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3Ry
dWN0LmNsZWFyRW50cmllcygpOwogI2VuZGlmCiAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9
IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25z
dHJ1Y3QgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgJKHJldmlzaW9uIDIwODQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJB
cml0eUNoZWNrTW9kZS5oIgogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTM0LDYg
KzMzLDcgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFs
dWUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSklURW50cnlwb2ludHMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJUeXBlU2V0LmgiCkBAIC0xNTMsNDcgKzE1Myw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CiAgICAgfQogICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgQXJpdHlDaGVja01vZGUgYXJpdHkpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGVudHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBFbnRyeVBvaW50VHlw
ZSBlbnRyeVR5cGUpCiAgICAgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY2FjaGVk
IHJlc3VsdC4gV2Ugb25seSBoYXZlIGl0IGZvciBhcml0eSBjaGVjayBiZWNhdXNlIHdlIHVzZSB0
aGUKICAgICAgICAgLy8gbm8tYXJpdHkgZW50cnlwb2ludCBpbiBub24tdmlydHVhbCBjYWxscywg
d2hpY2ggd2lsbCAiY2FjaGUiIHRoaXMgdmFsdWUgZGlyZWN0bHkgaW4KICAgICAgICAgLy8gbWFj
aGluZSBjb2RlLgotICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAg
ICAgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0Q29k
ZUZvckNhbGxXaXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0
cnVjdDoKLSAgICAgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9
IG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQor
ICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAg
ICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRFbnRyaWVzRm9y
Q2FsbC5lbnRyeUZvcihlbnRyeVR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAg
ICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdEVudHJpZXNG
b3JDb25zdHJ1Y3QuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIHJlc3VsdCA9Ci0gICAgICAgICAgICBnZW5lcmF0ZWRKSVRDb2RlRm9yKGtp
bmQpLT5hZGRyZXNzRm9yQ2FsbChhcml0eSk7Ci0gICAgICAgIGlmIChhcml0eSA9PSBNdXN0Q2hl
Y2tBcml0eSkgewotICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBuZWNl
c3NhcnkgZm9yIHRoZSBKSVQncyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KLSAgICAgICAg
ICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAg
ICAgICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSByZXN1bHQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0g
ICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSByZXN1
bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBn
ZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLT5hZGRyZXNzRm9yQ2FsbChlbnRyeVR5cGUpOworICAg
ICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdz
IHZpcnR1YWwgY2FsbCBvcHRpbWl6YXRpb25zLgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgICAgIG1faml0RW50cmllc0ZvckNhbGwu
c2V0RW50cnlGb3IoZW50cnlUeXBlLCByZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAgICAgICAgIG1faml0RW50cmllc0ZvckNv
bnN0cnVjdC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
RW50cnlGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBFbnRyeVBvaW50VHlwZSBlbnRy
eVBvaW50VHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAgICBjYXNl
IENvZGVGb3JDYWxsOgotICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRh
YmxlQmFzZSwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNhbGwp
ICsgSklURW50cnlQb2ludHM6Om9mZnNldE9mRW50cnlGb3IoZW50cnlQb2ludFR5cGUpOwogICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVj
ayk7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBt
X2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QpICsgSklURW50cnlQb2ludHM6Om9mZnNldE9mRW50cnlG
b3IoZW50cnlQb2ludFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQxLDggKzIzNiw4IEBAIHByb3Rl
Y3RlZDoKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1f
aml0Q29kZUZvckNhbGw7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNvbnN0cnVj
dDsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDYWxsOworICAg
IEpJVEVudHJ5UG9pbnRzIG1faml0RW50cmllc0ZvckNvbnN0cnVjdDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm8KICAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7
CiAgICAgaWYgKGV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3JDYWxsKCkpIHsKICAgICAgICAgLy8g
Rm9yY2UgdGhlIGV4ZWN1dGFibGUgdG8gY2FjaGUgaXRzIGFyaXR5IGVudHJ5cG9pbnQuCi0gICAg
ICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RDaGVja0FyaXR5
KTsKKyAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDgg
QEAgdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTQogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBtX2ppdENvZGVGb3JDYWxsID0gY2FsbFRodW5rOwogICAg
IG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGNvbnN0cnVjdFRodW5rOwotICAgIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKE11
c3RDaGVja0FyaXR5KTsKLSAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9
IG1faml0Q29kZUZvckNvbnN0cnVjdC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwor
ICAgIG1faml0RW50cmllc0ZvckNhbGwuc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJp
dHksIG1faml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0Fy
aXR5KSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKFN0YWNrQXJn
c011c3RDaGVja0FyaXR5LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JDYWxsKFN0
YWNrQXJnc011c3RDaGVja0FyaXR5KSk7CiAgICAgbV9uYW1lID0gbmFtZTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAJKHJldmlzaW9uIDIwODQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTIgKzE0MSwxMiBAQCB2
b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2CiAgICAgc3dpdGNoIChraW5k
KSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGdl
bmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRyOwot
ICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKICAg
ICAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmlj
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKICAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2st
PmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmll
c0ZvckNvbnN0cnVjdC5jbGVhckVudHJpZXMoKTsKICAgICAgICAgbV9udW1QYXJhbWV0ZXJzRm9y
Q29uc3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSA6IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMjg5LDYgKzI4OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3
UmVwbGFjZW0KIAogc3RhdGljIHZvaWQgc2V0dXBMTEludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQogeworICAgIGNvZGVCbG9jay0+c2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCk7CiAg
ICAgTExJbnQ6OnNldEVudHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CiB9CiAKQEAgLTI5Niw2ICsy
OTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cEpJVChWTSYgdm0sIENvZGVCbG9jayogCiB7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBKSVQ6OmNvbXBpbGUo
JnZtLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOworICAgIGNvZGVCbG9j
ay0+c2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
ID09IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyMDg0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOCw2ICsyMDgsMTAgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZl
ZFpvbmVTaXplKCkpOwogICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAKKyNp
ZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgY2xlYXJDb3VudGVycygpOworI2VuZGlmCisKICAg
ICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVy
ZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBl
eGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOwpAQCAtNDc0LDcgKzQ3OCw3
IEBAIFNhbXBsaW5nUHJvZmlsZXImIFZNOjplbnN1cmVTYW1wbGluZ1Byb2YKICNlbmRpZiAvLyBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICNpZiBFTkFCTEUoSklUKQotc3RhdGljIFRodW5r
R2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMp
CitzdGF0aWMgSklURW50cnlHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50
cmluc2ljIGludHJpbnNpYykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2Ug
Q2hhckNvZGVBdEludHJpbnNpYzoKQEAgLTkyMSw0ICs5MjUsMzUgQEAgdm9pZCBWTTo6dmVyaWZ5
RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpcwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVk1fQ09V
TlRFUlMpCit2b2lkIFZNOjpjbGVhckNvdW50ZXJzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgTnVtYmVyVk1Db3VudGVyOyBpKyspCisgICAgICAgIG1fY291bnRlcnNbaV0gPSAw
OworfQorCit2b2lkIFZNOjpkdW1wQ291bnRlcnMoKQoreworICAgIHNpemVfdCB0b3RhbENhbGxz
ID0gY291bnRlckZvcihCYXNlbGluZUNhbGxlcikgKyBjb3VudGVyRm9yKERGR0NhbGxlcikgKyBj
b3VudGVyRm9yKEZUTENhbGxlcik7CisgICAgZGF0YUxvZygiIyMjIyBWTSBDYWxsIGNvdW50ZXJz
ICMjIyNcbiIpOworICAgIGRhdGFMb2dGKCIlMTB6dSBUb3RhbCBjYWxsc1xuIiwgdG90YWxDYWxs
cyk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEJhc2VsaW5lIGNhbGxzXG4iLCBjb3VudGVyRm9yKEJh
c2VsaW5lQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IERGRyBjYWxsc1xuIiwgY291bnRl
ckZvcihERkdDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgRlRMIGNhbGxzXG4iLCBjb3Vu
dGVyRm9yKEZUTENhbGxlcikpOworICAgIGRhdGFMb2dGKCIlMTB6dSBWYXJhcmcgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoQ2FsbFZhcmFyZ3MpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVGFpbCBjYWxs
c1xuIiwgY291bnRlckZvcihUYWlsQ2FsbCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBFdmFsIGNh
bGxzXG4iLCBjb3VudGVyRm9yKENhbGxFdmFsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IERpcmVj
dCBjYWxsc1xuIiwgY291bnRlckZvcihEaXJlY3RDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1
IFBvbHltb3JwaGljIGNhbGxzXG4iLCBjb3VudGVyRm9yKFBvbHltb3JwaGljQ2FsbCkpOworICAg
IGRhdGFMb2dGKCIlMTB6dSBWaXJ0dWFsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxDYWxs
KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgc2xvdyBjYWxsc1xuIiwgY291bnRlckZv
cihWaXJ0dWFsU2xvd0NhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJncyBu
byBhcml0eVxuIiwgY291bnRlckZvcihSZWdBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIl
MTB6dSBTdGFjayBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFN0YWNrQXJnc05vQXJpdHkp
KTsKKyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJncyBleHRyYSBhcml0eVxuIiwgY291
bnRlckZvcihSZWdBcmdzRXh0cmEpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJn
cyBhcml0eSBjaGVja1xuIiwgY291bnRlckZvcihSZWdBcmdzQXJpdHkpKTsKKyAgICBkYXRhTG9n
RigiJTEwenUgU3RhY2sgYXJncyBhcml0eSBjaGVja1xuIiwgY291bnRlckZvcihTdGFja0FyZ3NB
cml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBBcml0eSBmaXh1cHMgcmVxdWlyZWRcbiIsIGNv
dW50ZXJGb3IoQXJpdHlGaXh1cFJlcXVpcmVkKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIwODQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyMSw2ICs0MjEsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGppdFN0
dWJzLT5jdGlTdHViKHRoaXMsIGdlbmVyYXRvcik7CiAgICAgfQorCisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGdldEpJVEVudHJ5U3R1YihKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCisg
ICAgeworICAgICAgICByZXR1cm4gaml0U3R1YnMtPmppdEVudHJ5U3R1Yih0aGlzLCBnZW5lcmF0
b3IpOworICAgIH0KKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGdldEpJ
VENhbGxUaHVua0VudHJ5U3R1YihKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3Ip
CisgICAgeworICAgICAgICByZXR1cm4gaml0U3R1YnMtPmppdENhbGxUaHVua0VudHJ5U3R1Yih0
aGlzLCBnZW5lcmF0b3IpOworICAgIH0KICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0
ZXJBdE9mZnNldExpc3Q+IGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHM7CiAgICAgCkBAIC01
NTgsNiArNTY4LDUwIEBAIHB1YmxpYzoKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4
cEFsbG9jYXRvcjsKICAgICBDb25jdXJyZW50SklUTG9jayBtX3JlZ0V4cEFsbG9jYXRvckxvY2s7
CiAKKyAgICBlbnVtIFZNQ291bnRlclR5cGUgeworICAgICAgICBCYXNlbGluZUNhbGxlciwKKyAg
ICAgICAgREZHQ2FsbGVyLAorICAgICAgICBGVExDYWxsZXIsCisgICAgICAgIENhbGxWYXJhcmdz
LAorICAgICAgICBUYWlsQ2FsbCwKKyAgICAgICAgQ2FsbEV2YWwsCisgICAgICAgIERpcmVjdENh
bGwsCisgICAgICAgIFBvbHltb3JwaGljQ2FsbCwKKyAgICAgICAgVmlydHVhbENhbGwsCisgICAg
ICAgIFZpcnR1YWxTbG93Q2FsbCwKKyAgICAgICAgUmVnQXJnc05vQXJpdHksCisgICAgICAgIFN0
YWNrQXJnc05vQXJpdHksCisgICAgICAgIFJlZ0FyZ3NFeHRyYSwKKyAgICAgICAgUmVnQXJnc0Fy
aXR5LAorICAgICAgICBTdGFja0FyZ3NBcml0eSwKKyAgICAgICAgQXJpdHlGaXh1cFJlcXVpcmVk
LAorICAgICAgICBOdW1iZXJWTUNvdW50ZXIKKyAgICB9OworCisjaWYgRU5BQkxFKFZNX0NPVU5U
RVJTKQorICAgIHNpemVfdCBtX2NvdW50ZXJzW051bWJlclZNQ291bnRlcl07CisKKyAgICB2b2lk
IGNsZWFyQ291bnRlcnMoKTsKKworICAgIHNpemVfdCogYWRkcmVzc09mQ291bnRlcihWTUNvdW50
ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ZXJUeXBlID49IE51
bWJlclZNQ291bnRlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJl
dHVybiAmbV9jb3VudGVyc1tjb3VudGVyVHlwZV07CisgICAgfQorCisgICAgc2l6ZV90IGNvdW50
ZXJGb3IoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChjb3Vu
dGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBtX2NvdW50ZXJzW2NvdW50ZXJUeXBlXTsKKyAgICB9CisKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBDb3VudGVycygpOworI2VuZGlmCisKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGFzT3duUHJvcGVydHlDYWNoZT4gbV9oYXNPd25Qcm9wZXJ0eUNhY2hl
OwogICAgIEFMV0FZU19JTkxJTkUgSGFzT3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlD
YWNoZSgpIHsgcmV0dXJuIG1faGFzT3duUHJvcGVydHlDYWNoZS5nZXQoKTsgfQogICAgIEhhc093
blByb3BlcnR5Q2FjaGUqIGVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUoKTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFM
b2cuY3BwCShyZXZpc2lvbiAyMDg0NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAj
ZW5kaWYKIAotI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKKyNkZWZpbmUgREFUQV9MT0dfVE9f
RklMRSAxCiAKIC8vIFNldCB0byAxIHRvIHVzZSB0aGUgdGVtcCBkaXJlY3RvcnkgZnJvbSBjb25m
c3RyIGluc3RlYWQgb2YgaGFyZGNvZGVkIGRpcmVjdG9yeS4KIC8vIFRoZSBsYXN0IGNvbXBvbmVu
dCBvZiBEQVRBX0xPR19GSUxFTkFNRSB3aWxsIHN0aWxsIGJlIHVzZWQuCi0jZGVmaW5lIERBVEFf
TE9HX1RPX0RBUldJTl9URU1QX0RJUiAwCisjZGVmaW5lIERBVEFfTE9HX1RPX0RBUldJTl9URU1Q
X0RJUiAxCiAKIC8vIFVuY29tbWVudCB0byBmb3JjZSBsb2dnaW5nIHRvIHRoZSBnaXZlbiBmaWxl
IHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgc2F5cy4KIC8vIE5v
dGUgdGhhdCB3ZSB3aWxsIGFwcGVuZCAiLjxwaWQ+LnR4dCIgd2hlcmUgPHBpZD4gaXMgdGhlIFBJ
RC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjA4NDQ1KQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjkzLDYgKzY5MywxMSBAQAogI2RlZmluZSBF
TkFCTEVfSklUIDEKICNlbmRpZgogCisjZGVmaW5lIEVOQUJMRV9DQUxMRVJfU1BJTExTX0NBTExF
RSAwCisjZGVmaW5lIEVOQUJMRV9DQUxMRVJfU1BJTExTX0FSR0NPVU5UIDAKKyNkZWZpbmUgRU5B
QkxFX1ZNX0NPVU5URVJTIDAKKyNkZWZpbmUgRU5BQkxFX0JBU0VMSU5FX1JFR0lTVEVSX0FSR1VN
RU5UX0NBTExTIDEKKwogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdvcmsgb24gMzItYml0IHBsYXRm
b3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5hYmxlIGl0LiAq
LwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjdW5kZWYgRU5BQkxFX0ZUTF9KSVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296447</attachid>
            <date>2016-12-07 17:20:41 -0800</date>
            <delta_ts>2016-12-07 18:04:58 -0800</delta_ts>
            <desc>Current Work in Progress - Should compile on Mac 32 &amp; 64</desc>
            <filename>reg-calls-wip176.patch</filename>
            <type>text/plain</type>
            <size>342401</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQ3LDYgKzEzNDcsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MTIsNiArMzcxMyw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5cG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5cG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU1Myw2ICs1NTU1LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeXBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03Njk2LDYgKzc2OTksNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5cG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+
dHlwZSgpID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoK
ICAgICAgICAgICAgIGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCw4IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFz
U2VlbkNsb3N1cmUoZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9h
bGxvd1N0dWJzKHRydWUpCisgICAgLCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50
cyhmYWxzZSkKKyAgICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEFyZ3VtZW50c0xvY2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkK
ICAgICAsIG1fY2FsbFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9u
IDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgi
CiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRl
IDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxv
Y2s7IH0KICAgICB2b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5
cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQor
ICAgIHZvaWQgc2V0VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudHNMb2NhdGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVH
UFIpCiAgICAgeworICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8
fCAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlw
ZSA9IGNhbGxUeXBlOworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGFyZ3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29k
ZU9yaWdpbjsKICAgICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1
LDYgKzI3OSwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlw
ZT4obV9jYWxsVHlwZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRQcm92aWRlc1JlZ2lzdGVyQW5k
U3RhY2tBcmd1bWVudHMoKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3Rh
Y2tBcmd1bWVudHMgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJvdmlkZXNSZWdpc3RlckFu
ZFN0YWNrQXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb3ZpZGVz
UmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgQXJndW1lbnRzTG9j
YXRpb24gYXJndW1lbnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEFyZ3VtZW50c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAg
ICBib29sIGFyZ3VtZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRk
cmVzc09mTWF4TnVtQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1B
cmd1bWVudHM7CkBAIC0zMzksNiArMzYzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2Vl
bkNsb3N1cmUgOiAxOwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2Fs
bG93U3R1YnMgOiAxOworICAgIGJvb2wgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMgOiAxOworICAgIHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wg
bV9pc0xpbmtlZCA6IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBl
CiAgICAgdW5zaWduZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODM3LDYgKzE4MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVy
ZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29u
c3RydWN0b3Iob3RoZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9pc1N0cmljdE1vZGUob3Ro
ZXIubV9pc1N0cmljdE1vZGUpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkK
ICAgICAsIG1fY29kZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
KCpvdGhlci5tX3ZtLCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1f
aGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkBAIC0xOTAyLDYgKzE5MDMsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxl
ZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1faXNTdHJpY3RNb2RlKHVubGlua2VkQ29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNlKQog
ICAgICwgbV9jb2RlVHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSkKICAgICAsIG1f
dW5saW5rZWRDb2RlKG1fZ2xvYmFsT2JqZWN0LT52bSgpLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9j
aykKICAgICAsIG1faGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2OSw3ICszNjksMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2Nv
cGVSZWdpc3RlcjsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFByZWZlcnNTdGFja0FyZ3Vt
ZW50cygpCisgICAgeworICAgICAgICBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyA9IHRydWU7Cisg
ICAgfQorCisgICAgYm9vbCBwcmVmZXJzU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzOworICAgIH0KKwogICAgIENvZGVU
eXBlIGNvZGVUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
b2RlVHlwZT4obV9jb2RlVHlwZSk7CkBAIC04NDUsNiArODU1LDcgQEAgcHVibGljOgogICAgIGJv
b2wgbV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX3ByZWZlcnNT
dGFja0FyZ3VtZW50cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7IC8vIENvZGVU
eXBlCiAKICAgICAvLyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2Rl
LiBJdCB3b3VsZCBiZSBwcml2YXRlIGlmIGl0IHdhc24ndApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5j
YWxsTGlua0luZm8tPmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2Fs
bExpbmtJbmZvOjpDYWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7Cisg
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNv
ZGVPcmlnaW4sIGxvYWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBkb25lOwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRo
YXQgdGhlIGdldHRlci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwg
R1BSSW5mbzo6cmVnVDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5m
bzo6cmVnVDIpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAg
ICBpZiAobV90eXBlID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRz
KHZhbHVlUmVncyk7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKS5jb2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5l
bnRyeUZvcihTdGFja0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1f
dHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0
ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3
MSwxNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
IC8vIG5vbi1jbGVhciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygp
Lm9wZXJhbmQobm9kZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIAorCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1f
c3RhdGUudmFyaWFibGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAg
ICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1
c2hlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9w
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShtX2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFy
YXJnczoKICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3
YXJkVmFyYXJncyBzaG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBp
ZiBpdCBkb2VzLCBpdCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcg
QEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNM
aW5rZWQ7CiAjZW5kaWYKICAgICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9y
PE5vZGUqPiBwaGlzOwogICAgIFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2ODcsMjAgKzM2ODcsNjggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7Ci0gICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhl
eSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAg
ICAgICAvLyBleGl0T0sgPSB0cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFj
ay5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9y
Q2hlY2tpbmcucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBH
ZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5n
IE1vdkhpbnQgbm9kZXMsCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5n
IFNldExvY2FsIG5vZGVzIGFuZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAg
ICAgICAgLy8gdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMg
dG8gbWFrZSB0aGUgZXhpdCBwcm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0
T0sgPSB0cnVlIHNpbmNlCisgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2Fu
IGV4aXQsIGV2ZW4gdGhvdWdoIHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkg
Y291bGQKKyAgICAgICAgLy8gZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQg
YW5kIHRoZXJlZm9yZSB3ZSB3YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3Jl
IHRoZSBmaXJzdCBTZXRMb2NhbCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0
ZW50LgorICAgICAgICAvLyBXZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGlu
ZyBhbnkgU2V0QXJndW1lbnQgbm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxs
eSBlcXVpdmFsZW50IHRvIHRoZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9k
ZXMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAg
ICAgCisgICAgICAgIHVuc2lnbmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9u
dW1Bcmd1bWVudHMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOwor
CisgICAgICAgIFZlY3RvcjxOb2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUz4gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzOworCisgICAgICAgIC8vIEZpcnN0IGNy
ZWF0ZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50ID0gMDsgYXJndW1lbnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkg
eworICAgICAgICAgICAgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25B
cmd1bWVudChhcmd1bWVudCkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxs
IHRoZSBNb3ZIaW50J3MgZm9yIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQg
YWJvdmUuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lz
dGVyTm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVn
aXN0ZXIgPSBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBhZGRUb0dy
YXBoKE1vdkhpbnQsIE9wSW5mbyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQo
KSksIGdldEFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBh
bnltb3JlLgorICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEV4aXQgaXMgbm93IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhp
dE9LIG5vZGUuCisgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChF
eGl0T0spOworCisgICAgICAgIC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUg
R2V0QXJndW1lbnRSZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdp
c3Rlck5vZGVzW2ldOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNo
ZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAg
ICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQo
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2Rl
KiBzZXRMb2NhbCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0Rh
dGEpLCBnZXRBcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFy
Z3VtZW50UmVnaXN0ZXItPnNldFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0g
PSBzZXRMb2NhbDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tp
XSA9IGdldEFyZ3VtZW50UmVnaXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5
IGNyZWF0ZSBhbnkgU2V0QXJndW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJn
dW1lbnQgPSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVu
dCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAg
ICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2
YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZENhY2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5
SG9pc3RpbmdGYWlsZWQoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0g
ICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChT
ZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c09uU3RhY2tbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RU
aW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEwLDgg
KzQ4NTgsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIg
YXJndW1lbnRzIGhlcmUgc2luY2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBi
eSB0aGUgYXJndW1lbnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90
IGV4aXN0LgogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBm
bHVzaEZvclJldHVybigpOwogICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBo
YW5kbGVWYXJhcmdzQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3MsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZs
dXNoIG5vZGVzIGZvciBvdXIgYXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzCisgICAgICAgICAgICAvLyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8g
dGhlIHN0YWNrIGFuZCBrZXB0IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsK
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0g
Y3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlu
bGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAg
ICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNl
IGFueSBmdXJ0aGVyIGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5j
dGlvbi4KICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZl
ciwgdGhlbiB3ZSB3YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBt
ZXRhZGF0YSBhbmQgY2xlYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk5LDE0ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRo
ZSBydWxlcyBmb3IgdGhyZWFkZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAg
ICAgIC8vIEhlYWQgdmFyaWFibGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQg
b2YgdGhlIGJhc2ljIGJsb2NrLgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBt
YXkgcmVmZXIgdG8gRmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAg
ICAgICAgICAgIC8vIFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9j
ay4KKyAgICAgICAgICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNo
LCBQaGFudG9tTG9jYWwsIFBoaSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8g
b3IgU2V0QXJndW1lbnQuCisgICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBT
ZXRBcmd1bWVudCBtYXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgLy8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBo
YXBwZW5lZCB0byB0aGUgdmFyaWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQg
bWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1
bWVudCwgb3IgUGhpLgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFy
IGluIHRoZSByb290IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAg
Ly8gd2FzIGEgR2V0TG9jYWwgdG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5
IFBoYW50b21Mb2NhbHMgYW5kCi0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9j
YWxzLCB0aGVuIHRoZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAg
ICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExv
Y2FsLCBHZXRBcmd1bWVudFJlZ2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9y
IFBoaS4gR2V0QXJndW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFy
CisgICAgICAgICAgICAvLyBpbiB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2
ZXIgd2FzIGEgR2V0TG9jYWwgdG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0
IHdhcyBmb2xsb3dlZCBieSBQaGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9j
YWxzLCB0aGVuCisgICAgICAgICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBH
ZXRMb2NhbC4KICAgICAgICAgICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ug
b25seSBjYXJlIHRoYXQgdGhlIHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1
c2ggb3IgUGhhbnRvbUxvY2FsIGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4g
TGlrZXdpc2UsIGlmCiAgICAgICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFu
ZCBpdCB3YXMgZm9sbG93ZWQgYnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICsz
NjksMTMgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkK
ICAgICB7Ci0gICAgICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0
YXJ0IG9mIGEgbGl2ZSByYW5nZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAg
ICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3Vt
ZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2Fz
ZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAt
IG9uZSBmb3IgdGhlIGFyZ3VtZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwg
YW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBv
dmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5z
aXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhl
YWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAg
ICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0
YXJ0IG9mIGEgbGl2ZSByYW5nZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRo
ZSBzdGFjay4gQnV0IHRob3NlIFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAg
ICAgLy8gZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBn
ZXQgc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQg
dHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBw
cm9sb2d1ZSBjYXNlLAorICAgICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMu
IEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAg
ICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUo
aSwgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNl
dExvY2FsOgogICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2Ug
R2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0
MDYsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2Fz
ZSBQaGk6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAg
ICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJh
bmNoOgogICAgIGNhc2UgU3dpdGNoOgpAQCAtNDcwLDcgKzQ3MSw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVu
dHM6CiAgICAgICAgIC8vIERGRyBiYWNrZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvY2FscyB0aGF0
IHRoaXMgcmVhZHMgYXJlIGZsdXNoZWQuIEZUTCBiYWNrZW5kIGNhbiBoYW5kbGUgdGhvc2UKICAg
ICAgICAgLy8gbG9jYWxzIGJlaW5nIHByb21vdGVkLgotICAgICAgICBpZiAoIWlzRlRMKGdyYXBo
Lm1fcGxhbi5tb2RlKSkKKyAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkgJiYg
IW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZWFk
KFN0YWNrKTsKICAgICAgICAgCiAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGl0J3MgcGhhbnRvbSwg
aXQgc3RpbGwgaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4ndCBiZSByZXBsYWNlZCB3aXRo
IGFub3RoZXIuCkBAIC01NTksMTEgKzU2MCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxD
YWxsOgogICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJk
VmFyYXJnczoKICAgICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzOgorICAgICAgICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFj
ay5zaXplKCk7IGFyZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7Cisg
ICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0
R2V0dGVyOgogICAgICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYo
SGVhcExvY2F0aW9uKEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQx
KCkpLCBMYXp5Tm9kZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVy
ZVJlZ2lzdHJhdGlvblJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRT
dGF0ZSB7IEJlZm9yZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252
ZXJnZWQgfTsKIAorZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRp
bWl6ZUFyZ3VtZW50Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVz
Y3JpYmVzIHRoZSBmb3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4u
CiBlbnVtIEdyYXBoRm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNp
YyBibG9ja3MgbWF5IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhi
bG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1l
bnRzKTsKKyAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2sp
OworICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcp
OwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgog
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgTG9nU2hh
ZG93Q2hpY2tlblByb2xvZ3VlOgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblRhaWw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwLDggKzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBs
KAogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmlu
YWxpemF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRH
ZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRo
dW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJl
Y3RDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1Yihs
aW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBl
UHJvZmlsZXIoKSkKICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRy
aWVzKEFTQ0lJTGl0ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzg2LDYgKzE3ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNl
IEdldENhbGxlZToKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBj
YXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RM
ZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw2ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYg
RGF0YUZvcm1hdEpTKTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3Jt
YXQpOwogICAgIH0KKworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBu
b2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZv
cm1hdCA9ICBEYXRhRm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAg
ICAgICBtX3VzZUNvdW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSBy
ZWdpc3RlckZvcm1hdDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOwor
ICAgICAgICBtX2NhbkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAg
IG1fYm9ybkZvck9TUiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAg
ICAgICAgQVNTRVJUKG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgdm9pZCBpbml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BS
UmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZv
cm1hdEpTKQogICAgIHsKQEAgLTMxMyw2ICszMjYsMTggQEAgcHVibGljOgogICAgICAgICAgICAg
YXBwZW5kRmlsbChGaWxsLCBzdHJlYW0pOwogICAgIH0KIAorICAgIHZvaWQgbW92ZVRvR1BSKFZh
cmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChncHIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVCh1LmdwciAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKG1fcmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZvcm1h
dE5vbmUpOworICAgICAgICB1LmdwciA9IGdwcjsKKyAgICAgICAgaWYgKG1fYm9ybkZvck9TUikg
eworICAgICAgICAgICAgc3RyZWFtLmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpkZWF0aChN
aW5pZmllZElEKG1fbm9kZSkpKTsKKyAgICAgICAgICAgIGFwcGVuZEZpbGwoRmlsbCwgc3RyZWFt
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFJlY29yZCB0aGF0IHRoaXMgdmFsdWUgaXMg
ZmlsbGVkIGludG8gbWFjaGluZSByZWdpc3RlcnMsCiAgICAgLy8gdHJhY2tpbmcgd2hpY2ggcmVn
aXN0ZXJzLCBhbmQgd2hhdCBmb3JtYXQgdGhlIHZhbHVlIGhhcy4KICNpZiBVU0UoSlNWQUxVRTY0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTQsNyArMjk0LDYgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRh
dGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAgQVNTRVJUKG5vZGUtPmhhc1Zh
cmlhYmxlQWNjZXNzRGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykpOwog
ICAgIGlmIChub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpKSB7CiAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dHJ5R2V0VmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEpIHsKQEAgLTM3
Myw2ICszNzIsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLT5jYXNlc1tpXS52YWx1
ZSwgY29udGV4dCksICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgfQorICAgIGlm
IChub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigiLCBHUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpLCAiKSIpOwogICAgIENs
b2JiZXJTZXQgcmVhZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7CiAgICAgYWRkUmVhZHNBbmRX
cml0ZXMoKnRoaXMsIG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAtMzk2LDcgKzM5Nyw3IEBAIHZv
aWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiV2FzSG9pc3RlZCIpOwogICAgIG91dC5wcmludCgiKSIpOwogCi0gICAgaWYgKG5v
ZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpICYmIG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0
YSgpKQorICAgIGlmICgobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgfHwgbm9kZS0+b3AoKSA9
PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEo
KSkKICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5v
ZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICAgICBlbHNl
IGlmIChub2RlLT5oYXNIZWFwUHJlZGljdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoIiAgcHJl
ZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkpOwpA
QCAtNTA2LDggKzUwNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1
bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUs
ICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRp
b25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwog
ICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9y
bWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0g
ICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwg
IlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGNo
ZWNraW5nOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50c0ZvckNoZWNraW5nKSwgIlxuIik7CisgICAg
ICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgb24gc3RhY2s6ICIsIGxpc3REdW1wKG1fYXJndW1l
bnRzT25TdGFjayksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAg
ICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtMTYyMCwxMyArMTYyMywxMyBAQCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgIGlmICghY3VycmVu
dE5vZGUgfHwgbm9kZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5vcmlnaW4pIHsKICAgICAgICAg
ICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0YWNr
KCp0aGlzKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8
IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeyAgLy8gIFJlZ0NDIFRvRG86IE5l
ZWQgYSBiZXR0ZXIgdGVzdAogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0g
WyZdICgpIC0+IFZhbHVlUHJvZmlsZSogewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBt
X2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRO
b2RlKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50
c09uU3RhY2tbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9k
ZSB8fCAhYXJndW1lbnROb2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTksNyArODU5
LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUo
Q29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFuZGxlckluZm8qJiBj
YXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJlZ2lzdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2stPnVzZXNFdmFs
KCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9
CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC04NzgsOSArODc4LDkgQEAg
cHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNz
RGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVu
dCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrCi0gICAg
Ly8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2ls
bCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBub2Rlcy4KKyAgICAv
LyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRB
cmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRoZSBtYWNoaW5lIGNv
ZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhp
cyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBGbHVzaCBub2Rlcy4K
ICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdldFN0YWNrIG5vZGVz
IGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdAogICAgIC8v
IG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBE
Q0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMsMTEgKzkwMywxMiBA
QCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFuZCB3ZSBy
ZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNpZGUKICAg
ICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAgVmVj
dG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c09uU3RhY2s7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBt
X2FyZ3VtZW50c0ZvckNoZWNraW5nOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFu
aW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdl
J3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRz
OwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1f
dmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9u
LCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVT
ZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKQEAgLTk1NCw2ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAg
R3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRpb25TdGF0
ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6OkluaXRpYWwgfTsKKyAg
ICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRz
ID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGltaXplQXJndW1lbnRG
bHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBt
X2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFs
aXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07CiAgICAgICAgICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTggKzk5LDYgQEAg
dm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAKLXZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1cnJlbnRseSBtYXRj
aGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5lZWQgdG8KLSAgICAv
LyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUgcHJvbG9ndWUgYW5k
IHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSdsbCBuZWVkIHRvIGNv
bnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZpY2FsbHkgdGhlIHN0
YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91
dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8gYm90aCBub3JtYWwg
cmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCi0g
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
bV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0KIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAgICBlbWl0U2F2ZUNh
bGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2pzQ2FsbHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQgPSBtX2pzQ2FsbHNb
aV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAg
bGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0ciht
X3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50
cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAg
ICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93Q2FsbCkpLAogICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50
YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVjb3JkJiByZWNvcmQg
OiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29y
ZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGwsIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJlY29yZC5oYXNTbG93
Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVu
Y3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1
bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24oKSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7
CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAg
ICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgTGFi
ZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2Rl
QmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAgICAgLy8gUGxhbnQg
YSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNr
LgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogICAg
IG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOwogCisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIG1fc3RhY2tB
cmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
CisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAg
ICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgYXJndW1lbnRSZWdp
c3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAg
ICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgp
KTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAgICAvLyBHZW5lcmF0
ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRv
cnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYsMjQgKzQxNiw5MSBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9G
aXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVy
KTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRy
eUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3RhY2tBcmdz
QXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50
cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtl
X3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZSht
X2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50cnlwb2ludHMpOwog
fQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewogICAgIHNldFN0YXJ0
T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBHUFJS
ZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAg
IEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCByZWdpc3RlckFyZ3Vt
ZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0ZXIg
YXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJB
cmd1bWVudEluZGV4ID49IG51bVBhcmFtZXRlcnM7IGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4
LS0pIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbZXh0cmFSZWdp
c3RlckFyZ3VtZW50SW5kZXggKyAxXSA9IGxhYmVsKCk7CisgICAgICAgICAgICBlbWl0UHV0QXJn
dW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4KSwgZXh0cmFSZWdpc3RlckFyZ3Vt
ZW50SW5kZXgpOworICAgICAgICB9CisgICAgfQorICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OlJlZ0FyZ3NFeHRyYSk7CisKKyAgICBjb250aW51ZVJlZ2lzdGVyRW50cnkuYXBwZW5kKGp1
bXAoKSk7CisKKyAgICBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAg
ICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzQXJpdHkpOworCisgICAgTGFiZWwg
cmVnaXN0ZXJBcmdzQ2hlY2tBcml0eSh0aGlzKTsKKworICAgIEp1bXAgcmVnaXN0ZXJDaGVja0Fy
aXR5OworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkgPSBicmFuY2gzMihO
b3RFcXVhbCwgYXJnQ291bnRSZWcsIFRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSk7CisgICAg
ZWxzZSB7CisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9IGJyYW5jaDMyKEJlbG93LCBhcmdD
b3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKTsKKyAgICAgICAgbV9yZWdpc3Rl
ckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3MgPSBsYWJlbCgpOworICAgIH0KKyAgICAKKyAgICBM
YWJlbCByZWdpc3RlckVudHJ5Tm9Bcml0eSh0aGlzKTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJz
IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJl
Z2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbbnVtUGFyYW1ldGVyc10gPSByZWdpc3RlckVudHJ5
Tm9Bcml0eTsKKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NOb0FyaXR5
KTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRyeS5saW5rKHRoaXMpOworI2VuZGlmCisKKyAg
ICBMYWJlbCBtYWluRW50cnkodGhpcyk7CisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwog
CiAgICAgLy8gPT09IEZ1bmN0aW9uIGhlYWRlciBjb2RlIGdlbmVyYXRpb24gPT09CiAgICAgLy8g
VGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgd2l0aG91dCBwZXJmb3JtaW5nIGFuIGFyaXR5
IGNoZWNrLgogICAgIC8vIElmIHdlIG5lZWRlZCB0byBwZXJmb3JtIGFuIGFyaXR5IGNoZWNrIHdl
IHdpbGwgYWxyZWFkeSBoYXZlIG1vdmVkIHRoZSByZXR1cm4gYWRkcmVzcywKICAgICAvLyBzbyBl
bnRlciBhZnRlciB0aGlzLgogICAgIExhYmVsIGZyb21Bcml0eUNoZWNrKHRoaXMpOworCisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworI2lmICFFTkFCTEUoQ0FM
TEVSX1NQSUxMU19DQUxMRUUpCisgICAgc3RvcmVQdHIoYXJndW1lbnRSZWdpc3RlckZvckNhbGxl
ZSgpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVO
QUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgIHN0b3JlMzIoYXJnQ291bnRSZWcsIHBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworI2VuZGlmCisKKyAgICBM
YWJlbCBmcm9tU3RhY2tFbnRyeSh0aGlzKTsKKyNlbmRpZgorICAgIAorICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwog
ICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBp
biB0aGUgSlNTdGFjay4KLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgp
IC0gMSkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBKdW1wIHN0YWNrT3ZlcmZsb3cgPSBicmFuY2hQ
dHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgp
KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRF
eGl0KCkgLSAxKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgSnVtcCBzdGFja092ZXJmbG93
ID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0
YWNrTGltaXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgLy8gTW92ZSB0aGUgc3Rh
Y2sgcG9pbnRlciBkb3duIHRvIGFjY29tbW9kYXRlIGxvY2FscwogICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIobV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtNDUy
LDI4ICs1MjksMTEyIEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlv
bldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisKKyAgICBKdW1wTGlzdCBhcml0eU9LOwogICAgIAot
ICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVj
ayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgLy8gaGF2ZSBiZWVuIHBhc3Nl
ZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2Ug
Y2FuIHN0YXRpY2FsbHkKLSAgICAvLyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFy
Z3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBoYXZlIGFscmVhZHkgY2hlY2tlZCkuCi0gICAg
Ly8gSW4gY2FzZXMgd2hlcmUgYW4gYXJpdHkgY2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBo
ZXJlLgotICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBERkcg
c3R5bGUgb3BlcmF0aW9uIChub3JtYWwgQyBjYWxsaW5nIGNvbnZlbnRpb25zKS4KLSAgICBtX2Fy
aXR5Q2hlY2sgPSBsYWJlbCgpOwotICAgIGNvbXBpbGVFbnRyeSgpOworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBqdW1wKHJlZ2lzdGVyQXJnc0NoZWNr
QXJpdHkpOworCisgICAgSnVtcExpc3QgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXA7CisgICAgaWYg
KG51bVBhcmFtZXRlcnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
KSB7CisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworICAgICAgICByZWdp
c3RlckFyaXR5TmVlZHNGaXh1cC5hcHBlbmQoYnJhbmNoMzIoQmVsb3csIGFyZ0NvdW50UmVnLCBU
cnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpKTsKKworICAgICAgICAv
LyBXZSBoYXZlIGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cy4KKworICAgICAgICAvLyBUaGUgZmFz
dCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgY29y
cmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCisgICAgICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8g
dGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBz
dGF0aWNhbGx5CisgICAgICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJn
dW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVja2VkKS4KKyAgICAg
ICAgLy8gSW4gY2FzZXMgd2hlcmUgYW4gYXJpdHkgY2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRl
ciBoZXJlLgorICAgICAgICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxh
YmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJh
KTsKKworICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3NlZCB0byBmdW5jdGlvbgorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgIGJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkubGlua1RvKG1haW5FbnRyeSwgdGhpcyk7CisgICAg
ICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAg
ICB9CisgICAgICAgIGp1bXAobWFpbkVudHJ5KTsKKyAgICB9CisKKyAgICAvLyBGYWxsIHRocm91
Z2gKKyAgICBpZiAobnVtUGFyYW1ldGVycyA+IDApIHsKKyAgICAgICAgLy8gVGhlcmUgc2hvdWxk
IGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVy
QXJndW1lbnRGaXh1cENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycyAtIDEsIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICBMYWJlbCByZWdpc3Rl
ckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gbGFiZWwoKTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXggPD0gcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQ7
IGFyZ0luZGV4KyspCisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2Fy
Z0luZGV4XSA9IHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXA7CisgICAgfQorCisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgIHJlZ2lzdGVy
QXJpdHlOZWVkc0ZpeHVwLmxpbmsodGhpcyk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA+PSBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZWdpc3Rl
ckNoZWNrQXJpdHkubGluayh0aGlzKTsKKworICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0Zy
YW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBKdW1w
IGNvbnRpbnVlVG9TdGFja0FyaXR5Rml4dXAgPSBqdW1wKCk7CisjZW5kaWYKKyNlbmRpZgorCisg
ICAgbV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJpdHkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJT
KQorICAgIGNvbnRpbnVlVG9TdGFja0FyaXR5Rml4dXAubGluayh0aGlzKTsKKyNlbmRpZgorCisg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIGxvYWQzMihBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6
cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkubGlua1Rv
KGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKKyAgICBhcml0eU9LLmFwcGVuZChicmFuY2gzMihBYm92
ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkpKTsKKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4
dXBSZXF1aXJlZCk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwog
ICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRp
b25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86
OnJlZ1QwKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBw
ZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCiAgICAg
ZW1pdFN0b3JlQ29kZU9yaWdpbihDb2RlT3JpZ2luKDApKTsKICAgICBtb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIG1fY2FsbEFyaXR5Rml4
dXAgPSBjYWxsKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgSnVtcCB0b0ZpbGxSZWdpc3RlcnMgPSBqdW1wKCk7CisKKyAgICBtX3N0YWNrQXJn
c0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpTdGFja0FyZ3NOb0FyaXR5KTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAg
YXJpdHlPSy5saW5rKHRoaXMpOworICAgIHRvRmlsbFJlZ2lzdGVycy5saW5rKHRoaXMpOworCisg
ICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyNpZiBF
TkFCTEUoU1RBQ0tfRU5UUllfRklMTFNfQ0FMTEVFX1JFRykKKyAgICBsb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19BUkdDT1VOVF9SRUcpCisgICAg
bG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworI2VuZGlmCisKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBsb2FkNjQoQWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAr
IGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCisgICAganVtcChmcm9t
U3RhY2tFbnRyeSk7CisjZWxzZQorICAgIGFyaXR5T0subGlua1RvKGZyb21Bcml0eUNoZWNrLCB0
aGlzKTsKICAgICBqdW1wKGZyb21Bcml0eUNoZWNrKTsKKyNlbmRpZgogICAgIAogICAgIC8vIEdl
bmVyYXRlIHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2Vu
ZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CkBAIC01MDIsMTAgKzY2MywzNSBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIAogICAgIGRpc2Fzc2Vt
YmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlD
aGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKKyAgICBKSVRFbnRy
eVBvaW50cyBlbnRyeXBvaW50czsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtYWluRW50cnlDb2RlUHRyID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVu
dHJ5Tm9Bcml0eSk7CisjZWxzZQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnlD
b2RlUHRyID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpOworI2VuZGlmCisgICAg
ZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
LCBtYWluRW50cnlDb2RlUHRyKTsKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJncywgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lzdGVy
QXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncykpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9y
KFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fcmVn
aXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spKTsKKworICAgIGZvciAodW5zaWduZWQgYXJnQ291bnQg
PSAxOyBhcmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdDb3VudCsrKSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAg
ICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAgICBlbnRyeSA9
IG1haW5FbnRyeUNvZGVQdHI7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyQXJndW1lbnRzRW50
cnlwb2ludHNbYXJnQ291bnRdLmlzU2V0KCkpCisgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
bV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGVudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQo
YXJnQ291bnQpLCBlbnRyeSk7CisgICAgfQorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0
YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3N0
YWNrQXJnc0FyaXR5T0tFbnRyeSkpOworI2Vsc2UKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZv
cihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
bWFpbkVudHJ5KSk7CisjZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3N0YWNrQXJnc1dpdGhB
cml0eUNoZWNrKSk7CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1f
aml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
ZW50cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpkaXNhc3NlbWJsZShMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVjdENhbGxSZWNvcmQo
Y2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRKU0RpcmVj
dENhbGwoQ2FsbCBjYWxsLCBDYWxsIHNsb3dDYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVj
dENhbGxSZWNvcmQoY2FsbCwgc2xvd0NhbGwsIHNsb3dQYXRoLCBpbmZvKSk7CisgICAgfQorICAg
IAogICAgIHZvaWQgYWRkSlNEaXJlY3RUYWlsQ2FsbChQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1
bXAsIENhbGwgY2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5mbykKICAgICB7
CiAgICAgICAgIG1fanNEaXJlY3RUYWlsQ2FsbHMuYXBwZW5kKEpTRGlyZWN0VGFpbENhbGxSZWNv
cmQocGF0Y2hhYmxlSnVtcCwgY2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKQEAgLTI2Nyw3ICsyNzIs
NiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOwog
ICAgIAogICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIHRvIGNvbXBpbGUuCi0gICAgdm9p
ZCBjb21waWxlRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5
KCk7CiAgICAgdm9pZCBjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCk7CiAgICAgdm9pZCBjb21w
aWxlQm9keSgpOwpAQCAtMzE4LDcgKzMyMiwxOCBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIEpTRGlyZWN0Q2FsbFJlY29yZChDYWxsIGNhbGwsIENh
bGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgICAg
ICAgICA6IGNhbGwoY2FsbCkKKyAgICAgICAgICAgICwgc2xvd0NhbGwoc2xvd0NhbGwpCisgICAg
ICAgICAgICAsIHNsb3dQYXRoKHNsb3dQYXRoKQorICAgICAgICAgICAgLCBpbmZvKGluZm8pCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzU2xvd0NhbGwoKSB7IHJldHVy
biBzbG93Q2FsbC5tX2xhYmVsLmlzU2V0KCk7IH0KKwogICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIENhbGwgc2xvd0NhbGw7CiAgICAgICAgIExhYmVsIHNsb3dQYXRoOwogICAgICAgICBDYWxs
TGlua0luZm8qIGluZm87CiAgICAgfTsKQEAgLTMzMSw3ICszNDYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLCBpbmZvKGluZm8pCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXA7CiAgICAgICAgIENhbGwgY2FsbDsK
ICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CkBAIC0zNTUsNyArMzcwLDEyIEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdEluZm8+IG1fZXhjZXB0aW9uSGFuZGxl
ck9TUkV4aXRDYWxsU2l0ZXM7CiAgICAgCiAgICAgQ2FsbCBtX2NhbGxBcml0eUZpeHVwOwotICAg
IExhYmVsIG1fYXJpdHlDaGVjazsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjazsKKyAgICBMYWJlbCBtX3N0
YWNrQXJnc0FyaXR5T0tFbnRyeTsKKyNlbmRpZgorICAgIExhYmVsIG1fc3RhY2tBcmdzV2l0aEFy
aXR5Q2hlY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0aXZlSklUPiBtX3NwZWN1bGF0
aXZlOwogICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlcjsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5h
bGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUpJVEZpbmFsaXplcjo6SklURmlu
YWxpemVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1bmlx
dWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRo
QXJpdHlDaGVjaykKK0pJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFBhc3NS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlciwgSklURW50cnlQb2ludHMmIGVudHJ5cG9pbnRzKQogICAgIDogRmluYWxpemVy
KHBsYW4pCiAgICAgLCBtX2ppdENvZGUoaml0Q29kZSkKICAgICAsIG1fbGlua0J1ZmZlcihXVEZN
b3ZlKGxpbmtCdWZmZXIpKQotICAgICwgbV93aXRoQXJpdHlDaGVjayh3aXRoQXJpdHlDaGVjaykK
KyAgICAsIG1fZW50cnlwb2ludHMoZW50cnlwb2ludHMpCiB7CiB9CiAKQEAgLTU2LDkgKzU3LDgg
QEAgc2l6ZV90IEpJVEZpbmFsaXplcjo6Y29kZVNpemUoKQogCiBib29sIEpJVEZpbmFsaXplcjo6
ZmluYWxpemUoKQogewotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAg
IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIs
IHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2Rl
OjpERkdKSVQpKS5kYXRhKCkpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfREZHX0NPREUoKm1f
bGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dp
dGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpOwor
ICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb2RlUmVmLCBtX2VudHJ5cG9pbnRzKSk7CiAgICAgCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+
c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIApAQCAtNjksMTAgKzY5LDExIEBAIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiAKIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0
aW9uKCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJpdHlDaGVjay5pc0VtcHR5VmFs
dWUoKSk7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJlZigKLSAgICAgICAgRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpLAotICAgICAgICBtX3dpdGhBcml0eUNoZWNrKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCghbV9lbnRyeXBvaW50cy5lbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuaXNF
bXB0eVZhbHVlKCkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpOworCisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklU
RW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKKwogICAgIG1fcGxh
bi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAKICAgICBmaW5hbGl6ZUNv
bW1vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklURmluYWxpemVyIDogcHVibGljIEZpbmFs
aXplciB7CiBwdWJsaWM6Ci0gICAgSklURmluYWxpemVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENv
ZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3
aXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OkVtcHR5VmFsdWUpKTsKKyAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NSZWZQdHI8SklU
Q29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgSklURW50cnlQb2ludHMmKTsKICAg
ICB2aXJ0dWFsIH5KSVRGaW5hbGl6ZXIoKTsKICAgICAKICAgICBzaXplX3QgY29kZVNpemUoKSBv
dmVycmlkZTsKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBmaW5hbGl6ZUNvbW1vbigpOwotICAgIAorCiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29k
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwotICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBtX3dpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRz
IG1fZW50cnlwb2ludHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6
ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwot
ICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxp
bmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAg
ICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dy
YXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAgICAgICAgaWYg
KChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50IHx8IG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCisg
ICAgICAgICAgICAgICAgICAgICYmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgfHwgbm9k
ZSAhPSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQo
KV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9k
ZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVz
aEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmx1c2hBY2Nlc3NEYXRhKQpAQCAtMTE3LDcgKzExNyw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9w
ZXJhbmQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwpOyAvLyBXZSBzaG91bGQg
aGF2ZSBpbnNlcnRlZCBhIEZsdXNoIGJlZm9yZSB0aGlzIQogICAgICAgICAgICAgaW5pdGlhbEFj
Y2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICAgICAgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJ
KHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgRXhpdE1vZGUgbWF5RXhpdElt
cGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRD
YWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSw2ICs0MSw4IEBAIE1pbmlmaWVkTm9kZSBNaW5pZmllZE5vZGU6OmZyb21Ob2Rl
KE5vZGUKICAgICByZXN1bHQubV9vcCA9IG5vZGUtPm9wKCk7CiAgICAgaWYgKGhhc0NvbnN0YW50
KG5vZGUtPm9wKCkpKQogICAgICAgICByZXN1bHQubV9pbmZvID0gSlNWYWx1ZTo6ZW5jb2RlKG5v
ZGUtPmFzSlNWYWx1ZSgpKTsKKyAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50
UmVnaXN0ZXIpCisgICAgICAgIHJlc3VsdC5tX2luZm8gPSAwOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBQaGFudG9tRGlyZWN0QXJndW1lbnRzIHx8IG5vZGUtPm9w
KCkgPT0gUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7CiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90Pihub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUu
aAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBA
IGlubGluZSBib29sIGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgoTm9kZVQKICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBo
YW50b21DbG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgYm9vbCBOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgm
IAogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoKICAgICBjYXNlIFNldEFy
Z3VtZW50OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEZsdXNoOgog
ICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODI4LDYgKzgyOCw5
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYpOwogICAg
IGJvb2wgYWNjZXNzZXNTdGFjayhHcmFwaCYgZ3JhcGgpCiAgICAgeworICAgICAgICBpZiAob3Ao
KSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgICAgIHJldHVybiBoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoZ3JhcGgpOwogICAgIH0KICAgICAK
QEAgLTg0Niw2ICs4NDksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
VmFyaWFibGVBY2Nlc3NEYXRhKj4oKS0+ZmluZCgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNl
dFZhcmlhYmxlQWNjZXNzRGF0YShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlKQorICAgIHsK
KyAgICAgICAgbV9vcEluZm8gPSB2YXJpYWJsZTsKKyAgICB9CisgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGxvY2FsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+bG9jYWwoKTsKQEAgLTEyMTQsNiArMTIyMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CiAgICAgfQogICAgIAorICAg
IGJvb2wgaGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBv
cCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXI7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGFy
Z3VtZW50UmVnaXN0ZXJJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQXJndW1lbnRS
ZWdpc3RlckluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFzPHVuc2lnbmVkPigp
OworICAgIH0KKyAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1
cm4gISFyZXN1bHQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBO
b3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55
d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
bWFjcm8oR2V0QXJndW1lbnRSZWdpc3RlciwgTm9kZVJlc3VsdEpTIC8qIHwgTm9kZU11c3RHZW5l
cmF0ZSAqLykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbG9jYWwgdmFyaWFibGUgYWNjZXNz
LiBUaGVzZSBub2RlcyBhcmUgbGlua2VkIHRvZ2V0aGVyIHVzaW5nIFBoaSBub2Rlcy4gKi9cCiAg
ICAgLyogQW55IHR3byBub2RlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIFBoaSBncmFwaCB3
aWxsIHNoYXJlIHRoZSBzYW1lICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEx
IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGUKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOiB7CisgICAgICAgIG1f
YXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkuc2V0Tm9kZShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBNb3ZIaW50OiB7CiAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKS5z
ZXROb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsMTYgKzExMiwzMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRv
IGhlcmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAg
Ci0gICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihiYXNlbGluZS0+bnVtUGFy
YW1ldGVycygpKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRh
cmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlm
ICghb2xkTm9kZSkgewotICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlz
IGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAg
ICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAg
ICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhbiBhcmd1bWVudCBub2RlIGV2
ZW4gaWYgaXQncyBub3QgbmVlZGVkLgorICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAg
bV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCi0gICAgICAgICAgICAgICAg
T3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBOb2RlKiBub2Rl
OworICAgICAgICAgICAgTm9kZSogc3RhY2tOb2RlOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAg
ICAgICAgIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgR2V0QXJndW1lbnRSZWdpc3Rlciwgb3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFy
Z3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5ld1Jvb3Qt
PmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRM
b2NhbCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwg
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICBzdGFja05vZGUgPSBub2RlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1l
bnRdID0gbm9kZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW2FyZ3Vt
ZW50XSA9IHN0YWNrTm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0g
MDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE0LDcgKzMxNCw5IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIK
ICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAgICAgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwog
ICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgIGRmZy5tX3N0cmVuZ3RoUmVkdWNlQXJndW1l
bnRzID0gT3B0aW1pemVBcmd1bWVudEZsdXNoZXM7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtQ0ZH
U2ltcGxpZmljYXRpb24oZGZnKTsKKyAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVj
dGlvbihkZmcpOwogICAgIGNoYW5nZWQgfD0gcGVyZm9ybUxvY2FsQ1NFKGRmZyk7CiAgICAgCiAg
ICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAkocmV2aXNpb24gMjA5
NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBv
dXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KKyAg
ICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IHN0YWNrIGFyZ3VtZW50cywgZXhjZXB0
IHRoaXMsIGFyZSBkZWZpbml0ZWx5IHJlYWQuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLSA+IDE7KQogICAgICAg
ICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdCgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tp
bmdbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSB8fCBu
b2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkZyb21WYWx1ZShtX2dyYXBoLm1fcGxhbi5tdXN0SGFuZGxlVmFsdWVzW2ldKSk7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJl
Z2lzdGVyOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uID0gdmFyaWFibGUtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICghdmFyaWFi
bGUtPmNvdWxkUmVwcmVzZW50SW50NTIoKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1Mk9ubHkp
KQorICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNBbnlJbnRB
c0RvdWJsZSkgJiB+U3BlY0ludDUyT25seTsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQor
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFVJbnQzMlRvTnVtYmVyOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2FuU3BlY3VsYXRlSW50
MzIobV9wYXNzKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjSW50MzJPbmx5KTsKQEAgLTk2OCw2ICs5NzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNh
c2UgR2V0TG9jYWw6CiAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgIGNhc2UgR2V0QXJn
dW1lbnRSZWdpc3RlcjoKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2Fz
ZSBWYWx1ZUFkZDoKICAgICAgICAgY2FzZSBBcml0aEFkZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIAogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKICAgICAgICAgCi0gICAg
ICAgIC8vIEFsbCBvZiB0aGUgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9v
dC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQorICAgICAgICAvLyBBbGwgb2YgdGhl
IHN0YWNrIGFyZ3VtZW50cyBzaG91bGQgYmUgbGl2ZSBhdCBoZWFkIG9mIHJvb3QuIE5vdGUgdGhh
dCB3ZSBtYXkgZmluZCB0aGF0IHNvbWUKICAgICAgICAgLy8gbG9jYWxzIGFyZSBsaXZlIGF0IGhl
YWQgb2Ygcm9vdC4gVGhpcyBzZWVtcyB3cm9uZyBidXQgaXNuJ3QuIFRoaXMgd2lsbCBoYXBwZW4g
Zm9yIGV4YW1wbGUKICAgICAgICAgLy8gaWYgdGhlIGZ1bmN0aW9uIGFjY2Vzc2VzIGNsb3N1cmUg
dmFyaWFibGUgIzQyIGZvciBzb21lIG90aGVyIGZ1bmN0aW9uIGFuZCB3ZSBlaXRoZXIgZG9uJ3QK
ICAgICAgICAgLy8gaGF2ZSB2YXJpYWJsZSAjNDIgYXQgYWxsIG9yIHdlIGhhdmVuJ3Qgc2V0IGl0
IGF0IHJvb3QsIGZvciB3aGF0ZXZlciByZWFzb24uIEJhc2ljYWxseSB0aGlzCkBAIC0xNTcsOCAr
MTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLy8KICAgICAgICAgLy8gRm9yIG91ciBwdXJwb3Nl
cyBoZXJlLCB0aGUgaW1wcmVjaXNpb24gaW4gdGhlIGFsaWFzaW5nIGlzIGhhcm1sZXNzLiBJdCBq
dXN0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgLy8gbWF5IG5vdCBkbyBhcyBtdWNoIFBoaSBwcnVu
aW5nIGFzIHdlIHdhbnRlZC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVBdEhlYWQuYXRJ
bmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0SW5kZXgoMCkuYXJndW1lbnQoaSkpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJn
dW1lbnRzKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChpID49IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICAvLyBTdGFjayBhcmd1
bWVudHMgYXJlIGxpdmUgYXQgdGhlIGhlYWQgb2Ygcm9vdC4KKyAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1bWVudChp
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIE5leHQg
aWRlbnRpZnkgd2hlcmUgd2Ugd291bGQgd2FudCB0byBzaW5rIFB1dFN0YWNrcyB0by4gV2Ugc2F5
IHRoYXQgdGhlcmUgaXMgYSBkZWZlcnJlZAogICAgICAgICAvLyBmbHVzaCBpZiB3ZSBoYWQgYSBQ
dXRTdGFjayB3aXRoIGEgZ2l2ZW4gRmx1c2hGb3JtYXQgYnV0IGl0IGhhc24ndCBiZWVuIG1hdGVy
aWFsaXplZCB5ZXQuCkBAIC0zNTgsNyArMzYyLDggQEAgcHVibGljOgogICAgICAgICAgICAgZm9y
IChOb2RlKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKLSAgICAgICAgICAgICAgICAg
ICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250YWlucyhub2RlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1dFN0YWNrc1RvU2luay5hZGQobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IHNzYUNhbGN1bGF0b3IubmV3RGVmKAogICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZFRv
VmFyaWFibGUub3BlcmFuZChub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2ssIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CkBAIC00ODMs
MTEgKzQ4OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgZGVsZXRlIGFy
Z3VtZW50IFB1dFN0YWNrcywgbm8gbmVlZCB0byBhZGQgb25lIGJhY2suCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2suY29udGFpbnMoaW5jb21p
bmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gR290dGEgaW5zZXJ0IGEgUHV0U3RhY2suCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJJbnNlcnRpbmcgYSBQdXRTdGFjayBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBub2RlLCAiXG4i
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9w
ZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTUzOCw2ICs1NDcsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNDb25jcmV0ZShkZWZlcnJlZC5vcGVyYW5kKG9wZXJhbmQpKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2su
Y29udGFpbnMoaW5jb21pbmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBwaGlOb2RlLCBp
bmNvbWluZyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJc3N1ZSBhIEdldFN0YWNrIHRvIGdldCB0aGUgdmFsdWUuIFRoaXMgbWlnaHQg
aW50cm9kdWNlIHNvbWUgcmVkdW5kYW5jeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyAr
MTQzLDYgQEAgcHVibGljOgogICAgIFZpcnR1YWxSZWdpc3RlciBhbGxvY2F0ZVNwZWNpZmljKFJl
Z0lEIHJlZykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gQmFua0luZm86OnRvSW5k
ZXgocmVnKTsKLQogICAgICAgICArK21fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbmFtZSA9IG5hbWVBdEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKG5h
bWUuaXNWYWxpZCgpKQpAQCAtMTcyLDExICsxNzEsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Rh
dGFbaW5kZXhdLm5hbWUgPSBuYW1lOwogICAgICAgICBtX2RhdGFbaW5kZXhdLnNwaWxsT3JkZXIg
PSBzcGlsbE9yZGVyOwogICAgIH0KKwogICAgIHZvaWQgcmVsZWFzZShSZWdJRCByZWcpCiAgICAg
ewogICAgICAgICByZWxlYXNlQXRJbmRleChCYW5rSW5mbzo6dG9JbmRleChyZWcpKTsKICAgICB9
CiAKKyAgICB2b2lkIG1vdmVSZWcoUmVnSUQgZnJvbVJlZywgUmVnSUQgdG9SZWcpCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSBCYW5rSW5mbzo6dG9JbmRleChmcm9tUmVnKTsK
KyAgICAgICAgdW5zaWduZWQgdG9JbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4KHRvUmVnKTsKKyAg
ICAgICAgCisgICAgICAgIC8vICdmcm9tSW5kZXgnIG11c3QgYmUgYSB2YWxpZCwgbmFtZWQgcmVn
aXN0ZXIuCisgICAgICAgIEFTU0VSVChmcm9tSW5kZXggPCBOVU1fUkVHUyk7CisgICAgICAgIEFT
U0VSVChtX2RhdGFbZnJvbUluZGV4XS5uYW1lLmlzVmFsaWQoKSk7CisgICAgICAgIAorICAgICAg
ICAvLyAndG9JbmRleCcgbXVzdCBiZSBhIHZhbGlkLCB1bm5hbWVkIGFuZCBsb2NrZWQgcmVnaXN0
ZXIuCisgICAgICAgIEFTU0VSVCh0b0luZGV4IDwgTlVNX1JFR1MpOworICAgICAgICBBU1NFUlQo
IW1fZGF0YVt0b0luZGV4XS5uYW1lLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtX2RhdGFb
dG9JbmRleF0ubG9ja0NvdW50KTsKKworICAgICAgICBtX2RhdGFbdG9JbmRleF0ubmFtZSA9IG1f
ZGF0YVtmcm9tSW5kZXhdLm5hbWU7CisgICAgICAgIG1fZGF0YVt0b0luZGV4XS5zcGlsbE9yZGVy
ID0gbV9kYXRhW2Zyb21JbmRleF0uc3BpbGxPcmRlcjsKKyAgICAgICAgcmVsZWFzZUF0SW5kZXgo
ZnJvbUluZGV4KTsKKyAgICB9CisKICAgICAvLyBsb2NrL3VubG9jayByZWdpc3RlciwgZW5zdXJl
cyB0aGF0IHRoZXkgYXJlIG5vdCBzcGlsbGVkLgogICAgIHZvaWQgbG9jayhSZWdJRCByZWcpCiAg
ICAgewpAQCAtMTg2LDYgKzIwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgKyttX2RhdGFbaW5kZXhd
LmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKICAg
ICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJRCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4KHJlZyk7CkBAIC0yMzYsNiArMjU2LDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2JhbmstPmlzTG9ja2VkQXRJbmRleChtX2luZGV4
KTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdW5sb2NrKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+dW5sb2NrQXRJbmRleChtX2luZGV4KTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCByZWxlYXNlKCkgY29uc3QKICAgICAgICAgewog
ICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNlQXRJbmRleChtX2luZGV4KTsKQEAgLTI5OCw2ICsz
MjMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fZGF0YVtpbmRleF0ubG9ja0NvdW50
OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2NrQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5VTV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0
YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAgICAgLS1tX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsK
KyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbmFtZUF0SW5kZXgodW5zaWduZWQgaW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBOVU1fUkVHUyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDggQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMg
YW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBXZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRp
bmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwgYW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0
LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LiBX
ZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3RlciBieSBkaXJlY3RseQorICAgICAgICAvLyBhZGRp
bmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1hcHBpbmcgaGFzaCBtYXAuCiAgICAgICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0t
OykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2Nr
SW5kZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKQEAgLTgzLDE0ICs4NCwxNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25tZW50IGZvciBldmVyeSBsb2NhbC4KICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUo
KTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwg
JiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVudCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5vcCgpICE9IFNldEFyZ3VtZW50ICYmIG5vZGUtPm9w
KCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZTsKKyAgICAgICAgICAgICAgICBOb2RlKiBj
aGlsZE5vZGUgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNl
dExvY2FsKQogICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBub2RlLT5jaGlsZDEoKS5u
b2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVu
dFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9k
ZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEwMSw5ICsxMDQsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudEdldHRlcnMuYWRkKGNo
aWxkTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2Rl
LCBjaGlsZE5vZGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKAotICAgICAgICAgICAgICAgICAgICBtX3Nz
YVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZhcmlhYmxlKSwgYmxvY2ssIGNoaWxkTm9kZSk7CisK
KyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlKQorICAgICAgICAgICAgICAgICAgICBtX2Nh
bGN1bGF0b3IubmV3RGVmKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9zc2FWYXJpYWJsZUZv
clZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJsb2NrLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2Nr
KTsKQEAgLTI5NCw3ICsyOTgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB2YWx1
ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBjaGlsZDsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAKKworICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAg
ICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVy
YW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRHZXR0ZXJzLmNvbnRhaW5zKG5v
ZGUpKTsKICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQobm9kZS0+
c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2FsKSA9IG5vZGU7CkBAIC0zODIsMTcgKzM5MiwyMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Js
b2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5t
X2FyZ3VtZW50c0ZvckNoZWNraW5nLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBO
b2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0p
OworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBo
Lm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNj
ZXNzRGF0YSgpLT5mb3JtYXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1
bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgIGZvcm1h
dCA9IHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1h
dDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQg
dGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0
IHByb2ZpbGluZy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tp
XSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9y
IHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDYgKzE0Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAg
ICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAg
ICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRM
b2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMyLDcgKzkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3Ry
ZWFtLT5zaXplKCkpOwogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CisgICAgaW5mby0+c2V0
VXBDYWxsKGNhbGxUeXBlLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVl
UGF5bG9hZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZd
ICgpIHsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsK
QEAgLTEwODEsNyArMTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICB9
CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBH
UFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
c2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBA
IC01NjE0LDYgKzU2MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIFBoYW50b21DcmVhdGVS
ZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveElu
dDUyKEdQUlJlZyBzb3UKICAgICB1bmxvY2soZnByKTsKIH0KIAotR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnIGdwclRvVXNlKQogewogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFs
UmVnaXN0ZXIpOwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAg
ICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKGdwclRvVXNlKTsKIAogICAgICAgICBp
ZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
ZWRnZS0+YXNKU1ZhbHVlKCk7CkBAIC0xMjAsNyArMTIwLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgdGhlIHJlZ2lzdGVyIGhhcyBh
bHJlYWR5IGJlZW4gbG9ja2VkIHdlIG5lZWQgdG8gdGFrZSBhIGNvcHkuCiAgICAgICAgIC8vIElm
IG5vdCwgd2UnbGwgemVybyBleHRlbmQgaW4gcGxhY2UsIHNvIG1hcmsgb24gdGhlIGluZm8gdGhh
dCB0aGlzIGlzIG5vdyB0eXBlIERhdGFGb3JtYXRJbnQzMiwgbm90IERhdGFGb3JtYXRKU0ludDMy
LgogICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9j
YXRlKGdwclRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBncHIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAh
PSBncHJUb1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRv
VXNlKTsKICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBncHIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CkBAIC0xMzgsNiArMTQzLDEzIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSAKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNC
b29sZWFuOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBpZiAo
Z3ByVG9Vc2UgIT0gSW52YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1fZ3Bycy5tb3ZlUmVnKGdwciwgZ3By
VG9Vc2UpOworICAgICAgICAgICAgaW5mby5tb3ZlVG9HUFIoKm1fc3RyZWFtLCBncHJUb1VzZSk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgICAgIG1fZ3Bycy5s
b2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQpAQCAtNjMyLDYgKzY0NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7CiAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlw
ZSBjYWxsVHlwZTsKKyAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0
YWNrQXJnczsKICAgICBib29sIGlzVmFyYXJncyA9IGZhbHNlOwogICAgIGJvb2wgaXNGb3J3YXJk
VmFyYXJncyA9IGZhbHNlOwogICAgIGJvb2wgaXNUYWlsID0gZmFsc2U7CkBAIC03MTQsNyArNzI3
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIEdQ
UlJlZyBjYWxsZWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIENhbGxGcmFtZVNodWZmbGVEYXRh
IHNodWZmbGVEYXRhOwotICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHRh
aWxDYWxsZWU7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRGR0NhbGxlcik7
CisKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgIGlmIChpc0Rp
cmVjdCkgewpAQCAtNzMzLDYgKzc0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUjsKICAgICAgICAgdW5zaWduZWQg
bnVtVXNlZFN0YWNrU2xvdHMgPSBtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hpbmVMb2NhbDsKICAg
ICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6Q2FsbFZhcmFyZ3Mp
OwogICAgICAgICBpZiAoaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKQEAgLTgxMCw3ICs4Mjcs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAg
ICB1c2Uobm9kZS0+Y2hpbGQzKCkpOwogCiAgICAgICAgIC8vIE5vdyBzZXQgdXAgdGhlICJ0aGlz
IiBhcmd1bWVudC4KLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc0FyZ3VtZW50KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc0FyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMigpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKSk7
CiAgICAgICAgIEdQUlJlZyB0aGlzQXJndW1lbnRHUFIgPSB0aGlzQXJndW1lbnQuZ3ByKCk7CiAg
ICAgICAgIHRoaXNBcmd1bWVudC51c2UoKTsKICAgICAgICAgCkBAIC04NDEsMTIgKzg1OCwxNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoaXNUYWlsKSB7CisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2pp
dCwgVk06OlRhaWxDYWxsKTsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0Lmdy
YXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUo
dGhpcywgY2FsbGVlRWRnZSk7Ci0gICAgICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7
CisgICAgICAgICAgICB0YWlsQ2FsbGVlLmVtcGxhY2UodGhpcywgY2FsbGVlRWRnZSwgYXJndW1l
bnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgICAgIGNhbGxlZUdQUiA9IHRhaWxDYWxs
ZWUtPmdwcigpOwogICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKLSAgICAgICAgICAgICAgICBj
YWxsZWUudXNlKCk7CisgICAgICAgICAgICAgICAgdGFpbENhbGxlZS0+dXNlKCk7CiAKKyAgICAg
ICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2Nh
dGVkQXJncyk7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9
IGFyZ3VtZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKICAgICAgICAgICAgIHNodWZmbGVEYXRh
LnRhZ1R5cGVOdW1iZXIgPSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXI7CiAgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJD
b3VudCgpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6
aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOwpAQCAtODY0LDcgKzg4NCw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5hcmdzW2ldID0gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7
CiAKICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2pp
dC5jb2RlQmxvY2soKSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAobm9k
ZS0+b3AoKSA9PSBDYWxsRXZhbCkgeworICAgICAgICAgICAgLy8gQ2FsbEV2YWwgaXMgaGFuZGxl
ZCB3aXRoIHRoZSBhcmd1bWVudHMgaW4gdGhlIHN0YWNrCiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBp
bGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7
IGkrKykgewpAQCAtODc1LDIyICs4OTYsNjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoYXJnR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
dW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKQogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpJVENvbXBpbGVyOjpjYWxs
ZWVBcmd1bWVudFNsb3QoaSkpOworCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2pp
dCwgVk06OkNhbGxFdmFsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGktLSA+IDA7KSB7CisgICAgICAgICAgICAgICAgR1BS
UmVnIHBsYXRmb3JtQXJnR1BSID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
aSk7CisgICAgICAgICAgICAgICAgRWRnZSBhcmdFZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFy
Z0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIDEgKyBpXTsKKyAgICAgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcodGhpcywgYXJnRWRnZSwgcGxhdGZvcm1BcmdHUFIpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBhcmdHUFIgPSBhcmcuZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGFyZ0dQUiA9PSBwbGF0Zm9ybUFyZ0dQUiB8fCBwbGF0Zm9ybUFyZ0dQUiA9PSBJbnZhbGlk
R1BSUmVnKTsKKworICAgICAgICAgICAgICAgIC8vIE9ubHkgZnJlZSB0aGUgbm9uLWFyZ3VtZW50
IHJlZ2lzdGVycyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUFy
Z0dQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgICAgIHVzZShhcmdFZGdl
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChhcmdHUFIsIEpJVENvbXBpbGVy
OjpjYWxsZWVBcmd1bWVudFNsb3QoaSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVXNlIHRoZSBhcmd1bWVudCBlZGdlcyBmb3IgYXJndW1lbnRz
IHBhc3NlZCBpbiByZWdpc3RlcnMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1Q
YXNzZWRBcmdzOyBpLS0gPiAwOykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBhcmdHUFIgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoYXJnR1BSICE9IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgRWRnZSBh
cmdFZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQo
KSArIDEgKyBpXTsKKyAgICAgICAgICAgICAgICAgICAgdXNlKGFyZ0VkZ2UpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVn
IGFyZ0NvdW50R1BSID0gYWxsb2NhdGUoYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQo
KSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwg
YXJnQ291bnRHUFIpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMihhcmdDb3VudEdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1l
UGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworI2VuZGlmCisgICAg
ICAgICAgICBhcmd1bWVudHNMb2NhdGlvbiA9IGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFsbG9j
YXRlZEFyZ3MpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdz
OyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHBs
YXRmb3JtQXJnR1BSID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7CisK
KyAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
SklUQ29tcGlsZXI6OmNhbGxlZUFyZ3VtZW50U2xvdChpKSk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpLCBhbGxvY2F0ZShwbGF0Zm9ybUFyZ0dQUikpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFy
YXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxl
ZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMs
IGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxl
ZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVlLnVzZSgpOwotICAgICAgICBtX2pp
dC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAg
ICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKQorI2VuZGlmCisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xv
dChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIH0KIAorICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MgJiYgIWlzVGFp
bCkKKyAgICAgICAgdW5sb2NrQXJndW1lbnRSZWdpc3RlcnMoKTsKKwogICAgIENvZGVPcmlnaW4g
c3RhdGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIEFTU0VSVCghaXNUYWls
IHx8ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lIHx8ICFzdGF0aWNPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKTsKICAgICBBU1NFUlQoIWlz
RW11bGF0ZWRUYWlsIHx8IChzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICYmIHN0YXRpY09y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkpKTsKQEAg
LTkxMyw3ICs5ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgfTsKICAgICAKICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNv
ZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bChjYWxsVHlwZSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVHUFIpOwor
ICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNMb2NhdGlvbiwg
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVHUFIpOwogCiAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBjYWxsIG9wZXJh
dGlvbkNhbGxFdmFsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSB0aGUgcGFyYW1ldGVy
IGFyZWEgaW4KQEAgLTk1NiwxNyArMTAyNCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpQ
YXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgpOworCisg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEZyYW1lU2h1ZmZs
ZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIobV9qaXQs
IHNodWZmbGVEYXRhKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQubmVhclRhaWxDYWxsKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBzbG93UGF0aCA9IG1f
aml0LmxhYmVsKCk7CiAgICAgICAgICAgICBwYXRjaGFibGVKdW1wLm1fanVtcC5saW5rVG8oc2xv
d1BhdGgsICZtX2ppdCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkxpbmtEaXJlY3RDYWxsLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUik7CiAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwpAQCAtOTc4LDI3ICsx
MDQ5LDMyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAg
ICAgICAgIG1faml0LmFkZEpTRGlyZWN0VGFpbENhbGwocGF0Y2hhYmxlSnVtcCwgY2FsbCwgc2xv
d1BhdGgsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFi
ZWwoKTsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGly
ZWN0Q2FsbCk7CisKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0
ZSk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQubmVh
ckNhbGwoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
LSAgICAgICAgCisKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQu
bGFiZWwoKTsKKwogICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgIG1faml0LnBvcChK
SVRDb21waWxlcjo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpKTsKKyAgICAgICAgICAgIG1f
aml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKworICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBjYWxsZWVH
UFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBtX2ppdC5qdW1w
KCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5r
KCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7Ci0g
ICAgICAgIAotICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xvd1BhdGgsIGNh
bGxMaW5rSW5mbyk7CisKKyAgICAgICAgbV9qaXQuYWRkSlNEaXJlY3RDYWxsKGNhbGwsIHNsb3dD
YWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKQEAgLTEwMjUsMjMgKzExMDEsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZQogCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gVGFpbENhbGwpIHsKICAgICAgICAg
Q2FsbEZyYW1lU2h1ZmZsZXIgY2FsbEZyYW1lU2h1ZmZsZXIobV9qaXQsIHNodWZmbGVEYXRhKTsK
LSAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJl
Z3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0
YWNrQXJncykKKyAgICAgICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVS
ZWdzKEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSkpOwogICAgICAgICBj
YWxsRnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVl
ZHMgdG8gYmUgaW4gcmVnVDAKLQotICAgICAgICBpZiAoaXNUYWlsKQotICAgICAgICAgICAgbV9q
aXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRl
ciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKLSAgICB9CisgICAgfSBlbHNlIGlmIChpc1Rh
aWwpCisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5m
bzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKKyAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAogICAg
IEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwogCi0gICAgaWYgKGlzVGFpbCkKKyAgICBpZiAoaXNUYWlsKSB7Cisg
ICAgICAgIHRhaWxDYWxsZWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHVubG9ja0FyZ3VtZW50
UmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5G
cm9tVGFpbENhbGwpOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgc2V0UmVzdWx0QW5k
UmVzZXRTdGFjaygpOwogCiAgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwg
dGFyZ2V0VG9DaGVjaywgY2FsbExpbmtJbmZvKTsKQEAgLTQxNTQsMTggKzQyMjksNjEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRDYWxs
ZWU6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyNpZiBFTkFCTEUoU1RB
Q0tfRU5UUllfRklMTFNfQ0FMTEVFX1JFRykKKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZ1dpdGhW
YWx1ZSA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIAorICAgICAgICBpZiAoIW1fYmxvY2stPmlu
ZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlVmlydHVhbFJlZ2lzdGVy
ID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgICAgICBH
UFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGNhbGxlZVJlZykgJiYgbV9ncHJz
Lm5hbWUoY2FsbGVlUmVnKSA9PSBjYWxsZWVWaXJ0dWFsUmVnaXN0ZXIpCisgICAgICAgICAgICAg
ICAgY2FsbGVlUmVnV2l0aFZhbHVlID0gY2FsbGVlUmVnOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoY2FsbGVlUmVnV2l0aFZhbHVlID09IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9q
aXQubW92ZShjYWxsZWVSZWdXaXRoVmFsdWUsIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBt
X2dwcnMudW5sb2NrKGNhbGxlZVJlZ1dpdGhWYWx1ZSk7CisgICAgICAgICAgICBtX2dwcnMucmVs
ZWFzZShjYWxsZWVSZWdXaXRoVmFsdWUpOworICAgICAgICB9CisjZWxzZQogICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSks
IHJlc3VsdC5ncHIoKSk7CisjZW5kaWYKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyNpZiBFTkFCTEUoU1RBQ0tfRU5UUllfRklMTFNfQVJHQ09VTlRfUkVHKQorICAgICAg
ICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIAorICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnRDb3VudFZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVu
dENvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChhcmd1bWVudENvdW50UmVnKSAm
JiBtX2dwcnMubmFtZShhcmd1bWVudENvdW50UmVnKSA9PSBhcmd1bWVudENvdW50VmlydHVhbFJl
Z2lzdGVyKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPSBhcmd1
bWVudENvdW50UmVnOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXJndW1lbnRD
b3VudFJlZ1dpdGhWYWx1ZSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUsIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgICAgICBtX2dwcnMudW5sb2NrKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUpOworICAg
ICAgICAgICAgbV9ncHJzLnJlbGVhc2UoYXJndW1lbnRDb3VudFJlZ1dpdGhWYWx1ZSk7CisgICAg
ICAgIH0KKyNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyNlbmRpZgog
ICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRSZXN0TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVK
SVQoSklUQ29tcGlsCiAgICAgLCBtX2xhc3RHZW5lcmF0ZWROb2RlKExhc3ROb2RlVHlwZSkKICAg
ICAsIG1faW5kZXhJbkJsb2NrKDApCiAgICAgLCBtX2dlbmVyYXRpb25JbmZvKG1faml0LmdyYXBo
KCkuZnJhbWVSZWdpc3RlckNvdW50KCkpCisgICAgLCBtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm8o
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlICsgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cykKICAgICAsIG1fc3RhdGUobV9qaXQuZ3JhcGgoKSkKICAgICAsIG1faW50ZXJwcmV0ZXIobV9q
aXQuZ3JhcGgoKSwgbV9zdGF0ZSkKICAgICAsIG1fc3RyZWFtKCZqaXQuaml0Q29kZSgpLT52YXJp
YWJsZUV2ZW50U3RyZWFtKQpAQCAtNDA3LDYgKzQwOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNsZWFyR2VuZXJhdGlvbkluZm8KIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9n
ZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tpXSA9
IEdlbmVyYXRpb25JbmZvKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1l
bnRHZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hcmd1bWVudEdlbmVyYXRp
b25JbmZvW2ldID0gR2VuZXJhdGlvbkluZm8oKTsKICAgICBtX2dwcnMgPSBSZWdpc3RlckJhbms8
R1BSSW5mbz4oKTsKICAgICBtX2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKIH0KQEAg
LTExOTksNiArMTIwMiwyNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhE
YXRhCiAgICAgcmV0dXJuIHN0cmluZ3NbZm9ybWF0XTsKIH0KIAorc3RhdGljIHZvaWQgZHVtcFJl
Z2lzdGVySW5mbyhHZW5lcmF0aW9uSW5mbyYgaW5mbywgdW5zaWduZWQgaW5kZXgpCit7CisgICAg
aWYgKGluZm8uYWxpdmUoKSkKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpbmRl
eCwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3Ry
aW5nKGluZm8uc3BpbGxGb3JtYXQoKSkpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZ0YoIiAg
ICAlIDNkOltfX11bX19dIiwgaW5kZXgpOworICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdERvdWJsZSkKKyAgICAgICAgZGF0YUxvZ0YoIjpmcHIlZFxuIiwgaW5mby5m
cHIoKSk7CisgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRO
b25lCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkgJiBEYXRhRm9ybWF0SlMpCisjZW5kaWYKKyAgICAgICAgKSB7CisgICAgICAgIEFTU0VS
VChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBkYXRhTG9nRigiOiVzXG4i
LCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOworICAgIH0gZWxzZQorICAgICAgICBk
YXRhTG9nRigiXG4iKTsKKyAgICAKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZHVtcChjb25z
dCBjaGFyKiBsYWJlbCkKIHsKICAgICBpZiAobGFiZWwpCkBAIC0xMjA4LDI1ICsxMjMxLDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hhciogbGEKICAgICBtX2dwcnMuZHVt
cCgpOwogICAgIGRhdGFMb2dGKCIgIGZwcnM6XG4iKTsKICAgICBtX2ZwcnMuZHVtcCgpOwotICAg
IGRhdGFMb2dGKCIgIFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkgewotICAgICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9baV07Ci0gICAgICAgIGlmIChpbmZvLmFs
aXZlKCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgICUgM2Q6JXMlcyIsIGksIGRhdGFGb3Jt
YXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNw
aWxsRm9ybWF0KCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAl
IDNkOltfX11bX19dIiwgaSk7Ci0gICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdERvdWJsZSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGluZm8u
ZnByKCkpOwotICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZv
cm1hdE5vbmUKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgJiYgIShpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCi0jZW5kaWYKLSAgICAgICAgICAgICkgewot
ICAgICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgIH0KKworICAg
IGRhdGFMb2dGKCIgIEFyZ3VtZW50IFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpKQor
ICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSwgaSk7
CisKKyAgICBkYXRhTG9nRigiICBMb2NhbCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAg
ICAgIGR1bXBSZWdpc3RlckluZm8obV9nZW5lcmF0aW9uSW5mb1tpXSwgaSk7CisKICAgICBpZiAo
bGFiZWwpCiAgICAgICAgIGRhdGFMb2dGKCI8LyVzPlxuIiwgbGFiZWwpOwogfQpAQCAtMTY3Nyw2
ICsxNjkwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAg
IAogICAgIG1faml0LmJsb2NrSGVhZHMoKVttX2Jsb2NrLT5pbmRleF0gPSBtX2ppdC5sYWJlbCgp
OwogCisgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAgICAgICAgY2hlY2tBcmd1bWVudFR5cGVz
KCk7CisKICAgICBpZiAoIW1fYmxvY2stPmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkgewog
ICAgICAgICAvLyBEb24ndCBnZW5lcmF0ZSBjb2RlIGZvciBiYXNpYyBibG9ja3MgdGhhdCBhcmUg
dW5yZWFjaGFibGUgYWNjb3JkaW5nIHRvIENGQS4KICAgICAgICAgLy8gQnV0IHRvIGJlIHN1cmUg
dGhhdCBub2JvZHkgaGFzIGdlbmVyYXRlZCBhIGp1bXAgdG8gdGhpcyBibG9jaywgZHJvcCBpbiBh
CkBAIC0xNjg3LDE1ICsxNzAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJy
ZW50QmxvY2sKIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVz
ZXQoKSk7CiAgICAgCisgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAgICAgICAgc2V0dXBBcmd1
bWVudFJlZ2lzdGVyc0ZvckVudHJ5KCk7CisgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFs
aWRDYWxsRnJhbWUoKTsKICAgICBtX2ppdC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOwogICAgIG1f
aml0LmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCk7CiAKICAgICBtX3N0YXRlLnJlc2V0KCk7
CiAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2sobV9ibG9jayk7Ci0gICAgCisKICAgICBmb3Ig
KHNpemVfdCBpID0gbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemUoKTsgaS0tOykgewogICAg
ICAgICBpbnQgb3BlcmFuZCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kRm9ySW5k
ZXgoaSk7CisgICAgICAgIGlmICghbV9ibG9jay0+aW5kZXggJiYgb3BlcmFuZElzQXJndW1lbnQo
b3BlcmFuZCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50ID0gbV9ibG9jay0+dmFy
aWFibGVzQXRIZWFkLmFyZ3VtZW50Rm9ySW5kZXgoaSk7CisgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRd
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYXJndW1lbnROb2RlICYmIGFyZ3VtZW50
Tm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFhcmd1bWVudE5vZGUtPnJlZkNvdW50KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIEdldEFyZ3VtZW50UmVnaXN0ZXJzJ3MuCisgICAg
ICAgICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZygKKyAgICAgICAgICAgICAgICAgICAg
VmFyaWFibGVFdmVudDo6bW92SGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlmaWVk
SUQoYXJndW1lbnROb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Tm9kZS0+
bG9jYWwoKSkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZFtp
XTsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgY29udGludWU7IC8vIE5vIG5lZWQg
dG8gcmVjb3JkIGRlYWQgU2V0TG9jYWwncy4KQEAgLTE3ODIsMTMgKzE4MTYsMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9y
aWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0g
ICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAg
ICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldOwog
ICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFk
LiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50CisgICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5jaGls
ZDEoKS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgfHwgbm9kZS0+
b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPnNob3Vs
ZEdlbmVyYXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0xNzk5LDIzICsxODM1LDQ0
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgCiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPmxvY2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7Ci0gICAg
ICAgIAorICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlOworCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXIgPSBJbnZhbGlkR1BSUmVnOzsK
KworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAgICAgICAgICAgIHZhbHVlU291cmNl
ID0gSlNWYWx1ZVNvdXJjZShhcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlCisjZW5k
aWYKKyNlbmRpZgorICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOworCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6
IHsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgYXJndW1lbnRSZWdpc3Rl
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50UmVnaXN0ZXIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXIsIHRl
bXAuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsK
ICAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKQEAgLTE4NDYsMTAgKzE5MDMsNTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbigpOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKQoreworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBCYXNpY0Jsb2Nr
KiBmaXJzdEJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jaygwKTsKKworICAgIGZvciAoc2l6ZV90
IGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGZpcnN0QmxvY2stPnNpemUoKTsgKytp
bmRleEluQmxvY2spIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGZpcnN0QmxvY2stPmF0KGluZGV4
SW5CbG9jayk7CisKKyAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rl
cikgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUt
PnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBn
ZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZyA9IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihu
b2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEFTU0VSVChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgQVNTRVJUKCFtX2dwcnMuaXNMb2NrZWQoYXJndW1lbnRSZWcpKTsKKyAgICAgICAg
ICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50UmVnKTsKKyAgICAgICAgICAgIG1f
Z3Bycy5yZXRhaW4oYXJndW1lbnRSZWcsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsK
KyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5y
ZWZDb3VudCgpLCBhcmd1bWVudFJlZywgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIGluZm8u
bm90aWNlT1NSQmlydGgoKm1fc3RyZWFtLCBub2RlLCB2aXJ0dWFsUmVnaXN0ZXIpOworI2lmIEVO
QUJMRShTVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHKQorICAgICAgICB9IGVsc2UgaWYgKG5v
ZGUtPm9wKCkgPT0gR2V0Q2FsbGVlKSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7Cisg
ICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgR1BSUmVnIGNhbGxlZVJl
ZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgICAgICAgICAgQVNTRVJUKCFt
X2dwcnMuaXNMb2NrZWQoY2FsbGVlUmVnKSk7CisgICAgICAgICAgICBtX2dwcnMuYWxsb2NhdGVT
cGVjaWZpYyhjYWxsZWVSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihjYWxsZWVSZWcs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFy
Z3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBjYWxsZWVSZWcsIERh
dGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpbmZvLm5vdGljZU9TUkJpcnRoKCptX3N0cmVhbSwg
bm9kZSwgdmlydHVhbFJlZ2lzdGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTVEFDS19FTlRSWV9G
SUxMU19BUkdDT1VOVF9SRUcpCisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJS
ZWcgYXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3Vt
ZW50Q291bnRSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3Vt
ZW50Q291bnRSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudENvdW50UmVn
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2VyKTsKKyAgICAgICAgICAgIGluZm8u
aW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVu
dENvdW50UmVnLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JC
aXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdpc3Rlcik7CisjZW5kaWYKKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZgorfQorCiBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKCkKIHsK
LSAgICBjaGVja0FyZ3VtZW50VHlwZXMoKTsKLSAgICAKICAgICBBU1NFUlQoIW1fY3VycmVudE5v
ZGUpOwogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1f
aml0LmdyYXBoKCkubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICBtX2ppdC5z
ZXRGb3JCbG9ja0luZGV4KGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlKTsKKyAgICBHUFJSZWcgZmlsbEpTVmFsdWUo
RWRnZSwgR1BSUmVnIGdwclRvVXNlID0gSW52YWxpZEdQUlJlZyk7CiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgIGJvb2wgZmlsbEpTVmFsdWUoRWRnZSwgR1BSUmVnJiwgR1BSUmVnJiwgRlBS
UmVnJik7CiAjZW5kaWYKQEAgLTIwMCw3ICsyMDAsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShE
RkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQogICAgICAgICBtX2ppdC5hZGRSZWdp
c3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5kZWJ1Z09mZnNldCgpKTsKICNlbmRpZgotICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNw
ZWNpZmljKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWU7CisgICAgICAgIGlmIChz
cGVjaWZpYyA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgc3BlY2lmaWMgPSBtX2dwcnMu
YWxsb2NhdGUoc3BpbGxNZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwaWxsTWUgPSBt
X2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhzcGVjaWZpYyk7CisKICAgICAgICAgaWYgKHNwaWxsTWUu
aXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHNwaWxsTWUp
OwpAQCAtMzE1LDYgKzMyMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2hlY2tBcmd1bWVudFR5
cGVzKCk7CiAKKyAgICB2b2lkIHNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworCiAg
ICAgdm9pZCBjbGVhckdlbmVyYXRpb25JbmZvKCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyAndW5leHBlY3RlZCcKQEAgLTQ4NSw2ICs0OTIsOSBAQCBw
dWJsaWM6CiAgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIgdG8gdGhlIEpTU3RhY2suCiAg
ICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkKICAgICB7CisgICAgICAgIGlm
IChzcGlsbE1lLmlzQXJndW1lbnQoKSAmJiBtX2Jsb2NrLT5pbmRleCA+IDApCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5m
b0Zyb21WaXJ0dWFsUmVnaXN0ZXIoc3BpbGxNZSk7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpA
QCAtNjEzLDYgKzYyMywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAorICAgIHZvaWQgdW5sb2NrQXJndW1lbnRSZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCByZWdJbmRleCA9IDA7IHJlZ0luZGV4IDwgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUzsgcmVnSW5kZXgrKykgeworICAgICAgICAgICAgR1BSUmVnIGFyZ1JlZ2lzdGVyID0g
YXJndW1lbnRSZWdpc3RlckZvcihyZWdJbmRleCk7CisgICAgICAgICAgICBpZiAobV9ncHJzLmlz
TG9ja2VkKGFyZ1JlZ2lzdGVyKSkKKyAgICAgICAgICAgICAgICBtX2dwcnMudW5sb2NrKGFyZ1Jl
Z2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyOjpJbW02NCB2YWx1ZU9mSlNDb25zdGFudEFzSW1tNjQoTm9kZSog
bm9kZSkKICAgICB7CkBAIC0yODcyLDcgKzI4OTEsMTAgQEAgcHVibGljOgogCiAgICAgR2VuZXJh
dGlvbkluZm8mIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbklu
Zm9bdmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0
ZXIuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVh
bFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNB
cmd1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1t2aXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0KCldOwogICAgIH0KICAgICAKICAgICBHZW5lcmF0aW9uSW5mbyYg
Z2VuZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKQEAgLTI4OTUsNiArMjkxNyw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICAvLyBWaXJ0dWFsIGFuZCBwaHlzaWNh
bCByZWdpc3RlciBtYXBzLgogICAgIFZlY3RvcjxHZW5lcmF0aW9uSW5mbywgMzI+IG1fZ2VuZXJh
dGlvbkluZm87CisgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZvLCA4PiBtX2FyZ3VtZW50R2VuZXJh
dGlvbkluZm87CiAgICAgUmVnaXN0ZXJCYW5rPEdQUkluZm8+IG1fZ3ByczsKICAgICBSZWdpc3Rl
ckJhbms8RlBSSW5mbz4gbV9mcHJzOwogCkBAIC0yOTkzLDYgKzMwMTYsMjAgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNpdCBKU1ZhbHVl
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIEdQUlJlZyByZWdUb1VzZSkK
KyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwg
bV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2pp
dCk7CisgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KGppdC0+aXNGaWxsZWQobm9kZSgpKSB8fCByZWdUb1VzZSAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgZ3ByVXNlU3BlY2lmaWMocmVnVG9Vc2UpOworICAgIH0KKyNlbmRpZgorICAgIAog
ICAgIH5KU1ZhbHVlT3BlcmFuZCgpCiAgICAgewogICAgICAgICBpZiAoIW1fZWRnZSkKQEAgLTMw
MjksNiArMzA2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1f
aml0LT5maWxsSlNWYWx1ZShtX2VkZ2UpOwogICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7
CiAgICAgfQorICAgIEdQUlJlZyBncHJVc2VTcGVjaWZpYyhHUFJSZWcgcmVnVG9Vc2UpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSwgcmVnVG9Vc2Up
OworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQogICAgIEpTVmFsdWVSZWdz
IGpzVmFsdWVSZWdzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3Niw2ICsyNzYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwg
PSBudWxscHRyOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gbV9ub2RlLT5s
b2NhbCgpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobG9jYWwuaXNBcmd1bWVudCgp
ICYmIG1fZ3JhcGgubV9zdHJlbmd0aFJlZHVjZUFyZ3VtZW50cyAhPSBPcHRpbWl6ZUFyZ3VtZW50
Rmx1c2hlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9ub2RlSW5kZXg7IGktLTspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ibG9jay0+YXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0
TG9jYWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2NhbCkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTUgKzEz
MCwzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyCiAgICAgaml0
LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGlt
ZXNFaWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRp
Y19jYXN0PGludHB0cl90PihzaXplb2YoaW50MzJfdCkpKSk7CiAgICAgaml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4o
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkpLmxpbmtUbyhsb29wLCAmaml0KTsK
ICAgICAKLSAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJ
bmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7CisgICAgaml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9mZnNldE9mVGFyZ2V0UEMpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpub25BcmdHUFIwLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigxMDAwKSkpKTsKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29u
YWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgLy8gTG9hZCBh
cmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIGFy
Z3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJn
dW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQubG9hZDMyKEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJnQ291
bnRSZWcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lTG9hZGluZ0Fy
Z3M7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAg
ICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4KSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rp
b25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGRvbmVMb2FkaW5nQXJncy5saW5rKCZq
aXQpOworI2VuZGlmCisgICAgCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpOwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVj
a1JlZ2lzdGVycygpOwogCi0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5q
dW1wKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsICgiREZHIE9TUiBlbnRyeSB0aHVuayIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAg
KzQ3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHJ1bigpCiAgICAgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX2dyYXBoLm1fcGxhbi5tb2RlID09IERGR01vZGUpOwotICAgICAgICAKKwogICAg
ICAgICBpZiAoIU9wdGlvbnM6OnVzZUZUTEpJVCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKKwogICAgICAgICBpZiAobV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fZGlk
RmFpbEZUTENvbXBpbGF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFZBTElE
QVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5hcmd1bWVudChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgYmxvY2spLCAhYmxvY2stPnZhcmlhYmxlc0F0
VGFpbC5hcmd1bWVudChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpLT5h
Y2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBnZXRMb2NhbFBvc2l0aW9ucy5hcmd1bWVudChpKSA9IG5vdFNldDsKICAgICAgICAgICAgICAg
ICBzZXRMb2NhbFBvc2l0aW9ucy5hcmd1bWVudChpKSA9IG5vdFNldDsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2
ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDgg
KzEzMywxMyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIGlm
ICghaW5kZXgpIHsKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzID0gT3BlcmFuZHM8VmFsdWVSZWNv
dmVyeT4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJ
bkpTU3RhY2soCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmll
cy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgaWYgKGkg
PCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAg
ICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpLCBEYXRh
Rm9ybWF0SlMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJl
Y292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVJlY292ZXJpZXMub3BlcmFuZEZvcklu
ZGV4KGkpKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTYxLDYgKzE2NiwxMyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRT
dHJlYW06OnJlY29uc3RydWN0KAogICAgICAgICAgICAgTWluaWZpZWRHZW5lcmF0aW9uSW5mbyBp
bmZvOwogICAgICAgICAgICAgaW5mby51cGRhdGUoZXZlbnQpOwogICAgICAgICAgICAgZ2VuZXJh
dGlvbkluZm9zLmFkZChldmVudC5pZCgpLCBpbmZvKTsKKyAgICAgICAgICAgIE1pbmlmaWVkTm9k
ZSogbm9kZSA9IGdyYXBoLmF0KGV2ZW50LmlkKCkpOworICAgICAgICAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByID0gZXZlbnQuZ3ByKCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnQgPSBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lz
dGVyKGdwcik7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50UmVnID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgIG9w
ZXJhbmRTb3VyY2VzLnNldE9wZXJhbmQoYXJndW1lbnRSZWcsIFZhbHVlU291cmNlKGV2ZW50Lmlk
KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRmlsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMzMgQEAg
cHVibGljOgogICAgICAgICA6IFBoYXNlKGdyYXBoLCAidmlydHVhbCByZWdpc3RlciBhbGxvY2F0
aW9uIikKICAgICB7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBhbGxvY2F0ZVJlZ2lzdGVyKFNj
b3JlQm9hcmQmIHNjb3JlQm9hcmQsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBGaXJz
dCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJlbiwgdGhlbgor
ICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBk
byBzbyBpbiB0aGlzCisgICAgICAgIC8vIG9yZGVyIHNvIHRoYXQgaWYgYSBjaGlsZCBpcyBvbiBp
dHMgbGFzdCB1c2UsIGFuZCBhCisgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwg
dGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgorICAgICAgICBpZiAobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5v
ZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUt
PmNoaWxkMygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKKyAgICAgICAgbm9kZS0+c2V0VmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIC8vICdtdXN0R2VuZXJhdGUnIG5v
ZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5IGVsZXZhdGVkLAorICAgICAgICAv
LyBjYWxsIHVzZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAgICAgICAgaWYgKG5vZGUtPm11
c3RHZW5lcmF0ZSgpKQorICAgICAgICAgICAgc2NvcmVCb2FyZC51c2Uobm9kZSk7CisgICAgfQor
CiAgICAgYm9vbCBydW4oKQogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxs
cHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CkBAIC01OSw2ICs4NSwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXNhZ2Ugb2YgaGlnaGVzdC1udW1iZXJl
ZCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnNvcnRGcmVl
KCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBHZXRBcmd1bWVudFJl
Z2lzdGVyIE5vZGVzIGZpcnN0IGFzIHRoZSByZWdpc3RlciBpcyBhbGl2ZSBvbiBlbnRyeQorICAg
ICAgICAgICAgLy8gdG8gdGhlIGZ1bmN0aW9uIGFuZCBtYXkgbmVlZCB0byBiZSBzcGlsbGVkIGJl
Zm9yZSBhbnkgdXNlLgorICAgICAgICAgICAgaWYgKCFibG9ja0luZGV4KSB7CisgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2st
PnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAg
YWxsb2NhdGVSZWdpc3RlcihzY29yZUJvYXJkLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9IDA7
IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAK
QEAgLTczLDMyICsxMTAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9j
YWw6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+Y2hpbGQxKCktPmhhc1Jlc3Vs
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRmlyc3QsIGNhbGwgdXNlIG9uIGFsbCBv
ZiB0aGUgY3VycmVudCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KLSAgICAgICAgICAgICAgICAvLyBh
bGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBzbyBpbiB0aGlz
Ci0gICAgICAgICAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBs
YXN0IHVzZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAvLyBWaXJ0dWFsUmVnaXN0ZXIgaXMgZnJl
ZWQsIHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4KLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hp
bGQyKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5v
ZGUtPmNoaWxkMygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IW5vZGUtPmhhc1Jlc3VsdCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJk
LmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0VmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMg
aGF2ZSB0aGVpciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCi0gICAgICAgICAgICAg
ICAgLy8gY2FsbCB1c2Ugbm93IHRvIGFjY291bnQgZm9yIHRoaXMuCi0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPm11c3RHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJk
LnVzZShub2RlKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQs
IG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2NvcmVCb2FyZC5hc3NlcnRDbGVh
cigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEs
NyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBHZXRDYWxsZWU6Cisg
ICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw4IEBAIEpJVENvZGU6On5KSVRDb2RlKCkKICAgICAgICAgZGF0
YUxvZygiRGVzdHJveWluZyBGVEwgSklUIGNvZGUgYXQgIik7CiAgICAgICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKICAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9iM0NvZGUpOwotICAgICAgICBkYXRh
TG9nKGNvbW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgZGF0YUxvZyhjb21t
YSwgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQpOworICAgICAgICBk
YXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeVBvaW50KTsKICAgICAg
ICAgZGF0YUxvZygiXG4iKTsKICAgICB9CiB9CkBAIC02MCwzMSArNjEsMzAgQEAgdm9pZCBKSVRD
b2RlOjppbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZAogICAgIG1fYjNCeXByb2R1Y3RzID0gV1RG
TW92ZShieXByb2R1Y3RzKTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0Zv
ckNhbGwoQ29kZVB0ciBhZGRyZXNzKQordm9pZCBKSVRDb2RlOjppbml0aWFsaXplRW50cnlwb2lu
dFRodW5rKENvZGVSZWYgZW50cnlwb2ludFRodW5rKQogewotICAgIG1fYWRkcmVzc0ZvckNhbGwg
PSBhZGRyZXNzOworICAgIG1fZW50cnlwb2ludFRodW5rID0gZW50cnlwb2ludFRodW5rOwogfQog
Ci12b2lkIEpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludChDb2RlUmVmIGVu
dHJ5cG9pbnQpCit2b2lkIEpJVENvZGU6OnNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUs
IENvZGVQdHIgZW50cnkpCiB7Ci0gICAgbV9hcml0eUNoZWNrRW50cnlwb2ludCA9IGVudHJ5cG9p
bnQ7CisgICAgbV9lbnRyeXBvaW50cy5zZXRFbnRyeUZvcih0eXBlLCBlbnRyeSk7CiB9Ci0KLUpJ
VENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJp
dHlDaGVjaykKKyAgICAKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwo
RW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogewotICAgIHN3aXRjaCAoYXJpdHlDaGVjaykgewot
ICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICByZXR1cm4gbV9hZGRyZXNz
Rm9yQ2FsbDsKLSAgICBjYXNlIE11c3RDaGVja0FyaXR5OgotICAgICAgICByZXR1cm4gbV9hcml0
eUNoZWNrRW50cnlwb2ludC5jb2RlKCk7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIENvZGVQdHIoKTsKKyAgICBDb2RlUHRyIGVudHJ5ID0gbV9l
bnRyeXBvaW50cy5lbnRyeUZvcihlbnRyeVR5cGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5
KTsKKyAgICByZXR1cm4gZW50cnk7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5
Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZWxzZQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0Owor
I2VuZGlmCiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CiAgICAgfkpJVENv
ZGUoKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJy
aWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRl
OwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVy
cmlkZTsKICAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJy
aWRlOwpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVCM0Nv
ZGUoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZDo6dW5pcXVl
X3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4pOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFkZHJlc3NG
b3JDYWxsKENvZGVQdHIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50
KENvZGVSZWYpOwotICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2Rl
UmVmKTsKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlLCBDb2RlUHRyKTsKKwog
ICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgb3Zl
cnJpZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0
aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsK
QEAgLTc3LDcgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxs
OwogICAgIENvZGVSZWYgbV9iM0NvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVC
eXByb2R1Y3RzPiBtX2IzQnlwcm9kdWN0czsKLSAgICBDb2RlUmVmIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQ7CisgICAgQ29kZVJlZiBtX2VudHJ5cG9pbnRUaHVuazsKKyAgICBKSVRFbnRyeVBvaW50
cyBtX2VudHJ5cG9pbnRzOworICAgIENvZGVQdHIgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJh
QXJnc0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRy
eVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NBcml0eU9LRW50cnlQb2ludDsKKyAgICBD
b2RlUHRyIG1fc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5cG9pbnQ7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZp
bmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgZHVt
cERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIEIzIGNv
ZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxv
Y2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsKIAotICAgIGppdENvZGUtPmluaXRpYWxp
emVBcml0eUNoZWNrRW50cnlwb2ludCgKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplRW50cnlwb2lu
dFRodW5rKAogICAgICAgICBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICAgICAgZHVtcERpc2Fz
c2VtYmx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBv
aW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkp
LmRhdGEoKSwgZnVuY3Rpb24pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDExMCBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgIAogICAgIHN3aXRjaCAoZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAg
ICBjYXNlIEZUTE1vZGU6IHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0
aEp1bXBzOwotICAgIAotICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgZnJhbWUud2l0
aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
Ci0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1haW5QYXRoSnVtcHMuYXBw
ZW5kKGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFs
LCBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoOworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHRvTWFpblBhdGg7CisKKyAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
CisgICAgICAgIHVuc2lnbmVkIG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKG51
bVBhcmFtZXRlcnMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOwor
CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCByZWdpc3RlckFyZ3VtZW50
c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKyAx
XTsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdp
c3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMgLSAxOyBhcmdJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleC0t
KSB7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRl
eCArIDFdID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVu
dFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEpOworICAgICAgICAgICAgdG9N
YWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9Bcml0eUZpeHVwOworICAgICAgICAKKyAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkgPSBqaXQubGFiZWwo
KTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6U3RhY2tBcmdzQXJpdHkpOwor
ICAgICAgICBqaXQubG9hZDMyKGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGNv
bnRpbnVlVG9Bcml0eUZpeHVwLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkJlbG93LCBHUFJJbmZvOjpyZWdUMSwKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRF
UlMpCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjb250aW51ZVRvU3RhY2tBcml0eU9rID0g
aml0Lmp1bXAoKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzdGFja0FyZ3NBcml0eU9LRW50cnkgPSBqaXQubGFiZWwoKTsKKworICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUoVk1fQ09V
TlRFUlMpCisgICAgICAgIGNvbnRpbnVlVG9TdGFja0FyaXR5T2subGluaygmaml0KTsKKyNlbmRp
ZgorCisgICAgICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0
ZXJzCisjaWYgMSAvLyBFTkFCTEUoU1RBQ0tfRU5UUllfRklMTFNfQ0FMTEVFX1JFRykKKyAgICAg
ICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworI2VuZGlmCisjaWYg
MSAgLy8gRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRykKKyAgICAgICAgaml0
LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkp
OworI2VuZGlmCisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsg
YXJnSW5kZXggPCBtYXhSZWdpc3RlckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAg
ICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0lu
ZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAg
ICAgICAKKyAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIAor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSA9
IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdz
QXJpdHkpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29udGludWVUb1JlZ2lz
dGVyQXJpdHlGaXh1cDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBjaGVja0ZvckV4dHJh
UmVnaXN0ZXJBcmd1bWVudHM7CisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpF
cXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKSk7CisgICAgICAgICAgICBjb250aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChq
aXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCZWxvdywgYXJnQ291
bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisgICAg
ICAgICAgICAvLyAgRmFsbCB0aHJvdWdoIHRvIHRoZSAiZXh0cmEgcmVnaXN0ZXIgYXJpdHkiIGNh
c2UuCisKKyAgICAgICAgICAgIGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cyA9IGppdC5s
YWJlbCgpOworICAgICAgICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50
cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ0luZGV4ID0gbnVtUGFyYW1ldGVyczsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICAg
ICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QmVsb3dPckVx
dWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7
CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJv
bG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJ
bmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRo
LmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1Q
YXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250aW51
ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChqaXQuanVtcCgpKTsKKyNlbmRpZgorCisgICAg
ICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAgICAgLy8gIFRoZXJlIHNob3Vs
ZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gaml0LmxhYmVsKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJ
bmRleCA8IG51bVBhcmFtZXRlcnMgJiYgYXJnSW5kZXggPD0gbWF4UmVnaXN0ZXJBcmd1bWVudENv
dW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlw
b2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAgICAg
ICAgfQorCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpSZWdBcmdzQXJpdHkpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmxpbmsoJmppdCk7CisKKyAgICAgICAgaml0LnNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUobWF4UmVnaXN0ZXJBcmd1bWVu
dENvdW50KTsKKworICAgICAgICBjb250aW51ZVRvQXJpdHlGaXh1cC5saW5rKCZqaXQpOworCisg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7CisK
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAg
ICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJh
bWUpOwpAQCAtMTU1LDExICsyNTEsMjAgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIAogICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1haW5Q
YXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFp
blBhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsQXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7CiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBz
LmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5kQ29udGludWVN
YWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENv
bnRpbnVlTWFpblBhdGgubGlua1RvKHN0YWNrQXJnc0FyaXR5T0tFbnRyeSwgJmppdCk7CisKKyNp
ZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0
ZXJFbnRyeU5vQXJpdHkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigm
aml0LCBWTTo6UmVnQXJnc05vQXJpdHkpOworICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQu
anVtcCgpKTsKKyNlbmRpZgogCiAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKQEAgLTE2OSw5
ICsyNzQsMzUgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRp
b25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwogICAgICAg
ICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKICAgICAgICAgbGlu
a0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENUSVN0dWIo
YXJpdHlGaXh1cEdlbmVyYXRvcikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAg
ICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wcywgQ29kZUxvY2F0aW9uTGFiZWwoYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKKyAgICAgICAgbGlu
a0J1ZmZlci0+bGluayh0b01haW5QYXRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOworCisgICAgICAgIHN0YXRlLmppdENv
ZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkpOworICAgICAgICBzdGF0ZS5qaXRDb2Rl
LT5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2Yoc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CiAKLSAgICAgICAgc3RhdGUuaml0
Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeSA9IGxp
bmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeU5vQXJpdHkpOworI2Vsc2UKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeSA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSk7CisjZW5kaWYK
KyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkLCBtYWluRW50cnkpOworCisgICAgICAgIGlmIChjaGVja0ZvckV4dHJhUmVn
aXN0ZXJBcmd1bWVudHMuaXNTZXQoKSkKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVu
dHJ5Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlv
bk9mKGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cykpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQb3NzaWJsZUV4
dHJhQXJncywgbWFpbkVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHN0YXRl
LmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSkpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgYXJnQ291bnQgPSAxOyBhcmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdDb3VudCsrKSB7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVt
UGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBlbnRyeSA9IG1haW5FbnRyeTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdLmlzU2V0
KCkpCisgICAgICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lz
dGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5KTsKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9y
KEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoYXJnQ291
bnQpLCBlbnRyeSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
QEAgLTE4MSw3ICszMTIsMjEgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgLy8g
cG9pbnQgd2UndmUgZXZlbiBkb25lIHRoZSBzdGFjayBjaGVjay4gQmFzaWNhbGx5IHdlIGp1c3Qg
aGF2ZSB0byBtYWtlIHRoZQogICAgICAgICAvLyBjYWxsIHRvIHRoZSBCMy1nZW5lcmF0ZWQgY29k
ZS4KICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFydCA9IGppdC5sYWJlbCgpOworCiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworCisgICAgICAgIC8vIExvYWQgYXJn
dW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJzCisKKy8vIFJlZ0NDIFRvZG86IFdv
dWxkIGxpa2UgdG8gZWxpbWluYXRlIHRoZXNlLCBidXQgd2UgY3VycmVudGx5IGNhbid0IGp1bXAg
aW50byB0aGUgQjMgY29tcGlsZWQKKy8vIGNvZGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGFmdGVy
IHdoZXJlIHRoZSByZWdpc3RlcnMgYXJlIHN0b3JlZCB0byB0aGUgc3RhY2suCisjaWYgMQorICAg
ICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJh
bWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGpp
dC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgp
KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7
IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlM7IGFyZ0luZGV4KyspCisgICAgICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1
bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudChhcmdJbmRleCkpOworCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0
aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwpAQCAtMTkxLDcgKzMzNiw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIH0KICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7
CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtC
dWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKKyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50
cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMTQgQEAgcHVibGljOgogICAgICAgICBt
X3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBt
X3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKKyAgICAg
ICAgLy8gU3RvcmUgb3V0IGNhbGxlZSBhbmQgYXJndW1lbnQgY291bnQgZm9yIHBvc3NpYmxlIE9T
UiBleGl0LgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxMRUUpCisgICAgICAgIG1fb3V0
LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVO
QUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0
LmFyZ3VtZW50UmVnaXN0ZXJJbnQzMihhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgp
KSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisjZW5kaWYKKwog
ICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sg
T3ZlcmZsb3cgQ2hlY2suCkBAIC0yNDcsMjAgKzI1NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IENoZWNrIEFyZ3VtZW50cy4KICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkuY2xlYXIoKTsKICAg
ICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMgPSBPcGVyYW5kczxBdmFpbGFiaWxpdHk+
KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCksIDApOworCisgICAgICAgIFZlY3RvcjxOb2Rl
KiwgOD4gYXJndW1lbnROb2RlczsKKyAgICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gYXJndW1lbnRW
YWx1ZXM7CisKKyAgICAgICAgYXJndW1lbnROb2Rlcy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKSk7CisgICAgICAgIGFyZ3VtZW50VmFsdWVzLnJlc2l6ZShjb2RlQmxvY2soKS0+
bnVtUGFyYW1ldGVycygpKTsKKworICAgICAgICBtX2hpZ2hCbG9jayA9IG1fZ3JhcGguYmxvY2so
MCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsgaS0tOykgewotICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJn
dW1lbnQoaSkgPQotICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hl
ZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9ub2RlID0gbnVsbHB0cjsKLSAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENv
ZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBO
b2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV07CiAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIGpzVmFs
dWUgPSBudWxscHRyOworCiAgICAgICAgICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3BlcmFuZCA9PSBub2RlLT5zdGFja0FjY2Vzc0Rh
dGEoKS0+bWFjaGluZUxvY2FsKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPSBBdmFpbGFiaWxpdHkobm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUgPSBtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkp
OworCisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobm9kZSwganNWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFw
KCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAgICAgICAgICAgICAgICAgICAgICAgQXZhaWxh
YmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1ZSwgb3BlcmFuZCkpOworICAgICAgICAgICAg
ICAgICAgICBqc1ZhbHVlID0gbV9vdXQubG9hZDY0KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmhhc0FyZ3VtZW50UmVn
aXN0ZXJJbmRleCgpIHx8IG9wZXJhbmQgPT0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hp
bmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBh
IGhhY2ssIGJ1dCBpdCdzIGFuIGVmZmVjdGl2ZSBvbmUuIEl0IGFsbG93cyB1cyB0byBkbyBDU0Ug
b24gdGhlCiAgICAgICAgICAgICAgICAgLy8gcHJpbW9yZGlhbCBsb2FkIG9mIGFyZ3VtZW50cy4g
VGhpcyBhc3N1bWVzIHRoYXQgdGhlIEdldExvY2FsIHRoYXQgZ290IHB1dCBpbgpAQCAtMjY4LDcg
KzI5MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGhvbGQgdHJ1ZS4K
ICAgICAgICAgICAgICAgICBtX2xvYWRlZEFyZ3VtZW50VmFsdWVzLmFkZChub2RlLCBqc1ZhbHVl
KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXJndW1lbnROb2Rlc1tpXSA9IG5vZGU7
CisgICAgICAgICAgICBhcmd1bWVudFZhbHVlc1tpXSA9IGpzVmFsdWU7CisgICAgICAgIH0KKwor
ICAgICAgICBtX25vZGUgPSBudWxscHRyOworICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBhcmd1bWVudE5vZGVzW2ldOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIExW
YWx1ZSBqc1ZhbHVlID0gYXJndW1lbnRWYWx1ZXNbaV07CisKICAgICAgICAgICAgIHN3aXRjaCAo
bV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSkgewogICAgICAgICAgICAgY2FzZSBGbHVzaGVk
SW50MzI6CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShq
c1ZhbHVlKSwgbm9kZSwgaXNOb3RJbnQzMihqc1ZhbHVlKSk7CkBAIC04MTAsNiArODQ2LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRTY29wZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDYgKzU0MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
c2V0SW50MzIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnRSZWdpc3Rl
cigpCisgICAgeworICAgICAgICAvLyBXZSBtaWdodCBoYXZlIGFscmVhZHkgaGF2ZSBhIHZhbHVl
IGZvciB0aGlzIG5vZGUuCisgICAgICAgIGlmIChMVmFsdWUgdmFsdWUgPSBtX2xvYWRlZEFyZ3Vt
ZW50VmFsdWVzLmdldChtX25vZGUpKSB7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fbm9kZS0+YXJn
dW1lbnRSZWdpc3RlckluZGV4KCkpKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZUdl
dFNjb3BlKCkKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTRnVuY3Rpb25fc2NvcGUpKTsKQEAgLTU4MDYs
OSArNTg1NSwxMCBAQCBwcml2YXRlOgogICAgICAgICAvLyB0aGUgY2FsbC4KICAgICAgICAgVmVj
dG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKIAotICAgICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBHUFIwIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBz
bG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUKLSAgICAgICAgLy8gY2FsbGVlIHRvIGJlLgotICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6cmVnVDApKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBj
YWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQn
cyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxl
ZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2Fs
bGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKIAogICAgICAgICBhdXRvIGFkZEFyZ3Vt
ZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQp
IHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9CkBAIC01ODE2LDEwICs1ODY2
LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAg
ICAgICAgfTsKIAorICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmdMb2NhdGlvbiA9IGFyZ3Vt
ZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOworI2lmIEVO
QUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAgICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUs
IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihu
dW1BcmdzKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgp
KSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQogICAgICAgICBhZGRBcmd1
bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQotICAgICAgICAgICAgYWRkQXJndW1lbnQobG93
SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgorCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoaSkpKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYWRkQXJndW1l
bnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgfQogCiAgICAgICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoYXJndW1lbnRzKTsKQEAgLTU4NDgsOSArNTkxMCwxMSBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogCisgICAgICAgICAgICAgICAg
aW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKwogICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgK
LSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVn
VDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwpAQCAtNTg1OCwxMyArNTkyMiwx
MyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsKIAot
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5u
ZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAgICAgICAgICAgICAgICBub2Rl
LT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJ
bmZvOjpDYWxsLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgYXJnTG9jYXRpb24sIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKIAogICAgICAgICAg
ICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKC1wYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpKSwKQEAgLTU4NzMsNyArNTkzNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAg
ICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIu
dm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50
cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01OTE3LDIwICs1OTgxLDM4IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q29uc3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwog
ICAgICAgICAKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2Fs
bGVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNl
IHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhl
IGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKICAgICAgICAgaWYgKCFpc1Rh
aWwpIHsKICAgICAgICAgICAgIGF1dG8gYWRkQXJndW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwg
VmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNldCkgewogICAgICAgICAgICAgICAgIGludHB0
cl90IG9mZnNldEZyb21TUCA9CiAgICAgICAgICAgICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBD
YWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSArIG9mZnNldDsKICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsK
KyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxMRUUpCiAgICAgICAgICAgICBhZGRBcmd1bWVu
dChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwor
I2VuZGlmCisgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9v
dXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NP
VU5UKQogICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRB
cmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXls
b2FkT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNz
ZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGkpLCAwKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkg
PCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5kaWYKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkgeworICAgICAg
ICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6
cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSkpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIFZhbHVlUmVwOjpy
ZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpCiAgICAgICAg
ICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6V2FybUFueSkpOwpAQCAt
NTk3Miw2ICs2MDU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURh
dGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQ7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB0
b1NhdmUgPSBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVH
UFIsIERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAgICAgICAgICAgICAgdG9TYXZlLnNldChjYWxs
ZWVHUFIpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
UGFzc2VkQXJnczsgKytpKSB7CkBAIC01OTkwLDcgKzYwNzMsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgICAgICAgICAgICAgIGppdC5z
dG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKSk7CkBAIC02MDExLDcgKzYwOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRB
cmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhl
Y3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVt
UGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4
TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAtNjAzNCw2ICs2MTIxLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02
MDQ1LDcgKzYxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAgICAgICAgICAgICAgICBpc0NvbnN0
cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJl
Y3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1Q
YXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihl
eGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBh
c3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJn
dW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAtNjA1NiwxMyArNjE0NiwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQucG9w
KENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
ZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQucG9wKEdQUklu
Zm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIwCisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2Vw
dGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5
SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKQEAgLTYwNzEsNiArNjE1OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIHNsb3dQYXRoTG9jYXRpb24pOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0Nh
bGwgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKS5l
bnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRy
KGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKCksCkBAIC02MTAyLDcgKzYxOTMsOCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CiAKLSAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86OnJlZ1QwKSkpOworICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
anNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOwogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKICAgICAgICAgICAgIC8vIE5vdGU6IHdl
IGNvdWxkIGxldCB0aGUgc2h1ZmZsZXIgZG8gYm94aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1
cGVyIGNsZWFyIHRoYXQgdGhpcwpAQCAtNjEzNiw5ICs2MjI4LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7Cisg
ICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6VGFpbENhbGwpOworCiAg
ICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7CisgICAgICAg
ICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
ZnJhbWVSZWdpc3RlckNvdW50OwotICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9
IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNh
bGxlZVJlZywgRGF0YUZvcm1hdEpTKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRh
LmFyZ3MuYXBwZW5kKHBhcmFtc1sxICsgaV0ucmVjb3ZlcnlGb3JKU1ZhbHVlKCkpOwpAQCAtNjE0
OSw3ICs2MjQ1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hl
Y2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJl
ZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVT
aHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CkBAIC02MTY3LDIwICs2MjYzLDE5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAgICAgICAgICAgQ2Fs
bEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxlcihqaXQsIHNodWZmbGVEYXRhKTsKLSAgICAg
ICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVS
ZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5w
cmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogCiAgICAgICAgICAgICAgICAgaml0
LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwogCi0gICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29k
ZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51
bUFyZ3MpLCBjb2RlT3JpZ2luLCBjYWxsZWVSZWcpOwogCiAgICAgICAgICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5r
Q2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENU
SVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0Nh
bGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlv
bigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwg
RnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC02MjcwLDYg
KzYzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAog
ICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9j
aygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlv
biBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKIAogICAgICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJl
Z2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTY0MTksNyArNjUxNSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCF1c2VkUmVnaXN0
ZXJzLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQpAQCAtNjQyNyw3ICs2NTIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGRvbmUubGlu
aygmaml0KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFy
Z3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsK
IAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5hbFN0YWNrSGVpZ2h0KSwKQEAgLTY0MzYsNyAr
NjUzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAg
ICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC02NTM3LDExICs2NjMzLDE1IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENy
ZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAg
ICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAg
IGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAg
ICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJn
czsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFy
YXJnc0RhdGEoKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAg
LTY3MDIsNyArNjgwMiw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWls
Q2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsK
LSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQu
bmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWls
Q2FsbCkKQEAgLTY3MTAsNyArNjgxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLApAQCAtNjcxOSw3ICs2ODE5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAgICAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZv
cihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNs
b3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY3ODgsMTMgKzY4ODgsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4
Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVk
dWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNh
bGxFdmFsKTsKKwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8oKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5m
bzo6Q2FsbCwgU3RhY2tBcmdzLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFt
ZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSwxMiBA
QCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIGV4ZWMtPnNldENvZGVC
bG9jayhlbnRyeUNvZGVCbG9jayk7Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2Rl
LT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
dm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQorICAgIHZvaWQq
IHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwg
Z29pbmcgdG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBi
bG9jaykKICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50
UmVnaXN0ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6
OmFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7
Cit9CisKIExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2lu
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6
Ok5vZGUqIG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4o
KSB7IHJldHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50
UmVnaXN0ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcg
cmVnKTsKICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1
ZSogbG9ja2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9
IGFkdmFuY2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAgICAgICBib29sIGlzVGFpbERlbGV0ZWQg
PSBmYWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAgICAgICAgIGlm
IChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVz
KCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3Rlcigp
Lm9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJp
dHMoSlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUp
IHsKLSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOwotICAg
ICAgICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29k
ZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNj
b3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmICghc2NvcGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkp
CisgICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNW
YWx1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlz
aXRvci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsK
KyAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxG
cmFtZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBzY29wZSwgY29kZUJsb2NrLCBjYWxsRnJh
bWUtPmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoaW5kZXhJbkxvZyA8IGxv
Z0N1cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMg
dXMgZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMyArNjE2LDEzIEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXREdW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihp
bmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsK
ICAgICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVh
bFRodW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNl
dFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgbGlua0J1ZmZlci52
bSgpLCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwg
Q29kZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNvZGUoKSkpOworICAgICAgICAgICAgSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5r
Rm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dT
dHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIGxpbmtCdWZm
ZXIudm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7
CiAgICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0MTQsOTcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7
IFNwaWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lz
dGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAw
LCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7CisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBk
b25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAg
ICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyAgICAgICAg
R1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsK
KyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KTsKKyNlbmRpZgorCisgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsK
KyAgICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3Bp
bGwgPSBzdGQ6Om1heChtaW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKworICAgICAgICBmb3IgKDsg
YXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1p
dFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9y
RnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKworICAgICAgICBpZiAoc3Bp
bGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBh
c3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJn
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZv
cmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCks
IGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvbmVTdG9y
aW5nQXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1B
cmdzVG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisg
ICAgfQorCisgICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSh1bnNpZ25lZCBt
aW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGls
bEFsbCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgICAgICBKdW1wTGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExF
Ul9TUElMTFNfQ0FMTEVFKQorICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1l
bnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisg
ICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENv
dW50KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7
CisgICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1Nw
aWxsID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisgICAgICAgIAorICAgICAg
ICBmb3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAg
ICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIAorICAgICAgICBpZiAo
c3BpbGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdz
IHBhc3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAg
ICAgICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
YXJnSW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUo
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvbmVTdG9yaW5n
QXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1Bcmdz
VG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAg
fQorICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJv
bG9ndWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKworICAgICAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwg
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVn
ID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdEdldFBh
eWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgaWYgKGFyZ0luZGV4KSAvLyBB
bHdheXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBkb25lTG9hZGluZ0FyZ3MuYXBwZW5k
KGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlzKTsKKyNlbmRpZgorICAgIH0KKwog
I2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiArNzE1LDMxIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3Vt
ZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJndW1l
bnQpCisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVy
RGVsdGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUo
R1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3Vt
ZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2Fk
UHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSks
IHRvKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50
QmVmb3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQUlJlZyB0bykKKyAgICB7CisgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6
OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkMzIo
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZm
X3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHRv
KTsKKyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRl
ckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewpAQCAtMTY0Nyw3
ICsxNzYzLDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJ
bnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYK
LSAgICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICB2b2lkIGluY3JlbWVudENvdW50
ZXIoVk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mQ291bnRlcihj
b3VudGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZNKiBtX3Zt
OwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xNjU2LDYgKzE3NzksMTIgQEAgcHJv
dGVjdGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVS
UykKKyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoaml0KS0+aW5j
cmVtZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisjZGVmaW5lIGluY3JlbWVudENvdW50
ZXIoaml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCwyNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBDYWNoZWRSZWNvdmVyeTo6
YWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MpCit7CisgICAgQVNT
RVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOworICAgIHNpemVfdCBleGlzdGluZyA9
IG1fZ3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsKKyAgICBpZiAoZXhpc3RpbmcgPT0gV1RG
Ojpub3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX2dwclRhcmdl
dHMuc2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0KCkgJiYgbV9yZWNvdmVyeS5pc0luR1BS
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSByZWNvdmVyaW5nIHRvIHRo
ZSBzYW1lIEdQUiwgbWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0LgorICAgICAgICAgICAg
R1BSUmVnIHNvdXJjZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAgICAgICAgICBpZiAoanNW
YWx1ZVJlZ3MuZ3ByKCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5k
IHRoZSBjdXJyZW50IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVn
cyA9IEpTVmFsdWVSZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAg
bV9ncHJUYXJnZXRzWzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5hcHBlbmQoanNWYWx1ZVJl
Z3MpOworICAgIH0KK30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91YmxlcyBhbmQgdW5kZXRl
cm1pbmVkIEpTVmFsdWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3b3VsZCBvdGhlcndpc2Ug
dXNlIHVwIEdQUnMuICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBDYWNoZWRSZWNvdmVyeTo6
bG9hZHNJbnRvRlBSKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2Fj
aGVkUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nh
Y2hlZFJlY292ZXJ5LmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBw
dWJsaWM6CiAgICAgQ2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNoZWRSZWNvdmVyeSYmKSA9
IGRlbGV0ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDE+JiB0YXJnZXRz
KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPEpTVmFsdWVS
ZWdzLCAxPiYgZ3ByVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByVGFyZ2V0czsgfQogCiAg
ICAgdm9pZCBhZGRUYXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7CkBAIC02OCwxNSAr
NjksMTEgQEAgcHVibGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFdhbnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOwotICAgICAg
ICBtX3dhbnRlZEpTVmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAgfQorICAgIHZvaWQgYWRk
VGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9pZCBzZXRXYW50ZWRGUFIo
RlBSUmVnIGZwcikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50ZWRKU1ZhbHVlUmVncyk7
CisgICAgICAgIEFTU0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV93YW50
ZWRGUFIgPSBmcHI7CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFJlY292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpIHsgbV9yZWNvdmVyeSA9
IHJlY292ZXJ5OyB9CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0
IHsgcmV0dXJuIG1fd2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1ZhbHVlUmVncyB3YW50ZWRK
U1ZhbHVlUmVncygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9ncHJUYXJnZXRzLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOworCisgICAgICAgIHJldHVy
biBtX2dwclRhcmdldHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdhbnRlZEZQUigpIGNvbnN0
IHsgcmV0dXJuIG1fd2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3ZlcnkgbV9y
ZWNvdmVyeTsKLSAgICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVSZWdzOwogICAgIEZQUlJl
ZyBtX3dhbnRlZEZQUiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lz
dGVyLCAxPiBtX3RhcmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiBtX2dwclRhcmdl
dHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxs
ZWU7CiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBib29sIGFyZ3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsKICAgICBSZWdpc3Rlck1h
cDxWYWx1ZVJlY292ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJ
bnZhbGlkR1BSUmVnIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIzLDcgKzMyMyw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShD
YWMKICAgICAgICAgICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIo
KSwgd2FudGVkUmVnLmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92
ZTY0VG9Eb3VibGUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmZw
cigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5k
YXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQg
PSBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdENl
bGwpOwogICAgICAgICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVyeSwKICAgICAgICAgICAg
IFZhbHVlUmVjb3Zlcnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRhRm9ybWF0SlMpKTsKICAg
ICB9IGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
Zmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5
IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICAgICAgKyBy
b3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCkpKQogICAgICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzCiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGRh
dGEuYXJncy5zaXplKCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLCBtX2FyZ3VtZW50c0lu
UmVnaXN0ZXJzKGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5kaWYKICAgICAsIG1fZnJh
bWVEZWx0YShtX2FsaWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAg
ICAgLCBtX2xvY2tlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCiB7CkBA
IC01NCwxMSArNTcsMjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKEND
YQogICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpKTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJbkpTU3RhY2soKSB8
fCBkYXRhLmNhbGxlZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgIGFkZE5ldyhW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOwotCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycykgewor
ICAgICAgICBhZGROZXcoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSwg
ZGF0YS5jYWxsZWUpOworICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgIGFkZE5ldyhWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOworICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEFTU0VSVCghZGF0YS5hcmdzW2ldLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5hcmdzW2ldLnZpcnR1
YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7Ci0gICAgICAgIGFkZE5ldyh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSwgZGF0YS5hcmdzW2ldKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyAmJiBpIDwgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgIGFkZE5ldyhKU1ZhbHVlUmVncyhh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSksIGRhdGEuYXJnc1tpXSk7Cisg
ICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpLCBkYXRhLmFyZ3NbaV0pOwogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQp
CkBAIC0xODUsOCArMTk4LDE1IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXAoUHJpbnRT
dHJlYW0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgaWYgKG5ld0Nh
Y2hlZFJlY292ZXJ5KQorICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpIHsKICAgICAgICAg
ICAgIG91dC5wcmludCgiICAgICAgICAgIiwgcmVnLCAiIDwtICIsIG5ld0NhY2hlZFJlY292ZXJ5
LT5yZWNvdmVyeSgpKTsKKyAgICAgICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeS0+Z3ByVGFy
Z2V0cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsg
aSA8IG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJn
ZXRzKClbaV0uZ3ByKCksICIgPC0gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0NhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAg
fQpAQCAtNDk2LDcgKzUxNiw3IEBAIGJvb2wgQ2FsbEZyYW1lU2h1ZmZsZXI6OnRyeVdyaXRlcyhD
YWNoZWQKICAgICBBU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5pc0luUmVnaXN0ZXJz
KCkKICAgICAgICAgfHwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5pc0NvbnN0YW50KCkpOwog
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKHZlcmJvc2UgJiYgY2FjaGVkUmVjb3ZlcnkudGFy
Z2V0cygpLnNpemUoKSkKICAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nICIsIGNhY2hlZFJl
Y292ZXJ5LnJlY292ZXJ5KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FjaGVkUmVj
b3ZlcnkudGFyZ2V0cygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0
YXJnZXQgeyBjYWNoZWRSZWNvdmVyeS50YXJnZXRzKClbaV0gfTsKQEAgLTUwNSw5ICs1MjUsOSBA
QCBib29sIENhbGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAgICAgICAgICBk
YXRhTG9nKCFpID8gIiBpbnRvICIgOiAiLCBhbmQgIiwgIk5FVyAiLCB0YXJnZXQpOwogICAgICAg
ICBlbWl0U3RvcmUoY2FjaGVkUmVjb3ZlcnksIGFkZHJlc3NGb3JOZXcodGFyZ2V0KSk7CiAgICAg
ICAgIHNldE5ldyh0YXJnZXQsIG51bGxwdHIpOworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nKCJcbiIpOwogICAgIGNhY2hlZFJlY292ZXJ5LmNsZWFyVGFyZ2V0cygpOwogICAgIGlm
ICghY2FjaGVkUmVjb3Zlcnkud2FudGVkSlNWYWx1ZVJlZ3MoKSAmJiBjYWNoZWRSZWNvdmVyeS53
YW50ZWRGUFIoKSA9PSBJbnZhbGlkRlBSUmVnKQogICAgICAgICBjbGVhckNhY2hlZFJlY292ZXJ5
KGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkpOwpAQCAtNjA2LDcgKzYyNiw3IEBAIHZvaWQgQ2Fs
bEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogewogICAgIEFTU0VSVCghaXNVbmRlY2lkZWQo
KSk7CiAKLSAgICB1cGRhdGVEYW5nZXJGcm9udGllcigpOworICAgIGluaXREYW5nZXJGcm9udGll
cigpOwogCiAgICAgLy8gRmlyc3QsIHdlIHRyeSB0byBzdG9yZSBhbnkgdmFsdWUgdGhhdCBnb2Vz
IGFib3ZlIHRoZSBkYW5nZXIKICAgICAvLyBmcm9udGllci4gVGhpcyB3aWxsIG5ldmVyIHVzZSBt
b3JlIHJlZ2lzdGVycyBzaW5jZSB3ZSBhcmUgb25seQpAQCAtNzQyLDEyICs3NjIsMTkgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAKICAgICAvLyBXZSBuZWVkIHRvIGhh
bmRsZSA0KSBmaXJzdCBiZWNhdXNlIGl0IGltcGxpZXMgcmVsZWFzaW5nCiAgICAgLy8gbV9uZXdG
cmFtZUJhc2UsIHdoaWNoIGNvdWxkIGJlIGEgd2FudGVkIHJlZ2lzdGVyLgorICAgIC8vIE5vdGUg
dGhhdCB3ZSBkZWxheSBzZXR0aW5nIHRoZSBhcmd1bWVudCBjb3VudCByZWdpc3RlciBhcyBpdCBu
ZWVkcyB0byBiZSByZWxlYXNlZCBpbiBzdGVwIDMuCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQgaW50byAiLCBWaXJ0dWFs
UmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0sICJcbiIpOwotICAgIG1f
aml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwKLSAgICAgICAgYWRk
cmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7Ci0gICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKGFyZ0NvdW50KCkpLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNl
dChQYXlsb2FkT2Zmc2V0KSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoIW1fYXJndW1l
bnRzSW5SZWdpc3RlcnMpIHsKKyNlbmRpZgorICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCisgICAgICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1
YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChU
YWdPZmZzZXQpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKGFyZ0NvdW50KCkpLAorICAgICAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVn
aXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9h
ZE9mZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgfQorI2VuZGlmCiAKICAgICBpZiAo
IWlzU2xvd1BhdGgoKSkgewogICAgICAgICBBU1NFUlQobV9uZXdGcmFtZUJhc2UgIT0gTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTc2Nyw2ICs3OTQsMjMgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAKICAgICAgICAgZW1pdERpc3BsYWNl
KCpjYWNoZWRSZWNvdmVyeSk7CiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBG
b3IgcmVjb3ZlcmllcyB3aXRoIG11bHRpcGxlIHJlZ2lzdGVyIHRhcmdldHMsIGNvcHkgdGhlIGNv
bnRlbnRzIG9mIHRoZSBmaXJzdCB0YXJnZXQgdG8gdGhlCisgICAgLy8gcmVtYWluaW5nIHRhcmdl
dHMuCisgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7
IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292
ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAgICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5
IHx8IGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpIDwgMikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEdQUlJlZyBzb3VyY2VHUFIgPSBjYWNoZWRSZWNvdmVyeS0+
Z3ByVGFyZ2V0cygpWzBdLmdwcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGNh
Y2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBtX2pp
dC5tb3ZlKHNvdXJjZUdQUiwgY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKVtpXS5ncHIoKSk7
CisgICAgfQorCisgICAgaWYgKG1fYXJndW1lbnRzSW5SZWdpc3RlcnMpCisgICAgICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwgYXJndW1lbnRS
ZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE3ICs5NiwzNyBAQCBwdWJsaWM6
CiAgICAgLy8gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlCiAgICAgLy8gYXJn
dW1lbnRzL2NhbGxlZS9jYWxsZWUtc2F2ZSByZWdpc3RlcnMgYXJlIGJ5IHRha2luZyBpbnRvCiAg
ICAgLy8gYWNjb3VudCBhbnkgc3BpbGxpbmcgdGhhdCBhY3F1aXJlR1BSKCkgY291bGQgaGF2ZSBk
b25lLgotICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNuYXBzaG90KCkgY29uc3QKKyAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdChBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbikgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VuZGVjaWRlZCgpKTsKIAogICAg
ICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBkYXRhOwogICAgICAgICBkYXRhLm51bUxvY2FscyA9
IG51bUxvY2FscygpOwotICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhWaXJ0dWFsUmVnaXN0
ZXIgeyBDYWxsRnJhbWVTbG90OjpjYWxsZWUgfSktPnJlY292ZXJ5KCk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IGFyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyNlbmRpZgorICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24g
PT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJl
Z2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIFJlZyByZWcgeyBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkg
fTsKKyAgICAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVn
aXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gY2FjaGVkUmVjb3Zlcnkt
PnJlY292ZXJ5KCk7CisgICAgICAgIH0KICAgICAgICAgZGF0YS5hcmdzLnJlc2l6ZShhcmdDb3Vu
dCgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdDb3VudCgpOyArK2kpCi0g
ICAgICAgICAgICBkYXRhLmFyZ3NbaV0gPSBnZXROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkpLT5yZWNvdmVyeSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0Nv
dW50KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNr
QXJncyB8fCBpID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisg
ICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIFJlZyByZWcgeyBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSB9Owor
ICAgICAgICAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVn
aXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgICAgICAgICBkYXRhLmFyZ3NbaV0gPSBjYWNoZWRSZWNv
dmVyeS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3Ig
KFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5l
eHQoKSkgeworICAgICAgICAgICAgaWYgKHJlZy5pc0dQUigpICYmIGFyZ3VtZW50c0xvY2F0aW9u
ICE9IFN0YWNrQXJncworICAgICAgICAgICAgICAgICYmIEdQUkluZm86OnRvQXJndW1lbnRJbmRl
eChyZWcuZ3ByKCkpIDwgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50
KGFyZ0NvdW50KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBD
YWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CiAg
ICAgICAgICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5KQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMzc2LDYgKzM5Niw5IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9hbGlnbmVkT2xkRnJh
bWVTaXplOwogICAgIGludCBtX2FsaWduZWROZXdGcmFtZVNpemU7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBib29sIG1fYXJndW1lbnRzSW5SZWdpc3RlcnM7CisjZW5kaWYKIAogICAgIC8vIFRo
aXMgaXMgdGhlIGRpc3RhbmNlLCBpbiBzbG90cywgYmV0d2VlbiB0aGUgYmFzZSBvZiB0aGUgbmV3
CiAgICAgLy8gZnJhbWUgYW5kIHRoZSBiYXNlIG9mIHRoZSBvbGQgZnJhbWUuIEl0IGNvdWxkIGJl
IG5lZ2F0aXZlIHdoZW4KQEAgLTY0MSw5ICs2NjQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNT
RVJUKGpzVmFsdWVSZWdzICYmICFnZXROZXcoanNWYWx1ZVJlZ3MpKTsKICAgICAgICAgQ2FjaGVk
UmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5ID0gYWRkQ2FjaGVkUmVjb3ZlcnkocmVjb3ZlcnkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGlmIChjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNW
YWx1ZVJlZ3MoKSkKLSAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2NhY2hlZFJlY292ZXJ5LT53
YW50ZWRKU1ZhbHVlUmVncygpLmdwcigpXSA9IG51bGxwdHI7Ci0gICAgICAgIG1fbmV3UmVnaXN0
ZXJzW2pzVmFsdWVSZWdzLmdwcigpXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICBpZiAoY2Fj
aGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkpIHsKKyAgICAgICAgICAgIGlmIChyZWNv
dmVyeS5pc0luR1BSKCkgJiYganNWYWx1ZVJlZ3MuZ3ByKCkgPT0gcmVjb3ZlcnkuZ3ByKCkpIHsK
KyAgICAgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNW
YWx1ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fbmV3UmVnaXN0
ZXJzW2pzVmFsdWVSZWdzLmdwcigpXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2pzVmFsdWVSZWdzLmdw
cigpXSA9IGNhY2hlZFJlY292ZXJ5OwogI2Vsc2UKICAgICAgICAgaWYgKEpTVmFsdWVSZWdzIG9s
ZFJlZ3MgeyBjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKSB9KSB7CiAgICAgICAg
ICAgICBpZiAob2xkUmVncy5wYXlsb2FkR1BSKCkpCkBAIC02NTYsOCArNjgzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGpzVmFsdWVSZWdzLnRhZ0dQUigpICE9IEludmFsaWRHUFJSZWcpCiAg
ICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy50YWdHUFIoKV0gPSBjYWNoZWRS
ZWNvdmVyeTsKICNlbmRpZgotICAgICAgICBBU1NFUlQoIWNhY2hlZFJlY292ZXJ5LT53YW50ZWRK
U1ZhbHVlUmVncygpKTsKLSAgICAgICAgY2FjaGVkUmVjb3ZlcnktPnNldFdhbnRlZEpTVmFsdWVS
ZWdzKGpzVmFsdWVSZWdzKTsKKyAgICAgICAgY2FjaGVkUmVjb3ZlcnktPmFkZFRhcmdldEpTVmFs
dWVSZWdzKGpzVmFsdWVSZWdzKTsKICAgICB9CiAKICAgICB2b2lkIGFkZE5ldyhGUFJSZWcgZnBy
LCBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5KQpAQCAtNzU1LDEzICs3ODEsMjMgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHJlZyA8PSBkYW5nZXJGcm9udGllcigpOwogICAgIH0KIAorICAgIHZv
aWQgaW5pdERhbmdlckZyb250aWVyKCkKKyAgICB7CisgICAgICAgIGZpbmREYW5nZXJGcm9udGll
ckZyb20obGFzdE5ldygpKTsKKyAgICB9CisKICAgICB2b2lkIHVwZGF0ZURhbmdlckZyb250aWVy
KCkKICAgICB7CisgICAgICAgIGZpbmREYW5nZXJGcm9udGllckZyb20obV9kYW5nZXJGcm9udGll
ciAtIDEpOworICAgIH0KKworICAgIHZvaWQgZmluZERhbmdlckZyb250aWVyRnJvbShWaXJ0dWFs
UmVnaXN0ZXIgbmV4dFJlZykKKyAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlY2lkZWQoKSk7
CiAKICAgICAgICAgbV9kYW5nZXJGcm9udGllciA9IGZpcnN0TmV3KCkgLSAxOwotICAgICAgICBm
b3IgKFZpcnR1YWxSZWdpc3RlciByZWcgPSBsYXN0TmV3KCk7IHJlZyA+PSBmaXJzdE5ldygpOyBy
ZWcgLT0gMSkgewotICAgICAgICAgICAgaWYgKCFnZXROZXcocmVnKSB8fCAhaXNWYWxpZE9sZChu
ZXdBc09sZChyZWcpKSB8fCAhZ2V0T2xkKG5ld0FzT2xkKHJlZykpKQorICAgICAgICBmb3IgKFZp
cnR1YWxSZWdpc3RlciByZWcgPSBuZXh0UmVnOyByZWcgPj0gZmlyc3ROZXcoKTsgcmVnIC09IDEp
IHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9sZChuZXdBc09sZChyZWcpKSB8fCAhZ2V0T2xk
KG5ld0FzT2xkKHJlZykpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBtX2RhbmdlckZyb250aWVyID0gcmVnOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7IH0KICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgIT0gSW52YWxp
ZEdQUlJlZzsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJl
dHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVl
UmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IG90aGVyLm1f
Z3ByOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIEdQUlJlZyBncHIoKSBjb25zdCB7
IHJldHVybiBtX2dwcjsgfQogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZh
bGlkR1BSUmVnOyB9CkBAIC0zMzEsNiArMzMxLDcgQEAgcHJpdmF0ZToKIAogI2lmIENQVShYODYp
CiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKKyNkZWZpbmUgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTM1Myw2ICsz
NTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBY
ODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMwogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAorICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWRpOyAvLyByZWdUNQog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVh
eDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4
NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjplY3g7CkBAIC0zNzksNiArMzgxLDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMg
dW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihyZWcpIDwgOCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3Vt
ZW50UmVnaXN0ZXJbOF0gPSB7IDIsIDAsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICByZXR1cm4gaW5kZXhGb3JB
cmd1bWVudFJlZ2lzdGVyW3JlZ107CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKQEAgLTQwMyw2ICs0MTMsMTEgQEAgcHVibGljOgogI2RlZmluZSBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTIDR1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVH
SVNURVJTIDd1CiAjZW5kaWYKKyNpZiBVU0UoUkVHSVNURVJfQVJHVU1FTlRTKQorI2RlZmluZSBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTIC0gMnUpCisjZWxzZQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZW5kaWYKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6
CkBAIC00NjQsNiArNDc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJn
dW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAo
cmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBY
ODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVy
blZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3Ig
cmVnVDIKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9
IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTUwOCw2
ICs1MjQsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaW5kZXhGb3JSZWdpc3RlcltyZWdd
OwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7CisjaWYgIU9TKFdJTkRPV1MpCisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbMTZd
ID0geyBJbnZhbGlkSW5kZXgsIDMsIDIsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIDEsIDAsIDQsIDUsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyNlbHNl
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
MTZdID0geyBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4IH07CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yQXJndW1l
bnRSZWdpc3RlcltyZWddOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVi
dWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRH
UFJSZWcpOwpAQCAtNTM4LDYgKzU2Niw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk0pCiAjZGVm
aW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTYwMSw2ICs2MzAsMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyB1
bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VS
VChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+
KHJlZykgPCAxNik7CisgICAgICAgIGlmIChyZWcgPiBhcmd1bWVudEdQUjMpCisgICAgICAgICAg
ICByZXR1cm4gSW52YWxpZEluZGV4OworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAg
ICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTYyMSw2ICs2
NTksNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgOHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDJ1KQogLy8gQ2FsbGVl
IFNhdmVzIGluY2x1ZGVzIHgxOS4ueDI4IGFuZCBGUCByZWdpc3RlcnMgcTguLnExNQogI2RlZmlu
ZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAxOHUKIApAQCAtNjk4LDYgKzczNyw3
IEBAIHB1YmxpYzoKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTEzID09IDEz
LCBxMTNfaXNfMTMpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTQgPT0g
MTQsIHExNF9pc18xNCk7CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExNSA9
PSAxNSwgcTE1X2lzXzE1KTsKKwogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25l
ZCBpbmRleCkKICAgICB7CiAgICAgICAgIHJldHVybiAoR1BSUmVnKWluZGV4OwpAQCAtNzE1LDYg
Kzc1NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0b1JlZ2lzdGVyKGluZGV4KTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisg
ICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBpZiAo
cmVnID4gYXJndW1lbnRHUFI3KQorICAgICAgICAgICAgcmV0dXJuIEludmFsaWRJbmRleDsKKyAg
ICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKQEAgLTc0Niw2ICs3OTQsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoTUlQ
UykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2RlZmluZSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5VTUJFUl9P
Rl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNzczLDYg
KzgyMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9
IE1JUFNSZWdpc3RlcnM6OmEyOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIz
ID0gTUlQU1JlZ2lzdGVyczo6YTM7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIw
ID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDU7CiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwogICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKQEAgLTgyNSw2ICs4NzUs
NyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoU0g0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAog
Y2xhc3MgR1BSSW5mbyB7CkBAIC04NTUsNiArOTA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gU0g0UmVnaXN0ZXJzOjpyNjsgLy8gcmVnVDIKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFNINFJlZ2lzdGVyczo6cjc7IC8v
IHJlZ1QzCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDQ7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDU7CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKQEAgLTg5MSw2ICs5NDMsNjEgQEAgcHVibGljOgog
CiAjZW5kaWYgLy8gQ1BVKFNINCkKIAoraW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9y
KHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpCit7CisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA+IDAKKyAgICBpZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICByZXR1cm4gR1BSSW5m
bzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50SW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oYXJndW1lbnRJbmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFy
Z3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPiAwCisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoMCk7CisjZWxzZQorICAg
IHJldHVybiBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRSZWdp
c3RlckZvcigxKTsKK30KKworaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZv
ckpTRnVuY3Rpb25Bcmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gYXJn
dW1lbnQgKyAyOworfQorCitpbmxpbmUgdW5zaWduZWQganNGdW5jdGlvbkFyZ3VtZW50Rm9yQXJn
dW1lbnRSZWdpc3RlcihHUFJSZWcgZ3ByKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgPiAwCisgICAgdW5zaWduZWQgYXJndW1lbnRJbmRleCA9IEdQUklu
Zm86OnRvQXJndW1lbnRJbmRleChncHIpOworICAgIEFTU0VSVChhcmd1bWVudEluZGV4ICE9IEdQ
UkluZm86OkludmFsaWRJbmRleCAmJiBhcmd1bWVudEluZGV4ID49IDIpOworICAgIHJldHVybiBh
cmd1bWVudEluZGV4IC0gMjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGdwcik7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitp
bmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KHVuc2lnbmVk
IGFyZ3VtZW50SW5kZXgpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoYXJndW1l
bnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KGFyZ3VtZW50SW5kZXgpKTsKK30K
KworaW5saW5lIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IodW5zaWduZWQg
YXJndW1lbnRDb3VudCkKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oYXJndW1lbnRDb3VudCwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7Cit9CisKIC8vIFRoZSBiYXNl
bGluZSBKSVQgdXNlcyAiYWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3aXRoIHJlZ1QwIChm
b3IgNjQtYml0KQogLy8gYW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQpIHNlcnZpbmcgYXMg
dGhlIGFjY3VtdWxhdG9yIHJlZ2lzdGVyKHMpIGZvcgogLy8gcGFzc2luZyByZXN1bHRzIG9mIG9u
ZSBvcGNvZGUgdG8gdGhlIG5leHQuIEhlbmNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNCArNjYsNiBAQCB2b2lkIGN0aVBhdGNoQ2FsbEJ5
UmV0dXJuQWRkcmVzcyhSZXR1cm5BCiAgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAot
SklUOjpDb2RlUmVmIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5j
dGlvbiBmdW5jKQotewotICAgIGlmICghdm0tPmNhblVzZUpJVCgpKQotICAgICAgICByZXR1cm4g
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUp
OwotICAgIEpJVCBqaXQodm0sIDApOwotICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVDVElO
YXRpdmVDYWxsKHZtLCBmdW5jKTsKLX0KLQogSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICA6IEpTSW50ZXJmYWNlSklUKHZtLCBjb2RlQmxvY2spCiAgICAgLCBtX2lu
dGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKQEAgLTU3OSw2ICs1NzEsMjAgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgIGlmIChtX3JhbmRvbUdlbmVyYXRv
ci5nZXRVaW50MzIoKSAmIDEpCiAgICAgICAgIG5vcCgpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW5jcmVt
ZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkpOworI2lmIEVOQUJMRShWTV9DT1VO
VEVSUykKKyAgICBKdW1wIGNvbnRpbnVlU3RhY2tFbnRyeSA9IGp1bXAoKTsKKyNlbmRpZgorI2Vu
ZGlmCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGluY3JlbWVu
dENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworCisjaWYgVVNFKEpTVkFMVUU2
NCkgJiYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNvbnRpbnVlU3RhY2tFbnRyeS5saW5rKHRo
aXMpOworI2VuZGlmCisKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsK
IApAQCAtNjM1LDcgKzY0MSwyMSBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJ
VENvbXBpCiAgICAgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9u
KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CiAKICAgICBp
ZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7Ci0gICAgICAgIG1f
YXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hl
Y2sgPSBsYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0Fy
Z3NBcml0eSk7CisKKyAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQ
cm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBKdW1wIGNvbnRp
bnVlU3RhY2tBcml0eUVudHJ5ID0ganVtcCgpOworI2VuZGlmCisKKyAgICAgICAgbV9zdGFja0Fy
Z3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhp
cywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAg
IGNvbnRpbnVlU3RhY2tBcml0eUVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAgICAgc3Rv
cmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5l
ZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKQEAg
LTY0Myw2ICs2NjMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBp
CiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
LCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJlZ2luTGFiZWwsIHRo
aXMpOwogCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4dXBSZXF1
aXJlZCk7CisKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKICAgICAgICAgaWYgKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpAQCAtNzc4LDkgKzgwMCwxNCBAQCBDb21waWxh
dGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29k
ZU1hcChqaXRDb2RlTWFwRW5jb2Rlci5maW5pc2goKSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgd2l0aEFyaXR5Q2hlY2s7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mKG1fYXJpdHlDaGVjayk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50
cnlBcml0eU9LUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0YWNrQXJnc0FyaXR5T0tF
bnRyeSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lzdGVyRW50cnlXaXRo
QXJpdHlDaGVja1B0cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeVdpdGhB
cml0eUNoZWNrUHRyOworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUpIHsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0Y2hC
dWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
c3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0
YWNrQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICB9CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcERp
c2Fzc2VtYmx5KCkpIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAocGF0Y2hCdWZmZXIp
OwpAQCAtNzk4LDE0ICs4MjUsMjYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAg
ICBDb2RlUmVmIHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLAog
ICAgICAgICAoIkJhc2VsaW5lIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tX
aXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKS5kYXRhKCkpKTsK
LSAgICAKKwogICAgIG1fdm0tPm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNl
bGluZUpJVC0+YWRkKAogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJlc3VsdC5zaXplKCkp
IC8KICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2luc3RydWN0aW9ucy5zaXplKCkpKTsK
IAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwor
ICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzKHJlc3VsdC5jb2RlKCksIHJlZ2lzdGVyRW50
cnlXaXRoQXJpdHlDaGVja1B0ciwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyLCBzdGFj
a0VudHJ5QXJpdHlPS1B0ciwgc3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRyKTsKKworICAgIHVu
c2lnbmVkIG51bVBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7CisgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0Nv
dW50IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50
KyspIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5OworICAgICAgICBpZiAo
YXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIGVudHJ5ID0gcmVzdWx0LmNv
ZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnkgPSByZWdpc3RlckVudHJ5V2l0
aEFyaXR5Q2hlY2tQdHI7CisgICAgICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKEpJVEVudHJ5
UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoYXJnQ291bnQpLCBlbnRy
eSk7CisgICAgfQorCiAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkJh
c2VsaW5lSklUKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShKSVRFbnRy
eVBvaW50c1dpdGhSZWYocmVzdWx0LCBlbnRyeXBvaW50cyksIEpJVENvZGU6OkJhc2VsaW5lSklU
KSkpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFKQogICAgIGRhdGFMb2dGKCJKSVQgZ2VuZXJh
dGVkIGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVj
dXRhYmxlTWVtb3J5KCktPnN0YXJ0KCksIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPmVuZCgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkpJVElubGluZUNhY2hlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklU
TWF0aElDLmgiCiAjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNsdWRl
ICJVbnVzZWRQb2ludGVyLmgiCiAKQEAgLTI0Niw3ICsyNDcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoYnlWYWxJ
bmZvLCByZXR1cm5BZGRyZXNzLCBhcnJheU1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIENvZGVSZWYgY29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBOYXRpdmVGdW5jdGlvbik7Cisg
ICAgICAgIHN0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgY29tcGlsZU5hdGl2ZUNhbGxFbnRy
eVBvaW50cyhWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgICAgICAgICAgQ29kZVJlZiBuYXRp
dmVDYWxsUmVmID0gQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxs
X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYobmF0aXZlQ2FsbFJlZiwgbmF0aXZlQ2FsbFJlZi5jb2RlKCksIG5hdGl2ZUNhbGxSZWYuY29k
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpJVCBqaXQodm0sIDApOworICAgICAg
ICAgICAgcmV0dXJuIGppdC5wcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbCh2bSwgZnVu
Yyk7CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNv
dW50Rm9yKENvZGVCbG9jayopOwogICAgICAgICBzdGF0aWMgaW50IHN0YWNrUG9pbnRlck9mZnNl
dEZvcihDb2RlQmxvY2sqKTsKQEAgLTI2Niw4ICsyNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKLSAgICAgICAgTGFiZWwgcHJpdmF0
ZUNvbXBpbGVDVElOYXRpdmVDYWxsKFZNKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKLSAg
ICAgICAgQ29kZVJlZiBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBOYXRpdmVGdW5j
dGlvbik7CisgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBwcml2YXRlQ29tcGlsZUpJVEVu
dHJ5TmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KTsKIAogICAgICAgICAvLyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFu
IGV4Y2VwdGlvbiBjaGVjay4KQEAgLTk0OSw4ICs5NTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleDsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleDsK
LSAgICAgICAgCi0gICAgICAgIExhYmVsIG1fYXJpdHlDaGVjazsKKworICAgICAgICBMYWJlbCBt
X3N0YWNrQXJnc0FyaXR5T0tFbnRyeTsKKyAgICAgICAgTGFiZWwgbV9zdGFja0FyZ3NXaXRoQXJp
dHlDaGVjazsKKyAgICAgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjazsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IG1fbGlua0J1ZmZlcjsKIAogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SklURGlzYXNzZW1ibGVyPiBtX2Rpc2Fzc2VtYmxlcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwo
SW5zdHJ1Y3Rpb24qIGkKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5m
bygpOwotICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4o
bV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJ
bmZvOjpDYWxsLCBTdGFja0FyZ3MsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1Qw
KTsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIApAQCAtMjExLDEyICsyMTEsMTIgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydQogCiAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCByZWdUMik7CisgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGluZm8pLCBub25BcmdHUFIwKTsKIAogICAgIGVtaXRMb2FkKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVh
bFRodW5rID0gdmlydHVhbFRodW5rRm9yKG1fdm0sICppbmZvKTsKLSAgICBpbmZvLT5zZXRTbG93
U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICptX3ZtLCBudWxscHRyLCB0
cnVlKSk7Ci0gICAgZW1pdE5ha2VkQ2FsbCh2aXJ0dWFsVGh1bmsuY29kZSgpKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtG
b3IobV92bSwgKmluZm8pOworICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksICptX3ZtLCBudWxscHRyLCB0cnVlKSk7CisgICAg
ZW1pdE5ha2VkQ2FsbCh2aXJ0dWFsVGh1bmsuZW50cnlGb3IoU3RhY2tBcmdzKSk7CiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6
ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIApAQCAtMjg2LDcgKzI4Niw3IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2Fz
ZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9
PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdU
MCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2Rl
SUQpLCBTdGFja0FyZ3MsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbkluZm8oKSk7CiAg
ICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4g
PSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5m
b1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKQEAgLTMxNywxMiArMzE3
LDEzIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgbW92ZShUcnVz
dGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExp
bmtJbmZvKSwgcmVnVDIpOworICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxs
Q29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgaWYgKG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJn
cykKICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbV9jYWxsQ29tcGls
YXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFr
ZWRDYWxsKG1fdm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsK
KyAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5M
b2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxp
bmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9j
YXRpb24oKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJ
RCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklU
RGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQCB2b2lkIEpJVDo6Y29t
cGlsZVNldHVwVmFyYXJnc0ZyYW1lKE9wY29kCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhy
ZWdUMSwgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBpbmNy
ZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6Q2FsbFZhcmFyZ3MpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKQEAgLTk4LDYgKzEwMCw5IEBAIHZvaWQgSklU
Ojpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBzdGFj
a1BvaW50ZXJSZWdpc3RlciwgcmVnVDEpOwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVy
LCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKIAorICAg
IGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1l
bnRDb3VudGVyKHRoaXMsIFZNOjpDYWxsRXZhbCk7CisKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNr
UG9pbnRlckFsaWdubWVudCgpOwogCkBAIC0xMTMsNyArMTE4LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dD
YXNlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2Fs
bChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zm
c2V0KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGludCByZWdpc3Rl
ck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CkBAIC0xNTQsMTQgKzE1OSwyMyBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgQ09NUElMRV9B
U1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyksIGNhbGxfYW5kX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19vcGNvZGVzX211c3RfYmVfc2FtZV9sZW5ndGgpOwogCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZv
ID0gbnVsbHB0cjsKKyAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0
YWNrQXJnczsKKwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9jYWxsX2V2YWwpCiAgICAgICAgIGlu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaWYgKG9wY29kZUlEID09
IG9wX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyB8fCBv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIGNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGluZm8pOwogICAgIGVsc2UgewotICAgICAgICBpbnQgYXJn
Q291bnQgPSBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIGFyZ0Nv
dW50ID0gaW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOwogICAgICAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSAtaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwogCisjaWYgRU5BQkxFKEJBU0VM
SU5FX1JFR0lTVEVSX0FSR1VNRU5UX0NBTExTKQorICAgICAgICBpZiAoTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAmJiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNv
ZGVJRCA9PSBvcF9jb25zdHJ1Y3QpKSB7CisgICAgICAgICAgICBhcmd1bWVudHNMb2NhdGlvbiA9
IGFyZ3VtZW50c0xvY2F0aW9uRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgICAgIGluZm8tPnNldFBy
b3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cygpOworICAgICAgICB9CisjZW5kaWYKKwog
ICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAg
ICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CkBAIC0xNzEsMTUg
KzE4NSwyNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAg
ICAgIH0KICAgICAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAq
IHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVS
ZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9j
YXRpb24gIT0gU3RhY2tBcmdzKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhcmdD
b3VudCksIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAg
dW5zaWduZWQgcmVnaXN0ZXJBcmdzID0gc3RkOjptaW4oYXJnQ291bnQsIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmcgPSAwOyBhcmcgPCByZWdpc3RlckFyZ3M7IGFyZysrKQorICAgICAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3Vt
ZW50ICsgYXJnKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChh
cmcpKTsKKyAgICAgICAgfQogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCks
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZy
YW1lICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlh
bGl6ZWQuCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7
CiAgICAgCiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIG1fY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0
cyA9IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRy
dXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUs
IHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
KyAgICBHUFJSZWcgY2FsbGVlUmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7
CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnaXN0ZXIpOwor
ICAgIHN0b3JlNjQoY2FsbGVlUmVnaXN0ZXIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAg
LTE4NywxNiArMjExLDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVj
azsKLSAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdU
MCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CisgICAg
SnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgY2FsbGVlUmVnaXN0
ZXIsIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogICAg
IGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbklu
Zm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2Fs
bExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlw
ZUZvcihvcGNvZGVJRCksIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVP
ZmZzZXQpLCBjYWxsZWVSZWdpc3Rlcik7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVu
ZChDYWxsQ29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxs
TGlua0luZm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVj
azsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5r
SW5mbyA9IGluZm87CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CisgICAg
ICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlw
ZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgc2h1ZmZs
ZURhdGEubnVtTG9jYWxzID0KQEAgLTIwOSw3ICsyMzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
Q2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7
CiAgICAgICAgIH0KICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0KLSAgICAgICAgICAgIFZh
bHVlUmVjb3Zlcnk6OmluR1BSKHJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgVmFs
dWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlUmVnaXN0ZXIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAg
IHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAgICAg
ICAgIGluZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlcigqdGhpcywgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpA
QCAtMjQ2LDkgKzI3MiwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29k
ZUlECiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90
YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHMpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxM
aW5rSW5mbyksIHJlZ1QyKTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2Fs
bENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBub25BcmdHUFIwKTsKIAotICAgIG1fY2Fs
bENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0g
ZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxs
UmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0xvY2F0aW9uKCkpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwg
b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpIHsKICAgICAgICAgYWJvcnRXaXRoUmVh
c29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1
ZSBKSVRDb2RlOjpleGVjdXRlKFZNKiB2bSwgUHJvdG9DYQogCiAgICAgaWYgKCFmdW5jdGlvbiB8
fCAhcHJvdG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpIHsKICAgICAgICAgQVNTRVJUKCFw
cm90b0NhbGxGcmFtZS0+bmVlZEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIGVudHJ5QWRkcmVzcyA9
IGV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JD
YWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoTXVzdENo
ZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFk
ZHJlc3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3Jp
cHQoZW50cnlBZGRyZXNzLCB2bSwgcHJvdG9DYWxsRnJhbWUpKTsKICAgICByZXR1cm4gc2NvcGUu
ZXhjZXB0aW9uKCkgPyBqc051bGwoKSA6IHJlc3VsdDsKIH0KQEAgLTE2Miw5ICsxNjIsOSBAQCBE
aXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKEpJVFR5cGUgaml0CiB7CiB9CiAKLURpcmVjdEpJ
VENvZGU6OkRpcmVjdEpJVENvZGUoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQ
dHIgd2l0aEFyaXR5Q2hlY2ssIEpJVFR5cGUgaml0VHlwZSkKLSAgICA6IEpJVENvZGVXaXRoQ29k
ZVJlZihyZWYsIGppdFR5cGUpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNr
KQorRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50
cmllcywgSklUVHlwZSBqaXRUeXBlKQorICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKGVudHJpZXMu
Y29kZVJlZigpLCBqaXRUeXBlKQorICAgICwgbV9lbnRyeVBvaW50cyhlbnRyaWVzKQogewogfQog
CkBAIC0xNzIsMjUgKzE3MiwxNiBAQCBEaXJlY3RKSVRDb2RlOjp+RGlyZWN0SklUQ29kZSgpCiB7
CiB9CiAKLXZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoSklUQ29kZTo6Q29k
ZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCit2b2lkIERpcmVjdEpJ
VENvZGU6OmluaXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmll
cykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZWYpOwotICAgIG1fcmVmID0gcmVmOwotICAg
IG1fd2l0aEFyaXR5Q2hlY2sgPSB3aXRoQXJpdHlDaGVjazsKKyAgICBtX3JlZiA9IGVudHJpZXMu
Y29kZVJlZigpOworICAgIG1fZW50cnlQb2ludHMgPSBlbnRyaWVzOwogfQogCi1KSVRDb2RlOjpD
b2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5
KQorSklUQ29kZTo6Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBv
aW50VHlwZSB0eXBlKQogewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICBjYXNlIEFyaXR5Q2hl
Y2tOb3RSZXF1aXJlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICBy
ZXR1cm4gbV9yZWYuY29kZSgpOwotICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICByZXR1cm4gbV93aXRoQXJp
dHlDaGVjazsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQ29kZVB0cigpOworICAgIHJldHVybiBtX2VudHJ5UG9pbnRzLmVudHJ5Rm9yKHR5cGUp
OwogfQogCiBOYXRpdmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlwZSkKQEAg
LTIxMyw3ICsyMDQsNyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENv
CiAgICAgbV9yZWYgPSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6
YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJ
VENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCEhbV9yZWYpOwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lz
dGVyU2V0LmgiCkBAIC0xNzMsOSArMTczLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaml0
Q29kZS0+aml0VHlwZSgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoRW50cnlQb2ludFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZvaWQqIGV4ZWN1dGFi
bGVBZGRyZXNzKCkgeyByZXR1cm4gZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKTsgfQogICAg
IHZpcnR1YWwgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpID0gMDsK
ICAgICAKQEAgLTIyNCwxNSArMjIzLDE1IEBAIHByb3RlY3RlZDoKIGNsYXNzIERpcmVjdEpJVENv
ZGUgOiBwdWJsaWMgSklUQ29kZVdpdGhDb2RlUmVmIHsKIHB1YmxpYzoKICAgICBEaXJlY3RKSVRD
b2RlKEpJVFR5cGUpOwotICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJp
dHlDaGVjaywgSklUVHlwZSk7CisgICAgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhS
ZWYsIEpJVFR5cGUpOwogICAgIHZpcnR1YWwgfkRpcmVjdEpJVENvZGUoKTsKICAgICAKLSAgICB2
b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOwor
ICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZik7CiAK
LSAgICBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAg
ICBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMg
bV9lbnRyeVBvaW50czsKIH07CiAKIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklUQ29k
ZVdpdGhDb2RlUmVmIHsKQEAgLTI0Myw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBpbml0aWFsaXplQ29kZVJlZihDb2RlUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNh
bGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwo
RW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeXBvaW50cy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlwb2ludHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpJVEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgSklURW50
cnlwb2ludHNfaAorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86ICBD
b25zaWRlciB1c2luZyBhIG1hY3JvIGJhc2UgY29udHJ1Y3Rpb24gdG8gZ2V0IGVudW0gImluaGVy
aXRlbmNlIgorZW51bSBBcmd1bWVudHNMb2NhdGlvbiA6IHVuc2lnbmVkIHsKKyAgICBTdGFja0Fy
Z3MgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0g
NAorICAgIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3MySW5SZWdp
c3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzM0luUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczRJ
blJlZ2lzdGVycywKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
ID09IDYKKyAgICBSZWdpc3RlckFyZ3M1SW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNklu
UmVnaXN0ZXJzLAorI2VuZGlmCisgICAgUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaworI2Vu
ZGlmCit9OworCisvLyBUaGlzIGVudW0gbmVlZHMgdG8gaGF2ZSB0aGUgc2FtZSBlbnVtZXJhdG9y
IG9yZGVyaW5nIGFzIEFyZ3VtZW50c0xvY2F0aW9uLgorZW51bSBUaHVua0VudHJ5UG9pbnRUeXBl
IDogdW5zaWduZWQgeworICAgIFN0YWNrQXJnc0VudHJ5ID0gMCwKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICBSZWdpc3RlcjFBcmdFbnRyeSwK
KyAgICBSZWdpc3RlcjJBcmdzRW50cnksCisgICAgUmVnaXN0ZXIzQXJnc0VudHJ5LAorICAgIFJl
Z2lzdGVyNEFyZ3NFbnRyeSwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTID09IDYKKyAgICBSZWdpc3RlcjVBcmdzRW50cnksCisgICAgUmVnaXN0ZXI2QXJnc0Vu
dHJ5LAorI2VuZGlmCisjZW5kaWYKKyAgICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQKK307CisK
K2VudW0gRW50cnlQb2ludFR5cGUgeworICAgIFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZCwKKyAgICBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVp
cmVkLAorICAgIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLAorICAgIFJlZ2lzdGVyQXJn
c011c3RDaGVja0FyaXR5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyQXJnczEsCisgICAgUmVnaXN0ZXJBcmdzMiwKKyAgICBS
ZWdpc3RlckFyZ3MzLAorICAgIFJlZ2lzdGVyQXJnczQsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAgUmVnaXN0ZXJBcmdzNSwKKyAgICBSZWdp
c3RlckFyZ3M2LAorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorICAgIE51bWJlck9mRW50cnlQb2lu
dFR5cGVzCit9OworCitjbGFzcyBKSVRFbnRyeVBvaW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZFbnRyeVR5cGVzID0gRW50cnlQb2ludFR5cGU6Ok51bWJlck9mRW50cnlQb2lu
dFR5cGVzOworCisgICAgSklURW50cnlQb2ludHMoKQorICAgIHsKKyAgICAgICAgY2xlYXJFbnRy
aWVzKCk7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMoQ29kZVB0ciByZWdpc3RlckFyZ3NO
b0NoZWNrUmVxdWlyZWRFbnRyeSwgQ29kZVB0ciByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJn
c0VudHJ5LAorICAgICAgICBDb2RlUHRyIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwgQ29k
ZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwKKyAgICAgICAgQ29kZVB0
ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgeworICAgICAgICBtX2VudHJ5UG9pbnRz
W1N0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZF0gPSBzdGFja0FyZ3NBcml0eUNoZWNrTm90
UmVxdWlyZWRFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eV0gPSBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJn
c0FyaXR5Q2hlY2tOb3RSZXF1aXJlZF0gPSByZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRFbnRy
eTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc10g
PSByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5OworICAgICAgICBtX2VudHJ5UG9p
bnRzW1JlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5XSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlF
bnRyeTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBpICsrKQorICAgICAgICAgICAgbV9lbnRyeVBvaW50
c1tyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoaSldID0gcmVnaXN0ZXJBcmdzQ2hl
Y2tBcml0eUVudHJ5OworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyQXJnc05v
Q2hlY2tSZXF1aXJlZEVudHJ5KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyQXJnc1Bv
c3NpYmxlRXh0cmFBcmdzRW50cnkpOworICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5KTsKKyNlbmRpZgorCisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZv
cihFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50cnlQb2lu
dHNbdHlwZV07CisgICAgfQorCisgICAgdm9pZCBzZXRFbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0
eXBlLCBDb2RlUHRyIGVudHJ5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPCBOdW1iZXJP
ZkVudHJ5UG9pbnRUeXBlcyk7CisgICAgICAgIG1fZW50cnlQb2ludHNbdHlwZV0gPSBlbnRyeTsK
KyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRW50cnlGb3IoRW50cnlQb2lu
dFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRFbnRyeVBvaW50
cywgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRU
eXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudCh1bnNpZ25lZCBhcmdDb3VudCkK
KyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAg
ICAgICBBU1NFUlQoYXJnQ291bnQpOworICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFyZ0NvdW50
ID0gbnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0ZvcihhcmdDb3VudCk7CisgICAgICAgIGlmICgh
cmVnaXN0ZXJBcmdDb3VudCB8fCByZWdpc3RlckFyZ0NvdW50ICE9IGFyZ0NvdW50KQorICAgICAg
ICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdzMSArIHJlZ2lzdGVyQXJn
Q291bnQgLSAxKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShhcmdDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eTsKKyNlbmRpZgorICAgIH0KKworICAgIHN0YXRpYyBFbnRyeVBvaW50
VHlwZSByZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50VHlwZShBcmd1bWVudHNMb2NhdGlvbiB0
eXBlKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIEFTU0VSVCh0eXBlICE9IFN0YWNrQXJncyk7CisgICAgICAgIGlmICh0eXBlID09
IFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgICAgICByZXR1cm4gUmVnaXN0
ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RW50cnlQb2ludFR5cGU+KFJlZ2lzdGVyQXJnczEgKyB0eXBlIC0gUmVnaXN0ZXJBcmdzMUlu
UmVnaXN0ZXJzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnc011
c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjbGVhckVudHJpZXMoKQor
ICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07
KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzJiBvcGVyYXRvcj0oY29uc3QgSklURW50cnlQ
b2ludHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZF
bnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IG90aGVyLm1f
ZW50cnlQb2ludHNbaV07CisKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0
ZToKKworICAgIENvZGVQdHIgbV9lbnRyeVBvaW50c1tudW1iZXJPZkVudHJ5VHlwZXNdOworfTsK
KworY2xhc3MgSklURW50cnlQb2ludHNXaXRoUmVmIDogcHVibGljIEpJVEVudHJ5UG9pbnRzIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBDb2RlUmVmOworCisg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmKCkKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKGNvbnN0IEpJVEVudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgICAg
IDogSklURW50cnlQb2ludHMob3RoZXIpCisgICAgICAgICwgbV9jb2RlUmVmKG90aGVyLm1fY29k
ZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKENvZGVSZWYg
Y29kZVJlZiwgY29uc3QgSklURW50cnlQb2ludHMmIG90aGVyKQorICAgICAgICA6IEpJVEVudHJ5
UG9pbnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihjb2RlUmVmKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZiwgQ29kZVB0
ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwKKyAgICAgICAgQ29kZVB0ciBz
dGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgIDogSklURW50cnlQb2ludHMoQ29kZVB0
cigpLCBDb2RlUHRyKCksIENvZGVQdHIoKSwgc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
RW50cnksIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgLCBtX2NvZGVSZWYoY29k
ZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKENvZGVSZWYg
Y29kZVJlZiwgQ29kZVB0ciByZWdpc3RlckFyZ3NOb0NoZWNrc1JlcXVpcmVkRW50cnksCisgICAg
ICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSwgQ29kZVB0ciBy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQXJp
dHlDaGVja05vdFJlcXVpcmVkRW50cnksIENvZGVQdHIgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5
KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKHJlZ2lzdGVyQXJnc05vQ2hlY2tzUmVxdWlyZWRF
bnRyeSwgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSwKKyAgICAgICAgICAgIHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwgc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
RW50cnksCisgICAgICAgICAgICBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgICwg
bV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKworICAgIENvZGVSZWYgY29kZVJlZigp
IHsgcmV0dXJuIG1fY29kZVJlZjsgfQorCitwcml2YXRlOgorICAgIENvZGVSZWYgbV9jb2RlUmVm
OworfTsKKworaW5saW5lIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uRm9yKHVu
c2lnbmVkIGFyZ3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgIGlmICghYXJndW1lbnRDb3VudCkKKyAgICAgICAgcmV0dXJuIFN0
YWNrQXJnczsKKyAgICAKKyAgICBhcmd1bWVudENvdW50ID0gc3RkOjptaW4oTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDEsIGFyZ3VtZW50Q291bnQpOworICAgIAor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcmd1bWVudHNMb2NhdGlvbj4oQXJndW1lbnRzTG9jYXRp
b246OlJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyArIGFyZ3VtZW50Q291bnQgLSAxKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOworICAgIHJldHVybiBTdGFja0FyZ3M7
CisjZW5kaWYKK30KKworaW5saW5lIEVudHJ5UG9pbnRUeXBlIHJlZ2lzdGVyRW50cnlQb2ludFR5
cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1bWVudENvdW50IHx8IGFyZ3VtZW50
Q291bnQgPiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAg
ICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihFbnRyeVBvaW50VHlwZTo6UmVnaXN0ZXJBcmdzMSAr
IGFyZ3VtZW50Q291bnQgLSAxKTsKKyNlbHNlCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNr
QXJnc011c3RDaGVja0FyaXR5OworI2VuZGlmCit9CisKK2lubGluZSBFbnRyeVBvaW50VHlwZSBl
bnRyeVBvaW50VHlwZUZvcihBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudExvY2F0aW9uKQorewor
I2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBpZiAoYXJn
dW1lbnRMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0
Q2hlY2tBcml0eTsKKyAgICAKKyAgICBpZiAoYXJndW1lbnRMb2NhdGlvbiA9PSBSZWdpc3RlckFy
Z3NXaXRoRXh0cmFPblN0YWNrKQorICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNr
QXJpdHk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihFbnRy
eVBvaW50VHlwZTo6UmVnaXN0ZXJBcmdzMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVu
dExvY2F0aW9uIC0gUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzKSk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcmd1bWVudExvY2F0aW9uKTsKKyAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNr
QXJpdHk7CisjZW5kaWYKK30KKworaW5saW5lIFRodW5rRW50cnlQb2ludFR5cGUgdGh1bmtFbnRy
eVBvaW50VHlwZUZvcihBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudExvY2F0aW9uKQoreworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBh
cmd1bWVudExvY2F0aW9uSW5kZXggPSBzdGQ6Om1pbihSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0
YWNrIC0gMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50TG9jYXRpb24pKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oYXJndW1lbnRMb2NhdGlvbklu
ZGV4KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50TG9jYXRpb24pOworICAgIHJl
dHVybiBTdGFja0FyZ3NFbnRyeTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGh1bmtFbnRyeVBvaW50
VHlwZSB0aHVua0VudHJ5UG9pbnRUeXBlRm9yKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpCit7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGFyZ3VtZW50
Q291bnQgPSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKGFyZ3VtZW50Q291bnQpOworICAg
IAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihUaHVua0VudHJ5
UG9pbnRUeXBlOjpSZWdpc3RlcjFBcmdFbnRyeSArIGFyZ3VtZW50Q291bnQgLSAxKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOworICAgIHJldHVybiBTdGFja0FyZ3NF
bnRyeTsKKyNlbmRpZgorfQorCitjbGFzcyBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsK
KyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBDb2RlUmVmOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBUaHVua0VudHJ5UG9pbnRUeXBlOjpU
aHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRz
V2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmKENvZGVSZWYgY29kZVJlZikKKyAgICAgICAgOiBtX2NvZGVSZWYoY29kZVJlZikKKyAg
ICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29uc3Qg
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgICAgICA6IG1fY29k
ZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZFbnRyeVR5cGVzOyBpKyspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRz
W2ldID0gb3RoZXIubV9lbnRyeVBvaW50c1tpXTsKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5
Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vu
dHJ5UG9pbnRzW3R5cGVdOworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3IoQXJndW1lbnRz
TG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gZW50cnlG
b3IodGh1bmtFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudHNMb2NhdGlvbikpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0RW50cnlGb3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlLCBDb2RlUHRyIGVu
dHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0eXBlXSA9IGVudHJ5OworICAgIH0K
KworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihUaHVua0VudHJ5UG9pbnRU
eXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0b2YoSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYsIG1fZW50cnlQb2ludHNbdHlwZV0pOworICAgIH0KKworICAgIHZv
aWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJl
ck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisKKyAgICBDb2RlUmVmIGNvZGVSZWYoKSB7IHJl
dHVybiBtX2NvZGVSZWY7IH0KKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
JiBvcGVyYXRvcj0oY29uc3QgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVy
KQorICAgIHsKKyAgICAgICAgbV9jb2RlUmVmID0gb3RoZXIubV9jb2RlUmVmOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBt
X2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50c1tpXTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29kZVJlZiBtX2NvZGVS
ZWY7CisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJlck9mRW50cnlUeXBlc107Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlm
IC8vIEpJVEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNv
bXBpbGVDVElOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiBKSVQ6OnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiB2
bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
YWJsZSB0byBsb2cgU2hhZG93Q2hpY2tlbiBwcm9sb2d1ZSBwYWNrZXRzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU2ODkKQEAgLTEyOSw3ICsxMjks
OSBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAKICAgICBw
YXRjaEJ1ZmZlci5saW5rKG5hdGl2ZUNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmMpKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG5hdGl2ZSBjYWxsIikpOwor
ICAgIEpJVDo6Q29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJK
SVQgQ1RJIG5hdGl2ZSBjYWxsIikpOworICAgIAorICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dp
dGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBVU0UoSlNWQUxV
RTY0KQogCi1KSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0q
IHZtLCBOYXRpdmVGdW5jdGlvbikKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVQ6OnByaXZhdGVD
b21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24pCiB7Ci0gICAg
cmV0dXJuIHZtLT5nZXRDVElTdHViKG5hdGl2ZUNhbGxHZW5lcmF0b3IpOworICAgIHJldHVybiB2
bS0+Z2V0SklURW50cnlTdHViKG5hdGl2ZUNhbGxHZW5lcmF0b3IpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODkwLDEwICs4OTAsMTQgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aQogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVuY2hlY2tl
ZCgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxl
KCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0ciwgY29kZVB0ckZvckxpbmtpbmc7CiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0g
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVj
a0FyaXR5KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKCFjYWxsTGlua0luZm8tPnByb3ZpZGVzUmVn
aXN0ZXJBbmRTdGFja0FyZ3VtZW50cygpICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdp
c3RlcnMoKSkKKyAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZXhlY3V0YWJsZS0+ZW50
cnlwb2ludEZvcihraW5kLCBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5kaWYKICAg
ICB9IGVsc2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC05
MTQsMTcgKzkxOCw0NCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
CiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7
CiAgICAgICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7Ci0gICAgICAg
IEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBh
cml0eSA9IE11c3RDaGVja0FyaXR5OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0eSA9
IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgIEVudHJ5UG9pbnRUeXBl
IGVudHJ5VHlwZTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIGJvb2wgdXNlU3RhY2tFbnRyeSA9IGNvZGVCbG9jay0+cHJlZmVyc1N0YWNrQXJn
dW1lbnRzKCkgJiYgY2FsbExpbmtJbmZvLT5wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMoKTsKKyNlbmRpZgorICAgICAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWND
YWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisgICAgICAgIHNpemVfdCBjYWxs
ZWVBcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSk7CisgICAgICAgIGlmIChjYWxsZXJBcmd1bWVudENvdW50IDwgY2FsbGVlQXJndW1l
bnRDb3VudCB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygpKSB7CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICAgICAgaWYgKCF1c2VTdGFja0Vu
dHJ5ICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAg
ICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKGtpbmQsIEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291
bnQoY2FsbGVyQXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZv
ckxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0Fy
aXR5KTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgZW50cnlUeXBlID0gU3Rh
Y2tBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgICAgICAgICAodm9pZCkgZnVuY3Rpb25FeGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby0+
YXJndW1lbnRzTG9jYXRpb24oKSkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICAgICAgfSBlbHNlIGlmICghdXNlU3RhY2tFbnRyeSAmJiBjYWxsTGlu
a0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIGlmIChjYWxsZXJB
cmd1bWVudENvdW50ID09IGNhbGxlZUFyZ3VtZW50Q291bnQgfHwgY2FsbGVlQXJndW1lbnRDb3Vu
dCA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAg
ICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRy
eVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWNvZGVQdHJGb3JMaW5raW5nKQorICAgICAgICAgICAgICAgICAgICBjb2RlUHRy
Rm9yTGlua2luZyA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBSZWdp
c3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAv
LyAgUHJlcG9wdWxhdGUgdGhlIGVudHJ5IHBvaW50cyB0aGUgdmlydHVhbCB0aHVuayBtaWdodCB1
c2UuCisgICAgICAgICAgICAodm9pZCkgZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9y
KGtpbmQsIGVudHJ5UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24o
KSkpOworCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVx
dWlyZWQ7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBT
dGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsKICAgICB9CiAgICAg
aWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCiAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
U2VlbigpOwogICAgIGVsc2UKLSAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJ
bmZvLCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0cik7CisgICAgICAgIGxpbmtGb3IoZXhlY0Nh
bGxlZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHJGb3JMaW5raW5n
ID8gY29kZVB0ckZvckxpbmtpbmcgOiBjb2RlUHRyKTsKICAgICAKICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVG
cmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQpAQCAtOTU5LDcgKzk5MCwxMSBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGlmIChl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBNdXN0Q2hlY2tBcml0eSk7CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJz
KCkgPyBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSA6IFN0YWNrQXJnc011c3RDaGVja0FyaXR5
KTsKKyNlbHNlCisgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
U3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTk3MSwxMyArMTAwNiwyOSBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhCiAgICAgICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVudHJ5UG9p
bnRUeXBlIGVudHJ5VHlwZTsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRTdGFja1Nsb3RzID0g
Y2FsbExpbmtJbmZvLT5tYXhOdW1Bcmd1bWVudHMoKTsKLSAgICAgICAgaWYgKGFyZ3VtZW50U3Rh
Y2tTbG90cyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgc2l6ZV90IGNv
ZGVCbG9ja1BhcmFtZXRlckNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7
CisgICAgICAgICAgICAvLyAgUmVnQ0MgVG9kbzogIFRoaXMgbG9naWMgY291bGQgcHJvYmFibHkg
YmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPCBjb2Rl
QmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBlbnRyeVBv
aW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpOworICAgICAgICAg
ICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0
ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAg
ICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0g
UmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1
bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8
IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UKKyAgICAgICAgaWYgKGFyZ3VtZW50U3Rh
Y2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2VuZGlmCisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAg
ICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlw
ZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RGb3IoZXhlYywgKmNhbGxMaW5rSW5mbywg
Y29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCArMTA3MSwxNyBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KICAgICB9CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChjYWxsTGlua0luZm8t
PmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNo
ZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkgaWYgdGhlIGNhbGxlciB3YW50cyBhIHJl
Z2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJp
YyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5KTsKKyAgICAgICAgKHZvaWQp
IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICB9CisjZW5kaWYKICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCi0gICAgICAgIGtpbmQs
IE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICBraW5kLCBTdGFj
a0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpU
YWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVua3MoKQogewogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVDYWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAg
aWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKTsKLSAg
ICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVyYXRvcikuY29kZSgpOworICAgIGlm
ICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRp
dmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxs
aW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gSklURW50cnlQb2lu
dHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIsIG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9
CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSog
dm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0
cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVf
Y29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAoIXZtLT5jYW5Vc2VKSVQoKSkgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZlQ29uc3RydWN0U3R1YiA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3Rf
dHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYobmF0aXZlQ29uc3RydWN0
U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2ZUNvbnN0cnVjdFN0dWIpOworICAgIH0K
KyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwog
fQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChW
TSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtz
OjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAorSklURW50
cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlTdHViKFZNKiB2bSwgSklURW50cnlH
ZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5h
ZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKSk7CisgICAgaWYgKGVudHJ5Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24gdGhyZWFkIGNhbiBvbmx5IHJldHJp
ZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVh
ZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAg
ICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworSklUSlNDYWxsVGh1
bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0q
IHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJl
c3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlTdHViTWFwLmFkZChnZW5lcmF0b3IsIEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkpOworICAgIGlmIChlbnRyeS5pc05ld0Vu
dHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBl
eGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9IGdlbmVyYXRvcih2bSk7CisgICAgfQor
ICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHZvaWQgSklUVGh1bmtzOjpm
aW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKIHsKICAgICBhdXRvKiBuYXRp
dmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpo
b3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29u
c3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAotTmF0
aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVy
YXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9y
LCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJl
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFk
KCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsKQEAgLTEwMywxOSArMTMxLDE5
IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0
cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5lcmF0b3IpIHsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6
Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0g
Z2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShKSVQ6OmNvbXBpbGVDVElOYXRp
dmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAg
Zm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNh
bGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAg
ICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRp
dmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CisgICAg
UmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwog
ICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25z
dHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9z
dEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvciwg
bmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwog
ICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
VGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJp
bmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIo
Vk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJh
dG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0
dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFr
LmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgogICAgIEpJVFRodW5rcygpOwogICAgIHZp
cnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2
ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0
KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5TmF0aXZlQ2FsbChWTSop
OworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSop
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVUYWlsQ2FsbChWTSopOyAgICAK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRU
YWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBU
aHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5U3R1YihW
TSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0
aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRv
cik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRo
dW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgTmF0aXZl
RXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZvaWQgY2xlYXJI
b3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3MywxMCBAQCBwcml2YXRlOgogICAgIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9jdGlTdHViTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRy
eVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1faml0RW50cnlTdHViTWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciwgSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0VudHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtFbnRyeVN0dWJNYXA7CiAKICAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhv
c3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7
CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgSnVt
cCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQpOworICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCkBAIC0xNjMsMTIgKzE2NCwx
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJv
LCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQogICAgIAorICAgIGlubGluZSBKU0ludGVy
ZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdEludDMyKFJlZ2lzdGVy
SUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgcmVn
LCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcs
IHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgaW5saW5lIEpTSW50
ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKHVuc2lnbmVkIHZp
cnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGxvYWQ2
NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0KTsKLSAgICAgICAgSnVtcCBy
ZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAg
ICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50MzIoZHN0KTsKICAgICB9CiAKICAgICBp
bmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91Ymxl
KHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdpc3Rl
cklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lzdGVycygpCit7CisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZm9yICh1bnNpZ25lZCBh
cmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAgICBHUFJSZWcgYXJndW1lbnRSZWcgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgpOworCisgICAgICAgIGlmIChhcmd1bWVu
dFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmVzdWx0LnNldChhcmd1bWVudFJl
Zyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJTZXQg
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVn
aXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVj
aWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUs
IGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIHN0YXRpYyBSZWdpc3RlclNldCBh
cmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3
aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBSZWdpc3RlclNldCB2bUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQg
YW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0
aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMo
KTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBERkcgSklULgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Mzks
MjEgKzUzOSwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigp
LCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmKQorc3Rh
dGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1bmtFbnRyeVBvaW50cykKIHsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJlZi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24o
KSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBvaW50cy5lbnRyeUZvcihjYWxsTGlua0lu
Zm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAotc3RhdGljIHZvaWQgbGlua1Nsb3dGb3Io
Vk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJh
dG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIGxp
bmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRDVElTdHViKGdlbmVyYXRvcikpOwor
ICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKKyAgICBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5m
bywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklU
U3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBjYWxs
TGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNv
ZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKIHZvaWQgbGlua0ZvcigKQEAgLTYx
NSw3ICs2MTUsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAogICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxs
TGlua0luZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZlcnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJ
bmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGlj
IHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2RlUmVmKQogewogICAgIGlmIChjYWxsTGlu
a0luZm8uaXNEaXJlY3QoKSkgewogICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJDb2RlQmxvY2so
KTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIHVubGlua0ZvcihWTSYgdm0sIENhbGxMaW5rSW5m
byYgY2FsCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRh
TG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksICJc
biIpOwogICAgIAotICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0
dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlu
a0luZm8sIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBAIC02NTQsOSArNjU0LDkgQEAgdm9pZCBs
aW5rVmlydHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNv
ZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgdmlydHVhbCBjYWxsIGF0ICIsICpj
YWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZU9yaWdpbigpLCAi
XG4iKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmly
dHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJ
bmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0g
ICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxU
aHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksICp2bSwgbnVsbHB0
ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNzA1LDYgKzcwNSw3IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExpbmtJbmZvLnNldEhhc1NlZW5DbG9zdXJl
KCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsKKyAg
ICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAg
ICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtNzE2LDcgKzcxNyw3IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwog
ICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0aGVyIGJlY2F1
c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1pc21hdGNoLAog
ICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhp
bmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBl
eGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7
CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENvdW50IDwgc3Rh
dGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJ
bmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhlYywg
Y2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBA
IC03MzcsNyArNzM4LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICB9CiAgICAg
CiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2FsbExpbmtJbmZv
LmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5S
ZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNhbGxlckNvZGVC
bG9jayk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKQEAgLTc1
OSw2ICs3NjMsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSOwogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgICAgIHNjcmF0
Y2hHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgICAgIGVsc2UgaWYgKGNh
bGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgc2NyYXRjaEdQ
UiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNjcmF0
Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAg
ICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhl
Y3V0YWJsZSBpbiBzY3JhdGNoR1BSLgpAQCAtODI0LDEzICs4MzAsMjMgQEAgdm9pZCBsaW5rUG9s
eW1vcnBoaWNDYWxsKAogICAgIEdQUlJlZyBmYXN0Q291bnRzQmFzZUdQUjsKICAgICBpZiAoZnJh
bWVTaHVmZmxlcikKICAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPSBmcmFtZVNodWZmbGVyLT5h
Y3F1aXJlR1BSKCk7CisgICAgZWxzZSBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0
ZXJzKCkpCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUklu
Zm86Om5vbkFyZ0dQUjE7CisjZWxzZQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUklu
Zm86OnJlZ1QwOworI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BS
ID0KICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVH
UFIsIGNvbXBhcmlzb25WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDMpOwogICAgIH0KLSAgICBzdHVi
Sml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBm
YXN0Q291bnRzQmFzZUdQUik7CisgICAgaWYgKGZhc3RDb3VudHMpCisgICAgICAgIHN0dWJKaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZmFzdENvdW50cy5nZXQoKSksIGZhc3RD
b3VudHNCYXNlR1BSKTsKICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlz
VGFpbENhbGwoKSkKICAgICAgICAgc3R1YkppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisK
KyAgICBpbmNyZW1lbnRDb3VudGVyKCZzdHViSml0LCBWTTo6UG9seW1vcnBoaWNDYWxsKTsKKwog
ICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29tcGFyaXNvblZhbHVlR1BSLCBjYXNlVmFs
dWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBk
b25lOwogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewpAQCAtODM5
LDggKzg1NSwzMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIENhbGxWYXJp
YW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CiAgICAgICAgIAog
ICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkp
OworCisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hl
Y2tOb3RSZXF1aXJlZDsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgewor
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5j
b2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAg
ICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICAgICAgICAgIGlmIChjYWxsZWVBcmd1bWVu
dENvdW50ID09IGNhbGxlckFyZ3VtZW50Q291bnQgfHwgY2FsbGVlQXJndW1lbnRDb3VudCA+PSBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAg
ICAgICBlbnRyeVR5cGUgPSBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVu
dHJ5Rm9yQXJnQ291bnQgPSBKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1
bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNh
bGwoZW50cnlGb3JBcmdDb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlUHRyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gZW50cnlGb3JBcmdDb3VudDsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBl
ID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdz
UG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90
UmVxdWlyZWQpOworICAgICAgICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJ
VENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIEFTU0VS
VChjb2RlUHRyKTsKICAgICAgICAgCiAgICAgICAgIGlmIChmYXN0Q291bnRzKSB7CiAgICAgICAg
ICAgICBzdHViSml0LmFkZDMyKApAQCAtODQ4LDcgKzg4OCw3IEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoZmFzdENvdW50
c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewotICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIo
c3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5z
bmFwc2hvdChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpLnByZXBhcmVGb3JUYWls
Q2FsbCgpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFy
VGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgp
KSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKQEAgLTg2
OSwxOSArOTA5LDIwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1Zh
bHVlUmVncyhHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApKTsKICNlbHNlCi0gICAgICAg
IGZyYW1lU2h1ZmZsZXItPnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86
OnJlZ1QwKSk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSA9
PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVl
UmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpKTsKICNlbmRpZgog
ICAgICAgICBmcmFtZVNodWZmbGVyLT5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgIC8vICBSZWdDQyBUb2RvOiAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVn
VDApOyAgLy8gIE1heSBuZWVkIGZvciAzMiBiaXQKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIEdQUkluZm86OnJlZ1QxKTsKICNlbmRpZgogICAgIH0KLSAgICBzdHViSml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdU
Mik7Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQUkluZm86
OnJlZ1Q0KTsKLSAgICAKLSAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKEdQUkluZm86OnJlZ1Q0KTsKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVjdXRhYmxlQWRk
cmVzcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgc3R1YkppdC5yZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25BcmdHUFIxKTsKKworICAgIHN0dWJKaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNhbGxMaW5rSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBzbG93ID0gc3R1YkppdC5q
dW1wKCk7CiAgICAgICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0
LCBjYWxsZXJDb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CkBAIC05MDIsNyArOTQz
LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJbmZv
LmhvdFBhdGhPdGhlcigpLmxhYmVsQXRPZmZzZXQoMCkpOwotICAgIHBhdGNoQnVmZmVyLmxpbmso
c2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2Fs
bFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua1BvbHltb3Jw
aGljQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9j
YXRpb24oKSkpKTsKICAgICAKICAgICBhdXRvIHN0dWJSb3V0aW5lID0gYWRvcHRSZWYoKm5ldyBQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERV9GT1IoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFs
aXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoSklUKQogCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC0zNywxOCArMzgsNDMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVCA6IHB1YmxpYyBKU0ludGVyZmFjZUpJVCB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IFRoaXNBcmd1bWVudCA9IC0x
OwotICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291
bnQpCisgICAgICAgIGVudW0gQXJnTG9jYXRpb24geyBPblN0YWNrLCBJblJlZ2lzdGVycyB9Owor
CisgICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoVk0qIHZtLCBpbnQgZXhwZWN0ZWRBcmdDb3Vu
dCwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBBc3NlbWJs
eUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgQXJnTG9jYXRpb24gYXJnTG9jYXRpb24gPSBPblN0YWNr
KQogICAgICAgICAgICAgOiBKU0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewotICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVy
aWFsaXplVGFnUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUg
dGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAgICAgICAgIG1fZmFpbHVyZXMu
YXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisjaWYgIU5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzcGlsbFR5cGUpOworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGFyZ0xvY2F0aW9u
KTsKKyNlbHNlCisgICAgICAgICAgICBpZiAoYXJnTG9jYXRpb24gPT0gSW5SZWdpc3RlcnMpIHsK
KyAgICAgICAgICAgICAgICBtX3N0YWNrQXJndW1lbnRzRW50cnkgPSBsYWJlbCgpOworICAgICAg
ICAgICAgICAgIGZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7
CisgICAgICAgICAgICAgICAgbV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIGVt
aXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCisgICAg
ICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50
ICsgMSkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3BpbGxBcmd1
bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShleHBlY3RlZEFyZ0NvdW50ICsgMSwg
c3BpbGxUeXBlKTsKKyAgICAgICAgICAgICAgICBtX3N0YWNrQXJndW1lbnRzRW50cnkgPSBsYWJl
bCgpOworI2VuZGlmCisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAg
ICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9m
IGFyZ3VtZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBUcnVzdGVk
SW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSkK
ICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQ
cm9sb2d1ZSgpOworICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gTGFiZWwoKTsK
KyNlbmRpZgogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgICAg
IGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KQEAgLTk0
LDExICsxMjAsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsb2FkSW50MzJBcmd1
bWVudChhcmd1bWVudCwgZHN0LCBjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgICAgIG1fZmFp
bHVyZXMuYXBwZW5kKGNvbnZlcnNpb25GYWlsZWQpOwogICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBjaGVja0pTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBSZWdpc3RlcklEIGFyZ3VtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxs
KGFyZ3VtZW50KSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1
cmUoTm90RXF1YWwsCisgICAgICAgICAgICAgICAgQWRkcmVzcyhhcmd1bWVudCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICB2bS5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRGYWlsdXJl
KGNvbnN0IEp1bXAmIGZhaWx1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMu
YXBwZW5kKGZhaWx1cmUpOwogICAgICAgICB9CisKKyAgICAgICAgdm9pZCBsaW5rRmFpbHVyZUhl
cmUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmxpbmsodGhpcyk7CisgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmNsZWFyKCk7CisgICAgICAgIH0KKwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIHZvaWQgcmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHNyYykKICAgICAgICAg
ewpAQCAtMTY0LDEzICsyMDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXQo
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZp
bmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtL
aW5kKQorICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmluYWxpemUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhV
TktfSUQpOwogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2ZhaWx1cmVzLCBDb2RlTG9j
YXRpb25MYWJlbChmYWxsYmFjaykpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fY2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhtX2NhbGxzW2ldLmZpcnN0LCBtX2NhbGxzW2ldLnNlY29uZCk7Ci0gICAgICAgICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgJXMi
LCB0aHVua0tpbmQpKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNr
RW50cnk7CisgICAgICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisg
ICAgICAgICAgICAgICAgc3RhY2tFbnRyeSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9zdGFj
a0FyZ3VtZW50c0VudHJ5KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZWdp
c3RlckVudHJ5OworICAgICAgICAgICAgaWYgKG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeS5pc1Nl
dCgpKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mKG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBlbnRyeSA9IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6
ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIGlmIChtX3N0YWNr
QXJndW1lbnRzRW50cnkuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVy
QXJndW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZihlbnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVn
aXN0ZXJFbnRyeSwgc3RhY2tFbnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihlbnRyeSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2Rl
KCksIGVudHJ5LmNvZGUoKSwgc3RhY2tFbnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5
LmNvZGUoKSwgZW50cnkuY29kZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc3VtZXMg
dGhhdCB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZpcnN0IGFy
Z3VtZW50CkBAIC0yMDcsNiArMjY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhaWx1cmVzOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5OworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFja0FyZ3VtZW50c0VudHJ5OwogICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPENhbGwsIEZ1bmN0aW9uUHRyPj4gbV9jYWxsczsKICAgICB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIFZNOwogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgSklURW50cnlQb2lu
dHNXaXRoUmVmOworY2xhc3MgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY7CiAKIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmICgqVGh1bmtHZW5lcmF0b3IpKFZNKik7Cit0eXBl
ZGVmIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiAoKkpJVEVudHJ5R2VuZXJhdG9yKShWTSopOwordHlw
ZWRlZiBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiAoKkpJVENhbGxUaHVua0VudHJ5
R2VuZXJhdG9yKShWTSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw2ICs3NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dF
eGNlcHRpb25Gcm9tCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiVGhy
b3cgZXhjZXB0aW9uIGZyb20gY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CiB9CiAKK3N0YXRpYyB2
b2lkIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShDQ2FsbEhlbHBlcnMmIGppdCwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3Vu
dF0pCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTOyBhcmdJbmRleC0tID4gMDspIHsKKyAgICAgICAgZW50cnlQb2ludHNbdGh1bmtF
bnRyeVBvaW50VHlwZUZvcihhcmdJbmRleCArIDEpXSA9IGppdC5sYWJlbCgpOworICAgICAgICBq
aXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICB9CisKKyNp
ZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAgIGppdC5lbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJH
Q09VTlQpCisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCksIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpOworI2VuZGlmCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShqaXQpOworICAgIFVOVVNF
RF9QQVJBTShlbnRyeVBvaW50cyk7CisjZW5kaWYKKyAgICBlbnRyeVBvaW50c1tTdGFja0FyZ3Nd
ID0gaml0LmxhYmVsKCk7Cit9CisKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIENDYWxs
SGVscGVycyYgaml0LCBWTSogdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VDbGkgc2xvd1BhdGhGdW5j
dGlvbikKIHsKQEAgLTg4LDcgKzEwOSw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAg
IC8vIE1vdmluZyB0aGUgc3RhY2sgZG93biBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCBi
eXRlcyBnaXZlcyB1cyByb29tIGZvciBvdXIgMyBhcmd1bWVudHMKICAgICAvLyBhbmQgc3BhY2Ug
Zm9yIHRoZSAxNiBieXRlIHJldHVybiBhcmVhLgogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDMyKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTAwLDcgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQ
YXRoRm9yKAogI2Vsc2UKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAg
ICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Ci0gICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpyZWdUMik7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpub25BcmdHUFIwKTsK
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQ
b2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxs
KEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTI3LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHNs
b3dQYXRoRm9yKAogICAgIGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7CiAgICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0
aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQogICAgIC8vIHNhdmUgdGhlIHJldHVybiBh
ZGRyZXNzIHRvIHRoZSBjYWxsIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2Fs
bApAQCAtMTM1LDQ1ICsxNTYsMTUzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRo
dW5rR2VuZXIKICAgICAvLyB0byBiZSBpbiByZWdUMC9yZWdUMSAocGF5bG9hZC90YWcpLCB0aGUg
Q2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeQogICAgIC8vIGJlZW4gYWRqdXN0ZWQsIGFuZCBhbGwg
b3RoZXIgcmVnaXN0ZXJzIHRvIGJlIGF2YWlsYWJsZSBmb3IgdXNlLgogICAgIENDYWxsSGVscGVy
cyBqaXQodm0pOwotICAgIAorCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRz
W1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50
c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50cyk7CiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwg
b3BlcmF0aW9uTGlua0NhbGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsICgiTGluayBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBz
bG93IHBhdGggdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYg
Y2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJl
Zik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5k
ZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAg
Y2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5
cGU+KGVudHJ5SW5kZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRy
eVBvaW50c1tlbnRyeUluZGV4XSkpOworICAgIH0KKworICAgIHJldHVybiBjYWxsRW50cnlQb2lu
dHM7Cit9CisKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxs
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBv
biB0aGUgc3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKKyAgICAv
LyBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtl
IGEgQysrIGZ1bmN0aW9uIGNhbGwKKyAgICAvLyB0byBwZXJmb3JtIGxpbmtpbmcgYW5kIGxhenkg
Y29tcGlsYXRpb24gaWYgbmVjZXNzYXJ5LiBXZSBleHBlY3QgdGhlIENhbGxMaW5rSW5mbworICAg
IC8vIHRvIGJlIGluIEdQUkluZm86Om5vbkFyZ0dQUjAsIHRoZSBjYWxsZWUgdG8gYmUgaW4gYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLAorICAgIC8vIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBh
bHJlYWR5IGJlZW4gYWRqdXN0ZWQsIGFuZCBhcmd1bWVudHMgaW4gYXJndW1lbnQgcmVnaXN0ZXJz
CisgICAgLy8gYW5kL29yIGluIHRoZSBzdGFjayBhcyBhcHByb3ByaWF0ZS4KKyAgICBDQ2FsbEhl
bHBlcnMgaml0KHZtKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2lu
dHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1l
bnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIxKTsgLy8gU2F2ZSBjYWxsZWUn
cyBmcmFtZSBwb2ludGVyCisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7
CisKKyAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnNl
dHVwQXJndW1lbnRzKEdQUkluZm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFy
Z3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpOworICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCk7CisgICAgaml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9y
ZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKwor
ICAgIC8vIGxvYWQgInRoaXMiCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRC
ZWZvcmVQcm9sb2d1ZSgwLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKSk7
CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmlsbFVuZGVmaW5lZFtOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTXTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0lu
ZGV4ID0gMTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdID0gaml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSk7CisgICAgICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVn
aXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGRvbmVGaWxsaW5nID0gaml0Lmp1bXAoKTsKKworICAgIGZvciAodW5zaWdu
ZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVmaW5lZFthcmdJbmRl
eF0ubGluaygmaml0KTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICB9CisKKyAgICBkb25lRmlsbGluZy5saW5r
KCZqaXQpOworI2VuZGlmCisKKworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGRpcmVjdCBj
YWxsIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxF
bnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRl
eCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBj
YWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlw
ZT4oZW50cnlJbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7CisgICAgfQorICAg
IAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZvciBjbG9zdXJlIG9wdGlt
aXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYgeW91J3JlIHVzaW5nIGNs
b3N1cmVzIGZvcgogLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlvdSdyZSBnb2luZyB0byBs
b3NlIGJpZyB0aW1lIGFueXdheS4KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0KHZtKTsKICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50
cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVy
QXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsKKwogICAgIHNsb3dQYXRoRm9y
KGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwpOwogICAgIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBwb2x5bW9ycGhpYyBjYWxsIHNsb3cg
cGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1
bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY2FsbEVudHJ5UG9p
bnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZik7CisgICAgCisg
ICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdzOyBlbnRyeUluZGV4IDwgIFRo
dW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7CisgICAgICAgIGNhbGxFbnRy
eVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRy
eUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNb
ZW50cnlJbmRleF0pKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNhbGxFbnRyeVBvaW50czsK
IH0KIAogLy8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWVnYW1vcnBo
aWMgdmlydHVhbCBjYWxsIHZzLiBhIHNsb3cKIC8vIHBhdGggdmlydHVhbCBjYWxsIHNvIHRoYXQg
d2UgY2FuIGVuYWJsZSBmYXN0IHRhaWwgY2FsbHMgZm9yIG1lZ2Ftb3JwaGljCiAvLyB2aXJ0dWFs
IGNhbGxzIGJ5IHVzaW5nIHRoZSBzaHVmZmxlci4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg4MzEKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1
bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKK0pJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvKQogewotICAgIC8vIFRoZSBjYWxsZWUgaXMgaW4gcmVnVDAgKGZvciBKU1ZB
TFVFMzJfNjQsIHRoZSB0YWcgaXMgaW4gcmVnVDEpLgotICAgIC8vIFRoZSByZXR1cm4gYWRkcmVz
cyBpcyBvbiB0aGUgc3RhY2ssIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxsIGhlbmNl
Ci0gICAgLy8ganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0
byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZQotICAgIC8vIG1ha2UgYSBDKysgZnVuY3Rpb24gY2Fs
bCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KKyAgICAvLyBUaGUgY2FsbGVlIGlz
IGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSAoZm9yIEpTVkFMVUUzMl82NCwgaXQgaXMg
aW4gcmVnVDE6cmVnVDApLgorICAgIC8vIFRoZSBDYWxsTGlua0luZm8gaXMgaW4gR1BSSW5mbzo6
bm9uQXJnR1BSMC4KKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrLCBv
ciBpbiB0aGUgbGluayByZWdpc3Rlci4KKyAgICAvLy8gV2Ugd2lsbCBoZW5jZSBqdW1wIHRvIHRo
ZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRoZSBjYWxsCisgICAgLy8g
ZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsIHRvIHRoZSBhcHByb3ByaWF0
ZSBKSVQgb3BlcmF0aW9uLgogCiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CiAgICAgCiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAKLSAgICAvLyBUaGlzIGlzIGEg
c2xvdyBwYXRoIGV4ZWN1dGlvbiwgYW5kIHJlZ1QyIGNvbnRhaW5zIHRoZSBDYWxsTGlua0luZm8u
IENvdW50IHRoZQotICAgIC8vIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxlci4K
KworICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJSZWcgY2FsbGVlVGFnUmVnID0gR1BSSW5mbzo6
cmVnVDE7CisjZW5kaWYKKyAgICBHUFJSZWcgdGFyZ2V0UmVnID0gR1BSSW5mbzo6bm9uQXJnR1BS
MTsKKyAgICAvLyBUaGlzIGlzIHRoZSBDYWxsTGlua0luZm8qIG9uIGVudHJ5IGFuZCB1c2VkIGxh
dGVyIGFzIGEgdGVtcC4KKyAgICBHUFJSZWcgY2FsbExpbmtJbmZvQW5kVGVtcFJlZyA9IEdQUklu
Zm86Om5vbkFyZ0dQUjA7CisKKyAgICBqaXQuZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1l
QmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcmVnaXN0ZXJFbnRyeSA9IGppdC5s
YWJlbCgpOworI2VuZGlmCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpWaXJ0dWFs
Q2FsbCk7CisKKyAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4ZWN1dGlvbi4gQ291bnQgdGhl
IHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxlci4KICAgICBqaXQuYWRkMzIoCiAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLAotICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0
aENvdW50KCkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0Fu
ZFRlbXBSZWcsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aENvdW50KCkpKTsKIAogICAg
IC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZvciBlbGltaW5hdGluZyB0aGVzZSBj
aGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERGRyBrbm93cyB0aGF0IHRoZSB2YWx1
ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVseSBhIGZ1bmN0aW9uLgpAQCAtMTgx
LDU0ICszMTAsNjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTQog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQuYnJh
bmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIGNhbGxlZVJlZywgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAjZWxz
ZQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJyYW5jaDMyKAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVUYWdSZWcsCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogI2VuZGlmCi0gICAgc2xv
d0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rp
b25UeXBlKSk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoY2FsbGVl
UmVnLCBKU0Z1bmN0aW9uVHlwZSkpOwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUg
YSBKU0Z1bmN0aW9uLgogICAgIAogICAgIGppdC5sb2FkUHRyKAotICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZSgpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCisgICAg
ICAgIHRhcmdldFJlZyk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCBFeGVjdXRhYmxlQmFzZTo6b2Zm
c2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKLSAg
ICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBH
UFJJbmZvOjpyZWdUNCkpOworICAgICAgICAgICAgdGFyZ2V0UmVnLCBFeGVjdXRhYmxlQmFzZTo6
b2Zmc2V0T2ZFbnRyeUZvcigKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8uc3BlY2lhbGl6
YXRpb25LaW5kKCksCisgICAgICAgICAgICAgICAgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJ
bmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSksCisgICAgICAgIHRhcmdldFJlZyk7CisgICAgc2xv
d0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgdGFyZ2V0
UmVnKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2Nr
LCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxsLgogICAg
IAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQg
Y29kZS4KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCk7Cisg
ICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgdGFyZ2V0UmVnKTsKICAgICBpZiAoY2FsbExp
bmtJbmZvLmlzVGFpbENhbGwoKSkgewotICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2Fs
bFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcpOworICAgICAgICBqaXQucHJlcGFy
ZUZvclRhaWxDYWxsU2xvdyh0YXJnZXRSZWcpOwogICAgIH0KLSAgICBqaXQuanVtcChHUFJJbmZv
OjpyZWdUNCk7Ci0KKyAgICBqaXQuanVtcCh0YXJnZXRSZWcpOwogICAgIHNsb3dDYXNlLmxpbmso
JmppdCk7Ci0gICAgCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpWaXJ0dWFsU2xv
d0NhbGwpOworCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93IGFueXRoaW5nLCBzbyByZXZlcnQg
dG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgorICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9G
cmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3Bl
cmF0aW9uVmlydHVhbENhbGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCi0gICAg
ICAgIHBhdGNoQnVmZmVyLAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsCiAgICAgICAgICgiVmlydHVhbCAlcyBzbG93IHBhdGggdGh1
bmsiLAogICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6UmVndWxh
ciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8g
InRhaWwgY2FsbCIgOiAiY29uc3RydWN0IikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmKGNvZGVSZWYpOworCisgICAgY2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJn
c0VudHJ5LCBjb2RlUmVmLmNvZGUoKSk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lzdGVyRW50cnlQ
dHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50cnkpOworCisgICAgZm9yICh1
bnNpZ25lZCBlbnRyeUluZGV4ID0gUmVnaXN0ZXIxQXJnRW50cnk7IGVudHJ5SW5kZXggPCAgVGh1
bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspCisgICAgICAgIGNhbGxFbnRyeVBv
aW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUlu
ZGV4KSwgcmVnaXN0ZXJFbnRyeVB0cik7CisjZW5kaWYKKworICAgIHJldHVybiBjYWxsRW50cnlQ
b2ludHM7CiB9CiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRlclZpYUNhbGwsIEVudGVyVmlh
SnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgfTsKIAotc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZtLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBlIGVudHJ5VHlwZSA9IEVudGVy
VmlhQ2FsbCkKK3N0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlRm9yR2VuZXJhdG9y
KFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5VHlwZSBlbnRy
eVR5cGUgPSBFbnRlclZpYUNhbGwpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFi
bGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0cy4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5CkBAIC0yMzcsOCArMzgxLDE0
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAKICAgICBK
U0ludGVyZmFjZUpJVCBqaXQodm0pOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHN0YWNr
QXJnc0VudHJ5OworCiAgICAgc3dpdGNoIChlbnRyeVR5cGUpIHsKICAgICBjYXNlIEVudGVyVmlh
Q2FsbDoKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJv
bG9ndWUoKTsKKworICAgICAgICBzdGFja0FyZ3NFbnRyeSA9IGppdC5sYWJlbCgpOworCiAgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3M6CkBAIC0zNzksMjUgKzUyOSwzMyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JB
TF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgibmF0
aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRU
YWdzID8gIlRhaWwgV2l0aCBTYXZlZCBUYWdzICIgOiBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1w
V2l0aG91dFNhdmVkVGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2ZWQgVGFncyAiIDogIiIsIHRvQ1N0
cmluZyhraW5kKS5kYXRhKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRy
eVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFn
cyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBX
aXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAg
aWYgKGVudHJ5VHlwZSA9PSBFbnRlclZpYUNhbGwpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHN0YWNrQXJnc0Vu
dHJ5KTsKKworICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNv
ZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQ
dHIsIHN0YWNrRW50cnlQdHIpOworICAgIH0KKworICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dp
dGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpKTsKKwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJu
IG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwpOwogfQogCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBu
YXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRU
YWdzKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50
ZXJWaWFKdW1wV2l0aFNhdmVkVGFncykuY29kZVJlZigpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9yKFZNKiB2bSkKIHsK
LSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFK
dW1wV2l0aG91dFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwg
Q29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpLmNvZGVSZWYoKTsKIH0K
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSogdm0p
CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKiB2bSkK
IHsKICAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ29uc3RydWN0KTsK
IH0KQEAgLTUzNiw2ICs2OTQsNDMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHVucmVhY2hhYmxl
R2VuZXJhdAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoInVucmVhY2hh
YmxlIHRodW5rIikpOwogfQogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKFNwZWNpYWxpemVkVGh1
bmtKSVQmIGppdCwgVk0qIHZtKQoreworICAgIC8vIGxvYWQgc3RyaW5nCisgICAgR1BSUmVnIHRo
aXNSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKTsKKyAgICBHUFJS
ZWcgaW5kZXhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgyKTsKKyAg
ICBHUFJSZWcgbGVuZ3RoUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
Myk7CisgICAgR1BSUmVnIHRlbXBSZWcgPSBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIw
OworCisgICAgaml0LmNoZWNrSlNTdHJpbmdBcmd1bWVudCgqdm0sIHRoaXNSZWcpOworCisgICAg
Ly8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2Yg
bG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKKyAgICBqaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhP
ZmZzZXQoKSksIGxlbmd0aFJlZyk7CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0KCkpLCB0ZW1w
UmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCB0ZW1wUmVnKSk7CisKKyAgICAvLyBsb2FkIGluZGV4CisgICAgaml0Lm1vdmUo
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSksIGluZGV4UmVnKTsKKyAgICBq
aXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdEludDMyKGluZGV4UmVnKSk7CisKKyAg
ICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVsdGFuZW91c2x5IGZpbHRlciBuZWdh
dGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0IGFyZSB0b28gbGFyZ2UKKyAgICBq
aXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgaW5kZXhSZWcsIGxlbmd0aFJlZykpOworCisgICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyCisg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgaXMxNkJpdDsKKyAgICBTcGVjaWFsaXpl
ZFRodW5rSklUOjpKdW1wTGlzdCBjb250OEJpdDsKKyAgICAvLyBMb2FkIHRoZSBzdHJpbmcgZmxh
Z3MKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wUmVnLCBTdHJp
bmdJbXBsOjpmbGFnc09mZnNldCgpKSwgbGVuZ3RoUmVnKTsKKyAgICBqaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCB0
ZW1wUmVnKTsKKyAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBsZW5ndGhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5n
SW1wbDo6ZmxhZ0lzOEJpdCgpKSkpOworICAgIGppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHRlbXBSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUsIDApLCB0
ZW1wUmVnKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgaXMxNkJpdC5s
aW5rKCZqaXQpOworICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0ZW1w
UmVnLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgdGVtcFJlZyk7Cisg
ICAgY29udDhCaXQubGluaygmaml0KTsKK30KKyNlbHNlCiBzdGF0aWMgdm9pZCBzdHJpbmdDaGFy
TG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKIHsKICAgICAvLyBsb2FkIHN0
cmluZwpAQCAtNTY1LDYgKzc2MCw3IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2FkKFNwZWNp
YWxpemVkVGgKICAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNUd28sIDApLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAg
Y29udDhCaXQubGluaygmaml0KTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBjaGFyVG9TdHJp
bmcoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0sIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIHNyYywgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZHN0LCBNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBzY3JhdGNoKQogewpAQCAtNTc0LDM0ICs3NzAsNjkgQEAgc3RhdGljIHZv
aWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bgogICAgIGppdC5hcHBlbmRGYWlsdXJlKGpp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBkc3QpKTsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFs
aXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGpp
dCwgdm0pOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdH
UFIwKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7CisgICAgaml0LnNwaWxsQXJndW1lbnRS
ZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5KTsKKyAgICBq
aXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNvZGVBdCIpOworI2Vsc2UK
ICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQo
aml0LCB2bSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
KTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENh
bGwodm0pLCAiY2hhckNvZGVBdCIpOworI2VuZGlmCiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hh
ckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNz
ZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OkluUmVnaXN0
ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0LCB2bSk7CisgICAgY2hhclRvU3Ry
aW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1
bWVudCgzKSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1
cm5WYWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFy
Z3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSk7
CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5h
bGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNoYXJBdCIpOworI2Vs
c2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxv
YWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWls
Q2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVm
IGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBl
cnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5SZWdpc3RlcnMpOworICAg
IC8vIGxvYWQgY2hhciBjb2RlCisgICAgaml0Lm1vdmUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoMSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjApOworICAgIGpp
dC5hcHBlbmRGYWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6bm9uQXJnR1BSMCkpOworCisgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVk
VGh1bmtKSVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BS
LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7CisgICAgaml0LnJldHVy
bkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0Lmxp
bmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgy
LCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxsKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQu
anVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
VGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZWxzZQorICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxsKTsKICAgICAvLyBsb2Fk
IGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWls
Q2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKKyNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
Y2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZ0p1bXA7CkBAIC02
MjIsMTEgKzg1MywxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRv
CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImNsejMyIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHNxcnRUaHVua0dlbmVyYXRvcihW
TSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICgh
aml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5h
dGl2ZUNhbGwodm0pOwogCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0
LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6ZnBSZWdUMCk7CkBAIC03ODIsMTIgKzEwMTMsMTIgQEAgZGVmaW5lVW5hcnlEb3VibGVP
cFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIGhhbGZDb25zdGFudCA9IDAu
NTsKICAgICAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsK
ICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm9uSW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGZsb29yKSB8
fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0
aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIG5vbkludEp1bXAubGluaygmaml0KTsKQEAgLTgyNSwx
MSArMTA1NiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dlbmVyYXRvCiAg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImZsb29yIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5h
cnlEb3VibGVPcFdyYXBwZXIoY2VpbCkgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkK
LSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRD
b2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4g
dm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtODQ4LDExICsxMDc5LDExIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IKICAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2VpbCIpOwogfQogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1
bmMpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50
cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwog
ICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
bm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwKTsKQEAgLTg3MSwxMSArMTEwMiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNU
aHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBy
b3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwg
MSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihqc1JvdW5kKSB8fCAhaml0LnN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9hZEludDMy
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAg
IGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC05MDUsMzcg
KzExMzYsMzcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0bwogICAg
IHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSks
ICJyb3VuZCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
IHsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpCi0gICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0
RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7
CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0
RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAg
ICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3Jh
cHBlcihleHApKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVU
YWlsQ2FsbCh2bSksICJleHAiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5r
R2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBsb2dUaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpKQotICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0
U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0
U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVu
dCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlE
b3VibGVPcFdyYXBwZXIobG9nKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAibG9nIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBhYnNUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYWJzVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSkKLSAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJz
LT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB1bnNp
Z25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7
CkBAIC05ODgsNyArMTIxOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVy
YXRvcigKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFp
bENhbGwodm0pLCAiYWJzIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGltdWxUaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDIpOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZzBKdW1wOwpAQCAtMTAxOSwxMSArMTI1MCwxMSBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yCiAgICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImltdWwiKTsK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDApOwogICAgIGlmICghaml0LnN1cHBvcnRz
RmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7
CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5lbWl0UmFuZG9tVGh1bmsoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDApOwpAQCAtMTAzMSwxNiArMTI2MiwyMiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0CiAKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicmFuZG9tIik7CiAjZWxzZQotICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogI2VuZGlmCiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQ
b2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0p
CiB7Ci0gICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZt
KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlczsKKworICAgIGppdC5z
cGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCi0gICAg
aml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6TGFi
ZWwgc3RhY2tBcmdzRW50cnkoJmppdCk7CiAgICAgCisgICAgaml0LmVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CisKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCiAgICAgaml0LnN0b3JlUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogICAgIGppdC5zdG9yZTMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0xMTEwLDIwICsxMzQ3LDIzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW4KICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwog
ICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhB
cml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwg
RXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoQ29kZUZvckNhbGwsIFN0YWNrQXJnc011
c3RDaGVja0FyaXR5KSksCiAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKEND
YWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApKTsKICAgICAKICAgICBlbWl0UG9pbnRl
clZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6
cmVnVDApOwogICAgIAogICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIGppdC5y
ZXQoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9U
SFVOS19JRCk7Ci0gICAgbGlua0J1ZmZlci5saW5rKG5vQ29kZSwgQ29kZUxvY2F0aW9uTGFiZWwo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3Modm0pKSk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCi0gICAgICAgIGxpbmtCdWZmZXIsICgiU3BlY2lhbGl6
ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGggbm8gYXJndW1lbnRzIikpOwor
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncyh2bSkpKTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgi
U3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGggbm8gYXJndW1l
bnRzIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5UHRyID0gcGF0Y2hC
dWZmZXIubG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICByZXR1cm4gSklURW50cnlQ
b2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29k
ZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQdHIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisjaW5jbHVkZSAi
SklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogCiAjaWYgRU5B
QkxFKEpJVCkKQEAgLTM2LDM0ICszNywzNSBAQCBjbGFzcyBDYWxsTGlua0luZm87CiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZN
Kik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rKFZNKiwgQ2FsbExpbmtJ
bmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlu
a0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50
c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJh
dG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qLCBD
YWxsTGlua0luZm8mKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxU
aHVua0ZvcihWTSosIENhbGxMaW5rSW5mbyYpOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlQ2FsbEdlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNhbGxHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0
b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcihW
TSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
c0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXBHZW5lcmF0
b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXRvcihWTSop
OwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKik7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNl
aWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV4cFRodW5rR2Vu
ZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihW
TSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGltdWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRo
dW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVy
YXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRv
cihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKik7
CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSopOworSklURW50
cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBU
aHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGZsb29yVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSop
OworSklURW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBy
YW5kb21UaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHRydW5jVGh1
bmtHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0pOworSklURW50cnlQb2ludHNXaXRoUmVmIGJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSopOwogCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2
LDI2IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0KICAgICBpZiAo
dm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKICAg
ICAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgICAgICBhZG9wdFJl
ZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAg
ICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgICAg
ICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVy
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdp
c3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ2FsbEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2
bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9w
dFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dp
dGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVn
aXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2Rl
KCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAg
LTU5LDEyICs3MywyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZt
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewog
ICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcg
RGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwK
KyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRl
TExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0
SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSks
CisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAt
NzIsMTQgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENv
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNX
aXRoUmVmKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGV2YWxFbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAg
ICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBv
aW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfZXZhbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSkuY29k
ZSgpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRD
b2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSksCisgICAgICAgICAgICBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlw
b2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtODcsMTQgKzEyOSwyOCBAQCBz
dGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihw
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENU
SVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwK
KyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9y
KS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9w
dFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50
Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRl
TExJbnRDb2RlUHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCkBAIC0xMDIsMTQgKzE1OCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQ
cm9ncmFtRW50cnlwb2ludChWCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklU
KCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVu
a0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAg
ICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIobW9kdWxlUHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAg
ICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJh
dG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIobW9kdWxlUHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xv
Z3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
KSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklU
RW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9t
b2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUp
KSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHZvaWQg
c2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOSArMzczLDkgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBlbnRyeU9TUihFeGVjUwogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
T1NSIGVudHJ5IiwgKCJpbiBwcm9sb2d1ZSIpKTsKICAgICAKICAgICBpZiAoa2luZCA9PSBQcm9s
b2d1ZSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+ZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgMCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVj
ayk7Ci0gICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+YWRkcmVzc0Zv
ckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgIExMSU5U
X1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJn
c011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKIH0KICNlbHNlIC8vIEVO
QUJMRShKSVQpCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciosIEVu
dHJ5S2luZCkKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
c2V0VXBDYWxsKEV4ZWMKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0
aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlw
b2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApAQCAtMTMwNiwxMiArMTMwNiwx
MiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAgICAgICAgICAg
ICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0gKmNv
ZGVCbG9ja1Nsb3Q7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwotICAgICAgICBBcml0eUNo
ZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAgICAg
ICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19j
YXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQotICAgICAgICAgICAgYXJp
dHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc011
c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0eSA9IEFyaXR5Q2hl
Y2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50
cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsKICAgICB9CiAKICAgICBBU1NF
UlQoISFjb2RlUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDE5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50
IHsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK2VudW0g
U2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSB7IENyZWF0ZVJlZ2lzdGVyRW50cnksIERvbnRDcmVh
dGVSZWdpc3RlckVudHJ5IH07CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0
aHVua0tpbmQsIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgc2hvdWxkQ3JlYXRlUmVnaXN0ZXJF
bnRyeSA9IERvbnRDcmVhdGVSZWdpc3RlckVudHJ5KQogewogICAgIEpTSW50ZXJmYWNlSklUIGpp
dCh2bSk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChzaG91bGRDcmVhdGVS
ZWdpc3RlckVudHJ5ID09IENyZWF0ZVJlZ2lzdGVyRW50cnkpCisgICAgICAgIGppdC5zcGlsbEFy
Z3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5KTsKKyNlbmRpZgorCiAgICAgLy8gRklY
TUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEkn
bSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
KTsKICAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwpAQCAtNjMsMjQgKzcyLDQ0
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHUKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIsIHRo
dW5rS2luZCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIHJlZ2lzdGVyIGFy
Z3MgY2FsbCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIHN0
YWNrIGFyZ3MgY2FsbCIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JS
ZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciByZWdp
c3RlciBhcmdzIGNvbnN0cnVjdCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJ
bnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xv
Z3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0cnVjdCIpOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwg
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSksICJmdW5jdGlvbiBmb3IgY2FsbCIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBjYWxsIHdpdGggYXJp
dHkgY2hlY2siLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwg
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY2FsbCB3
aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayks
ICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHJlZ2lzdGVy
IGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
clN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBm
b3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIs
MTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeQogCiBuYW1lc3Bh
Y2UgTExJbnQgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlU
aHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZN
Kik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFj
a0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBt
b2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBBcml0
eUNoZWNrTW9kZSB7CisgICAgUmVnaXN0ZXJFbnRyeSwKICAgICBBcml0eUNoZWNrTm90UmVxdWly
ZWQsCiAgICAgTXVzdENoZWNrQXJpdHkKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDggKzU0LDggQEAgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIG1faml0Q29kZUZvckNhbGwgPSBudWxscHRyOwogICAgIG1f
aml0Q29kZUZvckNvbnN0cnVjdCA9IG51bGxwdHI7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhB
cml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICBtX2pp
dEVudHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOworICAgIG1faml0RW50cmllc0ZvckNvbnN0
cnVjdC5jbGVhckVudHJpZXMoKTsKICNlbmRpZgogICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwg
PSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ29u
c3RydWN0ID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
QXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNvZGVC
bG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zNCw2
ICszMyw3IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJbmZlcnJlZFZh
bHVlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAj
aW5jbHVkZSAiVHlwZVNldC5oIgpAQCAtMTQ1LDQ3ICsxNDUsNDIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpOwogICAgIH0KICAgICAKLSAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRW50cnlQb2ludFR5
cGUgZW50cnlUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNhY2hl
ZCByZXN1bHQuIFdlIG9ubHkgaGF2ZSBpdCBmb3IgYXJpdHkgY2hlY2sgYmVjYXVzZSB3ZSB1c2Ug
dGhlCiAgICAgICAgIC8vIG5vLWFyaXR5IGVudHJ5cG9pbnQgaW4gbm9uLXZpcnR1YWwgY2FsbHMs
IHdoaWNoIHdpbGwgImNhY2hlIiB0aGlzIHZhbHVlIGRpcmVjdGx5IGluCiAgICAgICAgIC8vIG1h
Y2hpbmUgY29kZS4KLSAgICAgICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0g
ICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQg
PSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAg
ICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0RW50cmllc0Zv
ckNhbGwuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAg
ICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRFbnRyaWVz
Rm9yQ29uc3RydWN0LmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciByZXN1bHQgPQotICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihr
aW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkpOwotICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENo
ZWNrQXJpdHkpIHsKLSAgICAgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMgbmVj
ZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlvbnMuCi0gICAgICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAg
ICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gcmVzdWx0OwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0Ogot
ICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gcmVz
dWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlUeXBlKTsKKyAg
ICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBKSVQn
cyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBtX2ppdEVudHJpZXNGb3JDYWxs
LnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBtX2ppdEVudHJpZXNGb3JD
b25zdHJ1Y3Quc2V0RW50cnlGb3IoZW50cnlUeXBlLCByZXN1bHQpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAgICAgICBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkVudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRW50cnlQb2ludFR5cGUgZW50
cnlQb2ludFR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAgY2Fz
ZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0
YWJsZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7CisgICAgICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdEVudHJpZXNGb3JDYWxs
KSArIEpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9yKGVudHJ5UG9pbnRUeXBlKTsKICAg
ICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwg
bV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0KSArIEpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5
Rm9yKGVudHJ5UG9pbnRUeXBlKTsKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMyw4ICsyMjgsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgSW50cmluc2ljIG1faW50cmluc2ljOwogICAgIFJlZlB0cjxKSVRDb2RlPiBt
X2ppdENvZGVGb3JDYWxsOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDb25zdHJ1
Y3Q7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjazsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRyaWVzRm9yQ2FsbDsKKyAg
ICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Q7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vCiAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OwogICAgIGlmIChleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKSB7CiAgICAgICAgIC8v
IEZvcmNlIHRoZSBleGVjdXRhYmxlIHRvIGNhY2hlIGl0cyBhcml0eSBlbnRyeXBvaW50LgotICAg
ICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxsLCBNdXN0Q2hlY2tBcml0
eSk7CisgICAgICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIFN0YWNr
QXJnc011c3RDaGVja0FyaXR5KTsKICAgICB9CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4
IEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0KICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKICAg
ICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RUaHVuazsKLSAgICBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2FsbChN
dXN0Q2hlY2tBcml0eSk7Ci0gICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sg
PSBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KTsK
KyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVja0Fy
aXR5LCBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eSkpOworICAgIG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5zZXRFbnRyeUZvcihTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9yQ2FsbChT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOwogICAgIG1fbmFtZSA9IG5hbWU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEyICsxMzksMTIgQEAg
dm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdgogICAgIHN3aXRjaCAoa2lu
ZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CiAgICAgICAgIG1faml0Q29kZUZvckNhbGwgPSBn
ZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsK
LSAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmllc0ZvckNhbGwuY2xlYXJFbnRyaWVzKCk7CiAg
ICAgICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJp
Y0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVE
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CiAgICAgICAgIG1f
aml0Q29kZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2Nr
LT5qaXRDb2RlKCkgOiBudWxscHRyOwotICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX2ppdEVudHJp
ZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAgICAgICAgIG1fbnVtUGFyYW1ldGVyc0Zv
ckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTI4Miw2ICsyODIsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5l
d1JlcGxhY2VtCiAKIHN0YXRpYyB2b2lkIHNldHVwTExJbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKKyAgICBjb2RlQmxvY2stPnNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpOwog
ICAgIExMSW50OjpzZXRFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogfQogCkBAIC0yODksNiAr
MjkwLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBKSVQoVk0mIHZtLCBDb2RlQmxvY2sqIAogewogI2lm
IEVOQUJMRShKSVQpCiAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gSklUOjpjb21waWxl
KCZ2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKKyAgICBjb2RlQmxv
Y2stPnNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDksNiArMjA5LDEwIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpzb2Z0UmVzZXJ2
ZWRab25lU2l6ZSgpKTsKICAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkpOwogCisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNsZWFyQ291bnRlcnMoKTsKKyNlbmRpZgorCiAg
ICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhl
cmUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKICAgICBBdG9taWNTdHJpbmdUYWJsZSog
ZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKQEAgLTQ3Myw3ICs0Nzcs
NyBAQCBTYW1wbGluZ1Byb2ZpbGVyJiBWTTo6ZW5zdXJlU2FtcGxpbmdQcm9mCiAjZW5kaWYgLy8g
RU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCiAjaWYgRU5BQkxFKEpJVCkKLXN0YXRpYyBUaHVu
a0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2lj
KQorc3RhdGljIEpJVEVudHJ5R2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKICAgICBjYXNl
IENoYXJDb2RlQXRJbnRyaW5zaWM6CkBAIC05MjAsNCArOTI0LDM1IEBAIHZvaWQgVk06OnZlcmlm
eUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZNX0NP
VU5URVJTKQordm9pZCBWTTo6Y2xlYXJDb3VudGVycygpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IE51bWJlclZNQ291bnRlcjsgaSsrKQorICAgICAgICBtX2NvdW50ZXJzW2ldID0g
MDsKK30KKwordm9pZCBWTTo6ZHVtcENvdW50ZXJzKCkKK3sKKyAgICBzaXplX3QgdG90YWxDYWxs
cyA9IGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpICsgY291bnRlckZvcihERkdDYWxsZXIpICsg
Y291bnRlckZvcihGVExDYWxsZXIpOworICAgIGRhdGFMb2coIiMjIyMgVk0gQ2FsbCBjb3VudGVy
cyAjIyMjXG4iKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVG90YWwgY2FsbHNcbiIsIHRvdGFsQ2Fs
bHMpOworICAgIGRhdGFMb2dGKCIlMTB6dSBCYXNlbGluZSBjYWxsc1xuIiwgY291bnRlckZvcihC
YXNlbGluZUNhbGxlcikpOworICAgIGRhdGFMb2dGKCIlMTB6dSBERkcgY2FsbHNcbiIsIGNvdW50
ZXJGb3IoREZHQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEZUTCBjYWxsc1xuIiwgY291
bnRlckZvcihGVExDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmFyYXJnIGNhbGxzXG4i
LCBjb3VudGVyRm9yKENhbGxWYXJhcmdzKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRhaWwgY2Fs
bHNcbiIsIGNvdW50ZXJGb3IoVGFpbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgRXZhbCBj
YWxsc1xuIiwgY291bnRlckZvcihDYWxsRXZhbCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBEaXJl
Y3QgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRGlyZWN0Q2FsbCkpOworICAgIGRhdGFMb2dGKCIlMTB6
dSBQb2x5bW9ycGhpYyBjYWxsc1xuIiwgY291bnRlckZvcihQb2x5bW9ycGhpY0NhbGwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBjYWxsc1xuIiwgY291bnRlckZvcihWaXJ0dWFsQ2Fs
bCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBWaXJ0dWFsIHNsb3cgY2FsbHNcbiIsIGNvdW50ZXJG
b3IoVmlydHVhbFNsb3dDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFJlZ2lzdGVyIGFyZ3Mg
bm8gYXJpdHlcbiIsIGNvdW50ZXJGb3IoUmVnQXJnc05vQXJpdHkpKTsKKyAgICBkYXRhTG9nRigi
JTEwenUgU3RhY2sgYXJncyBubyBhcml0eVxuIiwgY291bnRlckZvcihTdGFja0FyZ3NOb0FyaXR5
KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFJlZ2lzdGVyIGFyZ3MgZXh0cmEgYXJpdHlcbiIsIGNv
dW50ZXJGb3IoUmVnQXJnc0V4dHJhKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFJlZ2lzdGVyIGFy
Z3MgYXJpdHkgY2hlY2tcbiIsIGNvdW50ZXJGb3IoUmVnQXJnc0FyaXR5KSk7CisgICAgZGF0YUxv
Z0YoIiUxMHp1IFN0YWNrIGFyZ3MgYXJpdHkgY2hlY2tcbiIsIGNvdW50ZXJGb3IoU3RhY2tBcmdz
QXJpdHkpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQXJpdHkgZml4dXBzIHJlcXVpcmVkXG4iLCBj
b3VudGVyRm9yKEFyaXR5Rml4dXBSZXF1aXJlZCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MjUsNiArNDI1LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBqaXRT
dHVicy0+Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgIH0KKworICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZiBnZXRKSVRFbnRyeVN0dWIoSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5qaXRFbnRyeVN0dWIodGhpcywgZ2VuZXJh
dG9yKTsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBnZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIoSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9y
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5qaXRDYWxsVGh1bmtFbnRyeVN0dWIo
dGhpcywgZ2VuZXJhdG9yKTsKKyAgICB9CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PiBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzOwogICAgIApAQCAt
NTYyLDYgKzU3Miw1MCBAQCBwdWJsaWM6CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdF
eHBBbGxvY2F0b3I7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX3JlZ0V4cEFsbG9jYXRvckxvY2s7
CiAKKyAgICBlbnVtIFZNQ291bnRlclR5cGUgeworICAgICAgICBCYXNlbGluZUNhbGxlciwKKyAg
ICAgICAgREZHQ2FsbGVyLAorICAgICAgICBGVExDYWxsZXIsCisgICAgICAgIENhbGxWYXJhcmdz
LAorICAgICAgICBUYWlsQ2FsbCwKKyAgICAgICAgQ2FsbEV2YWwsCisgICAgICAgIERpcmVjdENh
bGwsCisgICAgICAgIFBvbHltb3JwaGljQ2FsbCwKKyAgICAgICAgVmlydHVhbENhbGwsCisgICAg
ICAgIFZpcnR1YWxTbG93Q2FsbCwKKyAgICAgICAgUmVnQXJnc05vQXJpdHksCisgICAgICAgIFN0
YWNrQXJnc05vQXJpdHksCisgICAgICAgIFJlZ0FyZ3NFeHRyYSwKKyAgICAgICAgUmVnQXJnc0Fy
aXR5LAorICAgICAgICBTdGFja0FyZ3NBcml0eSwKKyAgICAgICAgQXJpdHlGaXh1cFJlcXVpcmVk
LAorICAgICAgICBOdW1iZXJWTUNvdW50ZXIKKyAgICB9OworCisjaWYgRU5BQkxFKFZNX0NPVU5U
RVJTKQorICAgIHNpemVfdCBtX2NvdW50ZXJzW051bWJlclZNQ291bnRlcl07CisKKyAgICB2b2lk
IGNsZWFyQ291bnRlcnMoKTsKKworICAgIHNpemVfdCogYWRkcmVzc09mQ291bnRlcihWTUNvdW50
ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ZXJUeXBlID49IE51
bWJlclZNQ291bnRlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJl
dHVybiAmbV9jb3VudGVyc1tjb3VudGVyVHlwZV07CisgICAgfQorCisgICAgc2l6ZV90IGNvdW50
ZXJGb3IoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChjb3Vu
dGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBtX2NvdW50ZXJzW2NvdW50ZXJUeXBlXTsKKyAgICB9CisKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBDb3VudGVycygpOworI2VuZGlmCisKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGFzT3duUHJvcGVydHlDYWNoZT4gbV9oYXNPd25Qcm9wZXJ0eUNhY2hl
OwogICAgIEFMV0FZU19JTkxJTkUgSGFzT3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlD
YWNoZSgpIHsgcmV0dXJuIG1faGFzT3duUHJvcGVydHlDYWNoZS5nZXQoKTsgfQogICAgIEhhc093
blByb3BlcnR5Q2FjaGUqIGVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUoKTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFM
b2cuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAj
ZW5kaWYKIAotI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKKyNkZWZpbmUgREFUQV9MT0dfVE9f
RklMRSAxCiAKIC8vIFNldCB0byAxIHRvIHVzZSB0aGUgdGVtcCBkaXJlY3RvcnkgZnJvbSBjb25m
c3RyIGluc3RlYWQgb2YgaGFyZGNvZGVkIGRpcmVjdG9yeS4KIC8vIFRoZSBsYXN0IGNvbXBvbmVu
dCBvZiBEQVRBX0xPR19GSUxFTkFNRSB3aWxsIHN0aWxsIGJlIHVzZWQuCi0jZGVmaW5lIERBVEFf
TE9HX1RPX0RBUldJTl9URU1QX0RJUiAwCisjZGVmaW5lIERBVEFfTE9HX1RPX0RBUldJTl9URU1Q
X0RJUiAxCiAKIC8vIFVuY29tbWVudCB0byBmb3JjZSBsb2dnaW5nIHRvIHRoZSBnaXZlbiBmaWxl
IHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgc2F5cy4KIC8vIE5v
dGUgdGhhdCB3ZSB3aWxsIGFwcGVuZCAiLjxwaWQ+LnR4dCIgd2hlcmUgPHBpZD4gaXMgdGhlIFBJ
RC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjk1LDYgKzY5NSwxNyBAQAogI2RlZmluZSBF
TkFCTEVfSklUIDEKICNlbmRpZgogCisjZGVmaW5lIEVOQUJMRV9DQUxMRVJfU1BJTExTX0NBTExF
RSAwCisjZGVmaW5lIEVOQUJMRV9DQUxMRVJfU1BJTExTX0FSR0NPVU5UIDAKKyNkZWZpbmUgRU5B
QkxFX1NUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcgMAorI2RlZmluZSBFTkFCTEVfU1RBQ0tf
RU5UUllfRklMTFNfQVJHQ09VTlRfUkVHIDAKKyNkZWZpbmUgRU5BQkxFX1ZNX0NPVU5URVJTIDAK
KyNkZWZpbmUgRU5BQkxFX0JBU0VMSU5FX1JFR0lTVEVSX0FSR1VNRU5UX0NBTExTIDAKKworI2lm
ICFkZWZpbmVkKFVTRV9SRUdJU1RFUl9BUkdVTUVOVFMpICYmIEVOQUJMRShKSVQpICYmIFVTRShK
U1ZBTFVFNjQpICYmIChPUyhEQVJXSU4pIHx8IE9TKFVOSVgpKQorI2RlZmluZSBVU0VfUkVHSVNU
RVJfQVJHVU1FTlRTIDEKKyNlbmRpZgorCiAvKiBUaGUgRlRMICpkb2VzIG5vdCogd29yayBvbiAz
Mi1iaXQgcGxhdGZvcm1zLiBEaXNhYmxlIGl0IGV2ZW4gaWYgc29tZW9uZSBhc2tlZCB1cyB0byBl
bmFibGUgaXQuICovCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICN1bmRlZiBFTkFCTEVfRlRMX0pJ
VAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296454</attachid>
            <date>2016-12-07 18:04:58 -0800</date>
            <delta_ts>2016-12-08 18:54:12 -0800</delta_ts>
            <desc>Fixed definite style issues, disabled dataLog</desc>
            <filename>reg-calls-wip177.patch</filename>
            <type>text/plain</type>
            <size>341580</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQ3LDYgKzEzNDcsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MTIsNiArMzcxMyw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5cG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5cG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU1Myw2ICs1NTU1LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeXBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03Njk2LDYgKzc2OTksNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5cG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAg
ICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgICAg
IGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4
IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFzU2VlbkNsb3N1cmUo
ZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9hbGxvd1N0dWJzKHRy
dWUpCisgICAgLCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cyhmYWxzZSkKKyAg
ICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFyZ3VtZW50c0xv
Y2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKICAgICAsIG1fY2Fs
bFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2lu
Y2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
TGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxvY2s7IH0KICAgICB2
b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHZvaWQgc2V0
VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewor
ICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8fCAoYXJndW1lbnRz
TG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBl
OworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFy
Z3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKICAg
ICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1LDYgKzI3OSwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlw
ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRQcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMoKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMg
PSB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50
c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIGFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4TnVt
QXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1bWVudHM7CkBA
IC0zMzksNiArMzYzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNsb3N1cmUgOiAx
OwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAx
OworICAgIGJvb2wgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMgOiAxOworICAg
IHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWdu
ZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4
MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBt
X2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3Ro
ZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9pc1N0cmljdE1vZGUob3RoZXIubV9pc1N0cmlj
dE1vZGUpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fY29k
ZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci5tX3Zt
LCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1faGFzRGVidWdnZXJT
dGF0ZW1lbnQoZmFsc2UpCkBAIC0xOTAyLDYgKzE5MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFs
c2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0
b3IoKSkKICAgICAsIG1faXNTdHJpY3RNb2RlKHVubGlua2VkQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNlKQogICAgICwgbV9jb2Rl
VHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
KG1fZ2xvYmFsT2JqZWN0LT52bSgpLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jaykKICAgICAsIG1f
aGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICsz
NjksMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpCisgICAg
eworICAgICAgICBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAg
Ym9vbCBwcmVmZXJzU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzOworICAgIH0KKwogICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb2RlVHlwZT4obV9j
b2RlVHlwZSk7CkBAIC04NDUsNiArODU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNCZWVu
Q29tcGlsZWRXaXRoRlRMIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7IC8vIENvZGVUeXBlCiAKICAgICAv
LyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBi
ZSBwcml2YXRlIGlmIGl0IHdhc24ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8t
PmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpD
YWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxv
YWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25l
OwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRoYXQgdGhlIGdldHRl
ci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVn
VDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fcmFyZURh
dGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldEpJ
VENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFj
a0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0
b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBl
ID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVh
ciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9k
ZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBj
YXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBz
aG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBp
dCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5k
aWYKICAgICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlz
OwogICAgIFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2ODcsMjAgKzM2ODcsNjggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9m
IGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAg
Ly8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkg
ewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0g
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0
LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0
T0sgPSB0cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9u
dW1Bcmd1bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVz
aXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9k
ZXMsCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5v
ZGVzIGFuZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhl
IHJlbWFpbmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUg
ZXhpdCBwcm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNp
bmNlCisgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4g
dGhvdWdoIHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAg
ICAgLy8gZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9y
ZSB3ZSB3YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBT
ZXRMb2NhbCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAg
ICAvLyBXZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50
IHRvIHRoZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAg
IHVuc2lnbmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMs
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZl
Y3RvcjxOb2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0
QXJndW1lbnRSZWdpc3Rlck5vZGVzOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1
bWVudFJlZ2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAg
ICAgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1
bWVudCkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50
J3MgZm9yIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRB
cmd1bWVudFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQs
IE9wSW5mbyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3Vt
ZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAg
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQg
aXMgbm93IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisg
ICAgICAgIC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRS
ZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzW2ld
OworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9
IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0
ZXItPnNldFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3Vt
ZW50UmVnaXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkg
U2V0QXJndW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwg
T3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3Vt
ZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3Rh
Y2tbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEwLDggKzQ4NTgsMTAgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhl
cmUgc2luY2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1l
bnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAg
ICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdz
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2Rl
OjpUYWlsKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZv
ciBvdXIgYXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAg
ICAgICAvLyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFu
ZCBrZXB0IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3Ry
dWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNh
bGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYg
dGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVy
IGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAg
ICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3
YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQg
Y2xlYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDE0ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3Ig
dGhyZWFkZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQg
dmFyaWFibGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2lj
IGJsb2NrLgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8v
IFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAg
ICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9j
YWwsIFBoaSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1l
bnQuCisgICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBt
YXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgLy8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0
aGUgdmFyaWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1
c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhp
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2Nh
bHMgYW5kCi0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRo
ZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQg
bWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1
bWVudFJlZ2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJn
dW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAg
ICAvLyBpbiB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dl
ZCBieSBQaGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisg
ICAgICAgICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAg
ICAgICAgICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRo
YXQgdGhlIHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRv
bUxvY2FsIGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlm
CiAgICAgICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9s
bG93ZWQgYnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAg
ICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUg
bWFjaGluZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxk
IGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhl
IGFyZ3VtZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIg
Zm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTsp
Ci0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1l
bnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1h
bGx5LCBhIFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRo
ZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVu
dCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LAorICAgICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNl
ZW1lZCBsaWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5k
S2luZCBvcGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAg
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFy
Z3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgpAQCAtNDcwLDcgKzQ3MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAg
IC8vIERGRyBiYWNrZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvY2FscyB0aGF0IHRoaXMgcmVhZHMg
YXJlIGZsdXNoZWQuIEZUTCBiYWNrZW5kIGNhbiBoYW5kbGUgdGhvc2UKICAgICAgICAgLy8gbG9j
YWxzIGJlaW5nIHByb21vdGVkLgotICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSkKKyAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkgJiYgIW5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZWFkKFN0YWNrKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGl0J3MgcGhhbnRvbSwgaXQgc3RpbGwgaGFz
IHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4ndCBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIuCkBA
IC01NTksMTEgKzU2MCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgogICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAg
ICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAg
ICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGFy
ZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRl
KFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0R2V0dGVyOgogICAg
ICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVyZVJlZ2lzdHJhdGlv
blJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSB7IEJlZm9y
ZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252ZXJnZWQgfTsKIAor
ZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRpbWl6ZUFyZ3VtZW50
Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVzY3JpYmVzIHRoZSBm
b3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4uCiBlbnVtIEdyYXBo
Rm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNpYyBibG9ja3MgbWF5
IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAg
ICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2spOworICAgICAgICBj
bGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpOwogCiAgICAgICAg
IC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjoKICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblBy
b2xvZ3VlOgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblRhaWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDgg
KzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIC8vIG1h
a2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9y
KTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkK
ICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0
ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzg2LDYgKzE3ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIEdldENhbGxlZToK
KyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3JtYXQpOwogICAgIH0K
KworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJf
dCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9ICBEYXRh
Rm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAgICBtX3VzZUNv
dW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1h
dDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOworICAgICAgICBtX2Nh
bkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAgIG1fYm9ybkZvck9T
UiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJU
KG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBp
bml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAg
IHsKQEAgLTMxMyw2ICszMjYsMTggQEAgcHVibGljOgogICAgICAgICAgICAgYXBwZW5kRmlsbChG
aWxsLCBzdHJlYW0pOwogICAgIH0KIAorICAgIHZvaWQgbW92ZVRvR1BSKFZhcmlhYmxlRXZlbnRT
dHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIEFTU0VSVChncHIgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVCh1LmdwciAhPSBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgQVNTRVJUKG1fcmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpOworICAg
ICAgICB1LmdwciA9IGdwcjsKKyAgICAgICAgaWYgKG1fYm9ybkZvck9TUikgeworICAgICAgICAg
ICAgc3RyZWFtLmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpkZWF0aChNaW5pZmllZElEKG1f
bm9kZSkpKTsKKyAgICAgICAgICAgIGFwcGVuZEZpbGwoRmlsbCwgc3RyZWFtKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIC8vIFJlY29yZCB0aGF0IHRoaXMgdmFsdWUgaXMgZmlsbGVkIGludG8g
bWFjaGluZSByZWdpc3RlcnMsCiAgICAgLy8gdHJhY2tpbmcgd2hpY2ggcmVnaXN0ZXJzLCBhbmQg
d2hhdCBmb3JtYXQgdGhlIHZhbHVlIGhhcy4KICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTQsNyArMjk0LDYgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsr
aSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNb
aV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAgQVNTRVJUKG5vZGUtPmhhc1ZhcmlhYmxlQWNjZXNz
RGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykpOwogICAgIGlmIChub2Rl
LT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRh
KCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEpIHsKQEAgLTM3Myw2ICszNzIsOCBA
QCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLT5jYXNlc1tpXS52YWx1ZSwgY29udGV4dCks
ICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
ZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNB
cmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5h
cmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigiLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
bm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpLCAiKSIpOwogICAgIENsb2JiZXJTZXQgcmVh
ZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7CiAgICAgYWRkUmVhZHNBbmRXcml0ZXMoKnRoaXMs
IG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAtMzk2LDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV2Fz
SG9pc3RlZCIpOwogICAgIG91dC5wcmludCgiKSIpOwogCi0gICAgaWYgKG5vZGUtPmFjY2Vzc2Vz
U3RhY2soKnRoaXMpICYmIG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgpKQorICAgIGlm
ICgobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVu
dFJlZ2lzdGVyKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAg
b3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPnRyeUdldFZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICAgICBlbHNlIGlmIChub2RlLT5o
YXNIZWFwUHJlZGljdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBT
cGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkpOwpAQCAtNTA2LDggKzUw
NywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0
LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIs
IG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsg
UmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zv
cm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlz
dER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5w
cmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAg
ZWxzZSB7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGNoZWNraW5nOiAiLCBs
aXN0RHVtcChtX2FyZ3VtZW50c0ZvckNoZWNraW5nKSwgIlxuIik7CisgICAgICAgIG91dC5wcmlu
dCgiICBBcmd1bWVudHMgb24gc3RhY2s6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzT25TdGFjayks
ICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFz
dE5vZGUgPSBudWxscHRyOwpAQCAtMTYyMCwxMyArMTYyMywxNCBAQCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgIGlmICghY3VycmVudE5vZGUgfHwgbm9k
ZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5vcmlnaW4pIHsKICAgICAgICAgICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAKLSAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkgewor
ICAgICAgICAgICAgLy8gUmVnQ0MgVG9EbzogTmVlZCBhIGJldHRlciB0ZXN0CisgICAgICAgICAg
ICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1
bWVudFJlZ2lzdGVyKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlKiByZXN1bHQgPSBb
Jl0gKCkgLT4gVmFsdWVQcm9maWxlKiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5v
ZGUpCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRz
T25TdGFja1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2Rl
IHx8ICFhcmd1bWVudE5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1OSw3ICs4NTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShD
b2RlT3JpZ2luLCBDb2RlT3JpZ2luJiBvcENhdGNoT3JpZ2luT3V0LCBIYW5kbGVySW5mbyomIGNh
dGNoSGFuZGxlck91dCk7CiAgICAgCiAgICAgYm9vbCBuZWVkc1Njb3BlUmVnaXN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBtX2NvZGVCbG9jay0+dXNlc0V2YWwo
KTsgfQotICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT51c2VzRXZhbCgpOyB9CisgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0K
IAogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKQEAgLTg3OCw5ICs4NzgsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgQmFnPFN0b3JhZ2VBY2Nlc3NEYXRhPiBtX3N0b3JhZ2VBY2Nlc3NE
YXRhOwogICAgIAotICAgIC8vIEluIENQUywgdGhpcyBpcyBhbGwgb2YgdGhlIFNldEFyZ3VtZW50
IG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sKLSAgICAv
LyB0aGF0IHN1cnZpdmVkIERDRS4gQWxsIG9mIHRoZW0gZXhjZXB0IG1heWJlICJ0aGlzIiB3aWxs
IHN1cnZpdmUgRENFLCBiZWNhdXNlIG9mIHRoZSBGbHVzaAotICAgIC8vIG5vZGVzLgorICAgIC8v
IEluIENQUywgdGhpcyBpcyBhbGwgb2YgdGhlIEdldEFyZ3VtZW50UmVnaXN0ZXIgYW5kIFNldEFy
Z3VtZW50IG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluCisgICAgLy8gdGhlIG1hY2hpbmUgY29k
ZSBibG9jayB0aGF0IHN1cnZpdmVkIERDRS4gQWxsIG9mIHRoZW0gZXhjZXB0IG1heWJlICJ0aGlz
IiB3aWxsIHN1cnZpdmUgRENFLAorICAgIC8vIGJlY2F1c2Ugb2YgdGhlIEZsdXNoIG5vZGVzLgog
ICAgIC8vCiAgICAgLy8gSW4gU1NBLCB0aGlzIGlzIGFsbCBvZiB0aGUgR2V0U3RhY2sgbm9kZXMg
Zm9yIHRoZSBhcmd1bWVudHMgaW4gdGhlIG1hY2hpbmUgY29kZSBibG9jayB0aGF0CiAgICAgLy8g
bWF5IGhhdmUgc29tZSBzcGVjdWxhdGlvbiBpbiB0aGUgcHJvbG9ndWUgYW5kIHN1cnZpdmVkIERD
RS4gTm90ZSB0aGF0IHRvIGdldCB0aGUgc3BlY3VsYXRpb24KQEAgLTkwMywxMSArOTAzLDEyIEBA
IHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJl
bW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAg
IC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBWZWN0
b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzT25TdGFjazsKKyAgICBWZWN0b3I8Tm9kZSosIDg+IG1f
YXJndW1lbnRzRm9yQ2hlY2tpbmc7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5p
bmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2Un
dmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7
Ci0gICAgCisKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92
YXJpYWJsZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24s
IDg+IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFN0cnVjdHVyZVNl
dCwgMTY+IG1fc3RydWN0dXJlU2V0OwpAQCAtOTU0LDYgKzk1NSw3IEBAIHB1YmxpYzoKICAgICBH
cmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3RhdGUgbV91bmlmaWNhdGlvblN0YXRl
OwogICAgIFBsYW5TdGFnZSBtX3BsYW5TdGFnZSB7IFBsYW5TdGFnZTo6SW5pdGlhbCB9OworICAg
IFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzIG1fc3RyZW5ndGhSZWR1Y2VBcmd1bWVudHMg
PSB7IFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzOjpEb250T3B0aW1pemVBcmd1bWVudEZs
dXNoZXMgfTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1f
aGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZh
bHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiwxMSArMTA2LDExIEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxp
emUoKQogICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQogICAgICAgICAgICAgZm9y
bWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tpXTsKICAgICAgICAgICAg
IGlmICghbm9kZSkKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCB8fCBub2RlLT5vcCgpID09IFNldExvY2FsKTsKICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxOCArOTksNiBAQCB2
b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogICAgIH0KIH0KIAotdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUVudHJ5KCkKLXsKLSAgICAvLyBUaGlzIGNvZGUgY3VycmVudGx5IG1hdGNo
ZXMgdGhlIG9sZCBKSVQuIEluIHRoZSBmdW5jdGlvbiBoZWFkZXIgd2UgbmVlZCB0bwotICAgIC8v
IHNhdmUgcmV0dXJuIGFkZHJlc3MgYW5kIGNhbGwgZnJhbWUgdmlhIHRoZSBwcm9sb2d1ZSBhbmQg
cGVyZm9ybSBhIGZhc3Qgc3RhY2sgY2hlY2suCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MgotICAgIC8vIFdlJ2xsIG5lZWQgdG8gY29u
dmVydCB0aGUgcmVtYWluaW5nIGN0aV8gc3R5bGUgY2FsbHMgKHNwZWNpZmljYWxseSB0aGUgc3Rh
Y2sKLSAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0
LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KLSAgICAvLyBib3RoIG5vcm1hbCBy
ZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KLSAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlciht
X2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKLX0KLQogdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQogewogICAgIGVtaXRTYXZlQ2Fs
bGVlU2F2ZXMoKTsKQEAgLTI3Nyw3ICsyNjUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExp
bmtCdWZmZXImIGxpbmtCCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fanNDYWxscy5z
aXplKCk7ICsraSkgewogICAgICAgICBKU0NhbGxSZWNvcmQmIHJlY29yZCA9IG1fanNDYWxsc1tp
XTsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwotICAgICAgICBs
aW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cihtX3ZtLT5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKG1f
dm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRy
eUZvcihpbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAgaW5mby5zZXRDYWxsTG9jYXRpb25zKAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwocmVjb3JkLnNsb3dDYWxsKSksCiAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2YocmVjb3JkLnRh
cmdldFRvQ2hlY2spKSwKQEAgLTI4Nyw2ICsyNzUsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5r
KExpbmtCdWZmZXImIGxpbmtCCiAgICAgZm9yIChKU0RpcmVjdENhbGxSZWNvcmQmIHJlY29yZCA6
IG1fanNEaXJlY3RDYWxscykgewogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqcmVjb3Jk
LmluZm87CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuY2FsbCwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCkpOworICAgICAgICBpZiAocmVjb3JkLmhhc1Nsb3dD
YWxsKCkpCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5j
dGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0RpcmVjdENhbGxUaHVu
a0dlbmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKCksCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cmVjb3JkLnNsb3dQYXRoKSwKQEAgLTM1NCw4ICszNDQsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6
bGluayhMaW5rQnVmZmVyJiBsaW5rQgogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsK
KyAgICBMYWJlbCBtYWluRW50cnkodGhpcyk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwotICAg
IGNvbXBpbGVFbnRyeSgpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKKyAgICBMYWJl
bCBlbnRyeVBvaW50KHRoaXMpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVC
bG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwogICAgIG1fc3BlY3VsYXRpdmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQbGFudCBh
IGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2su
CkBAIC0zODIsNiArMzc4LDIwIEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAg
bV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CiAKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgbV9zdGFja0Fy
Z3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisK
KyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworICAg
IGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNs
b3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkp
OworICAgIAorICAgIGp1bXAoZW50cnlQb2ludCk7CisjZW5kaWYKKwogICAgIC8vIEdlbmVyYXRl
IHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9y
cyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmln
aW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKQEAgLTQwNiwyNCArNDE2LDkxIEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0Zp
dChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIp
OwotICAgIAorCisgICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHM7CisjaWYgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRp
b25PZihtYWluRW50cnkpKTsKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NB
cml0eU9LRW50cnkpKTsKKyNlbHNlCisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tB
cmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRy
eSkpOworI2VuZGlmCisKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1f
aml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwg
V1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgIEdQUlJl
ZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAg
SnVtcExpc3QgY29udGludWVSZWdpc3RlckVudHJ5OworICAgIExhYmVsIHJlZ2lzdGVyQXJndW1l
bnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAr
IDFdOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdpc3RlciBh
cmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7CisgICAgICAgICAgICBleHRyYVJlZ2lzdGVyQXJn
dW1lbnRJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleC0t
KSB7CisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2V4dHJhUmVnaXN0
ZXJBcmd1bWVudEluZGV4ICsgMV0gPSBsYWJlbCgpOworICAgICAgICAgICAgZW1pdFB1dEFyZ3Vt
ZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudChleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCksIGV4dHJhUmVnaXN0ZXJBcmd1bWVu
dEluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpSZWdBcmdzRXh0cmEpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmFwcGVuZChqdW1w
KCkpOworCisgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgIExhYmVsIHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHkodGhpcyk7CisKKyAgICBKdW1wIHJlZ2lzdGVyQ2hlY2tBcml0
eTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIoTm90
RXF1YWwsIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgIGVs
c2UgeworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkgPSBicmFuY2gzMihCZWxvdywgYXJnQ291
bnRSZWcsIFRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSk7CisgICAgICAgIG1fcmVnaXN0ZXJB
cmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzID0gbGFiZWwoKTsKKyAgICB9CisgICAgCisgICAgTGFi
ZWwgcmVnaXN0ZXJFbnRyeU5vQXJpdHkodGhpcyk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8
PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZWdp
c3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW251bVBhcmFtZXRlcnNdID0gcmVnaXN0ZXJFbnRyeU5v
QXJpdHk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzTm9Bcml0eSk7
CisKKyAgICBjb250aW51ZVJlZ2lzdGVyRW50cnkubGluayh0aGlzKTsKKyNlbmRpZgorCisgICAg
TGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAog
ICAgIC8vID09PSBGdW5jdGlvbiBoZWFkZXIgY29kZSBnZW5lcmF0aW9uID09PQogICAgIC8vIFRo
aXMgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIHdpdGhvdXQgcGVyZm9ybWluZyBhbiBhcml0eSBj
aGVjay4KICAgICAvLyBJZiB3ZSBuZWVkZWQgdG8gcGVyZm9ybSBhbiBhcml0eSBjaGVjayB3ZSB3
aWxsIGFscmVhZHkgaGF2ZSBtb3ZlZCB0aGUgcmV0dXJuIGFkZHJlc3MsCiAgICAgLy8gc28gZW50
ZXIgYWZ0ZXIgdGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKKworI2lmIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyNpZiAhRU5BQkxFKENBTExF
Ul9TUElMTFNfQ0FMTEVFKQorICAgIHN0b3JlUHRyKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUo
KSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyNlbmRpZgorI2lmICFFTkFC
TEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKKyAgICBzdG9yZTMyKGFyZ0NvdW50UmVnLCBwYXls
b2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyNlbmRpZgorCisgICAgTGFi
ZWwgZnJvbVN0YWNrRW50cnkodGhpcyk7CisjZW5kaWYKKyAgICAKKyAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAg
ICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4g
dGhlIEpTU3RhY2suCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKSAt
IDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgSnVtcCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRy
KEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhp
dCgpIC0gMSkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIEp1bXAgc3RhY2tPdmVyZmxvdyA9
IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRTdGFj
a0xpbWl0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKIAogICAgIC8vIE1vdmUgdGhlIHN0YWNr
IHBvaW50ZXIgZG93biB0byBhY2NvbW1vZGF0ZSBsb2NhbHMKICAgICBhZGRQdHIoVHJ1c3RlZElt
bTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTQ1Miwy
OCArNTI5LDExMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dFcnJvciwgbV9jb2RlQmxvY2spOworCisgICAgSnVtcExpc3QgYXJpdHlPSzsKICAgICAKLSAg
ICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQg
dG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNh
biBzdGF0aWNhbGx5Ci0gICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1
bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNoZWNrZWQpLgotICAgIC8v
IEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNrIGlzIG5lY2Vzc2FyeSwgd2UgZW50ZXIgaGVy
ZS4KLSAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMgZnJvbSBhIGN0aSBjYWxsIHRvIGEgREZHIHN0
eWxlIG9wZXJhdGlvbiAobm9ybWFsIEMgY2FsbGluZyBjb252ZW50aW9ucykuCi0gICAgbV9hcml0
eUNoZWNrID0gbGFiZWwoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAganVtcChyZWdpc3RlckFyZ3NDaGVja0Fy
aXR5KTsKKworICAgIEp1bXBMaXN0IHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwOworICAgIGlmIChu
dW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykg
eworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkubGluayh0aGlzKTsKKyAgICAgICAgcmVnaXN0
ZXJBcml0eU5lZWRzRml4dXAuYXBwZW5kKGJyYW5jaDMyKEJlbG93LCBhcmdDb3VudFJlZywgVHJ1
c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAgICAgICAgLy8g
V2UgaGF2ZSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMuCisKKyAgICAgICAgLy8gVGhlIGZhc3Qg
ZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoYXQgdGhlIGNvcnJl
Y3QgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAvLyBoYXZlIGJlZW4gcGFzc2VkIHRvIHRo
ZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3ZSBjYW4gc3Rh
dGljYWxseQorICAgICAgICAvLyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBoYXZlIGFscmVhZHkgY2hlY2tlZCkuCisgICAgICAg
IC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNrIGlzIG5lY2Vzc2FyeSwgd2UgZW50ZXIg
aGVyZS4KKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3MgPSBsYWJl
bCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NFeHRyYSk7
CisKKyAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNzZWQgdG8gZnVuY3Rpb24KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICBicmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpLmxpbmtUbyhtYWluRW50cnksIHRoaXMpOworICAgICAg
ICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAg
fQorICAgICAgICBqdW1wKG1haW5FbnRyeSk7CisgICAgfQorCisgICAgLy8gRmFsbCB0aHJvdWdo
CisgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgIC8vIFRoZXJlIHNob3VsZCBh
bHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFy
Z3VtZW50Rml4dXBDb3VudCA9IHN0ZDo6bWluKG51bVBhcmFtZXRlcnMgLSAxLCBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKKyAgICAgICAgTGFiZWwgcmVnaXN0ZXJB
cmd1bWVudHNOZWVkQXJpdHlGaXh1cCA9IGxhYmVsKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDw9IHJlZ2lzdGVyQXJndW1lbnRGaXh1cENvdW50OyBh
cmdJbmRleCsrKQorICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJ
bmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwOworICAgIH0KKworICAgIGlu
Y3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICByZWdpc3RlckFy
aXR5TmVlZHNGaXh1cC5saW5rKHRoaXMpOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPj0gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJD
aGVja0FyaXR5LmxpbmsodGhpcyk7CisKKyAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFt
ZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgSnVtcCBj
b250aW51ZVRvU3RhY2tBcml0eUZpeHVwID0ganVtcCgpOworI2VuZGlmCisjZW5kaWYKKworICAg
IG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwLmxpbmsodGhpcyk7CisjZW5kaWYKKworICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICBsb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
IEdQUkluZm86OnJlZ1QxKTsKLSAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJl
Z1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpLmxpbmtUbyhm
cm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAgYXJpdHlPSy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKSk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpBcml0eUZpeHVw
UmVxdWlyZWQpOworCiAgICAgZW1pdFN0b3JlQ29kZU9yaWdpbihDb2RlT3JpZ2luKDApKTsKICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKKyAgICBhcml0eU9LLmFwcGVu
ZChicmFuY2hUZXN0MzIoWmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKwogICAgIGVt
aXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7CiAgICAgbW92ZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBtX2NhbGxBcml0eUZpeHVw
ID0gY2FsbCgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIEp1bXAgdG9GaWxsUmVnaXN0ZXJzID0ganVtcCgpOworCisgICAgbV9zdGFja0FyZ3NB
cml0eU9LRW50cnkgPSBsYWJlbCgpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
U3RhY2tBcmdzTm9Bcml0eSk7CisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgIGFy
aXR5T0subGluayh0aGlzKTsKKyAgICB0b0ZpbGxSZWdpc3RlcnMubGluayh0aGlzKTsKKworICAg
IC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJzCisjaWYgRU5B
QkxFKFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgbG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoU1RBQ0tfRU5UUllfRklMTFNfQVJHQ09VTlRfUkVHKQorICAgIGxv
YWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmd1bWVudFJl
Z2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyNlbmRpZgorCisgICAgZm9yICh1bnNpZ25lZCBh
cmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBh
cmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKworICAgIGp1bXAoZnJvbVN0
YWNrRW50cnkpOworI2Vsc2UKKyAgICBhcml0eU9LLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhp
cyk7CiAgICAganVtcChmcm9tQXJpdHlDaGVjayk7CisjZW5kaWYKICAgICAKICAgICAvLyBHZW5l
cmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVy
YXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwpAQCAtNTAyLDEwICs2NjMsMzUgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAKICAgICBkaXNhc3NlbWJs
ZSgqbGlua0J1ZmZlcik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hl
Y2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CisgICAgSklURW50cnlQ
b2ludHMgZW50cnlwb2ludHM7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgbWFpbkVudHJ5Q29kZVB0ciA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRy
eU5vQXJpdHkpOworI2Vsc2UKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29k
ZVB0ciA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KTsKKyNlbmRpZgorICAgIGVu
dHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwg
bWFpbkVudHJ5Q29kZVB0cik7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0ZXJB
cmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9yZWdpc3RlckFy
Z3NXaXRoUG9zc2libGVFeHRyYUFyZ3MpKTsKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihS
ZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lz
dGVyQXJnc1dpdGhBcml0eUNoZWNrKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0g
MTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnQ291bnQrKykgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAg
ICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSBt
YWluRW50cnlDb2RlUHRyOworICAgICAgICBlbHNlIGlmIChyZWdpc3RlckFyZ3VtZW50c0VudHJ5
cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVy
LT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1f
cmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBlbnRyeXBvaW50cy5zZXRFbnRy
eUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGFy
Z0NvdW50KSwgZW50cnkpOworICAgIH0KKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFj
a0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFj
a0FyZ3NBcml0eU9LRW50cnkpKTsKKyNlbHNlCisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3Io
U3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1h
aW5FbnRyeSkpOworI2VuZGlmCisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdz
TXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NXaXRoQXJp
dHlDaGVjaykpOwogCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2pp
dENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1f
Z3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIGVu
dHJ5cG9pbnRzKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fanNEaXJlY3RDYWxscy5hcHBlbmQoSlNEaXJlY3RDYWxsUmVjb3JkKGNh
bGwsIHNsb3dQYXRoLCBpbmZvKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkSlNEaXJlY3RD
YWxsKENhbGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5m
byogaW5mbykKKyAgICB7CisgICAgICAgIG1fanNEaXJlY3RDYWxscy5hcHBlbmQoSlNEaXJlY3RD
YWxsUmVjb3JkKGNhbGwsIHNsb3dDYWxsLCBzbG93UGF0aCwgaW5mbykpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGFkZEpTRGlyZWN0VGFpbENhbGwoUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1w
LCBDYWxsIGNhbGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewog
ICAgICAgICBtX2pzRGlyZWN0VGFpbENhbGxzLmFwcGVuZChKU0RpcmVjdFRhaWxDYWxsUmVjb3Jk
KHBhdGNoYWJsZUp1bXAsIGNhbGwsIHNsb3dQYXRoLCBpbmZvKSk7CkBAIC0yNjcsNyArMjcyLDYg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAg
ICAKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB0byBjb21waWxlLgotICAgIHZvaWQg
Y29tcGlsZUVudHJ5KCk7CiAgICAgdm9pZCBjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgp
OwogICAgIHZvaWQgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxhZygpOwogICAgIHZvaWQgY29tcGls
ZUJvZHkoKTsKQEAgLTMxOCw3ICszMjIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBKU0RpcmVjdENhbGxSZWNvcmQoQ2FsbCBjYWxsLCBDYWxs
IHNsb3dDYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQorICAgICAgICAg
ICAgOiBjYWxsKGNhbGwpCisgICAgICAgICAgICAsIHNsb3dDYWxsKHNsb3dDYWxsKQorICAgICAg
ICAgICAgLCBzbG93UGF0aChzbG93UGF0aCkKKyAgICAgICAgICAgICwgaW5mbyhpbmZvKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGhhc1Nsb3dDYWxsKCkgeyByZXR1cm4g
c2xvd0NhbGwubV9sYWJlbC5pc1NldCgpOyB9CisKICAgICAgICAgQ2FsbCBjYWxsOworICAgICAg
ICBDYWxsIHNsb3dDYWxsOwogICAgICAgICBMYWJlbCBzbG93UGF0aDsKICAgICAgICAgQ2FsbExp
bmtJbmZvKiBpbmZvOwogICAgIH07CkBAIC0zMzEsNyArMzQ2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICwgaW5mbyhpbmZvKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wOwogICAgICAgICBDYWxsIGNhbGw7CiAg
ICAgICAgIExhYmVsIHNsb3dQYXRoOwpAQCAtMzU1LDcgKzM3MCwxMiBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJP
U1JFeGl0Q2FsbFNpdGVzOwogICAgIAogICAgIENhbGwgbV9jYWxsQXJpdHlGaXh1cDsKLSAgICBM
YWJlbCBtX2FyaXR5Q2hlY2s7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIExhYmVsIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzOwor
ICAgIExhYmVsIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2s7CisgICAgTGFiZWwgbV9zdGFj
a0FyZ3NBcml0eU9LRW50cnk7CisjZW5kaWYKKyAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0
eUNoZWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVjdWxhdGl2ZUpJVD4gbV9zcGVjdWxhdGl2
ZTsKICAgICBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXI7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxp
emVyLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1KSVRGaW5hbGl6ZXI6OkpJVEZpbmFs
aXplcihQbGFuJiBwbGFuLCBQYXNzUmVmUHRyPEpJVENvZGU+IGppdENvZGUsIHN0ZDo6dW5pcXVl
X3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFy
aXR5Q2hlY2spCitKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcihQbGFuJiBwbGFuLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGppdENvZGUsCisgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxp
bmtCdWZmZXIsIEpJVEVudHJ5UG9pbnRzJiBlbnRyeXBvaW50cykKICAgICA6IEZpbmFsaXplcihw
bGFuKQogICAgICwgbV9qaXRDb2RlKGppdENvZGUpCiAgICAgLCBtX2xpbmtCdWZmZXIoV1RGTW92
ZShsaW5rQnVmZmVyKSkKLSAgICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCisg
ICAgLCBtX2VudHJ5cG9pbnRzKGVudHJ5cG9pbnRzKQogewogfQogCkBAIC01Niw5ICs1Nyw4IEBA
IHNpemVfdCBKSVRGaW5hbGl6ZXI6OmNvZGVTaXplKCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKCkKIHsKLSAgICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAotICAgICAgICBG
SU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0
b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6
REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xp
bmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRo
SklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKTsKKyAg
ICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYo
Y29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwogICAgIAogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNl
dEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAKQEAgLTY5LDEwICs2OSwxMSBAQCBib29sIEpJVEZp
bmFsaXplcjo6ZmluYWxpemUoKQogCiBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlv
bigpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1fd2l0aEFyaXR5Q2hlY2suaXNFbXB0eVZhbHVl
KCkpOwotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAgIEZJTkFMSVpF
X0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmlu
ZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQp
KS5kYXRhKCkpKSwKLSAgICAgICAgbV93aXRoQXJpdHlDaGVjayk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fZW50cnlwb2ludHMuZW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpLmlzRW1w
dHlWYWx1ZSgpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpF
X0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmlu
ZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQp
KS5kYXRhKCkpKTsKKworICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBtX2VudHJ5cG9pbnRzKSk7CisKICAgICBtX3BsYW4u
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAgICAgCiAgICAgZmluYWxpemVDb21t
b24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIu
aAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRG
aW5hbGl6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVEZpbmFsaXplciA6IHB1YmxpYyBGaW5hbGl6
ZXIgewogcHVibGljOgotICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2Rl
Piwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0
aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpFbXB0eVZhbHVlKSk7CisgICAgSklURmluYWxpemVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENv
ZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4sIEpJVEVudHJ5UG9pbnRzJik7CiAgICAg
dmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAgCiAgICAgc2l6ZV90IGNvZGVTaXplKCkgb3Zl
cnJpZGU7CkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQg
ZmluYWxpemVDb21tb24oKTsKLSAgICAKKwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IG1fbGlua0J1ZmZlcjsKLSAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgbV93aXRoQXJpdHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBt
X2VudHJ5cG9pbnRzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVD
YXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1f
Z3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2tbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwogICAgICAgICAg
ICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5l
Q2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAg
ICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgeworICAgICAgICAgICAgICAgIGlmICgo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCB8fCBub2RlLT5vcCgpID09IFNldExvY2FsKQorICAg
ICAgICAgICAgICAgICAgICAmJiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpIHx8IG5vZGUg
IT0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCld
KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUt
PmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hB
Y2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWZsdXNoQWNjZXNzRGF0YSkKQEAgLTExNyw3ICsxMTcsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaW5pdGlhbEFjY2Vzc0RhdGEub3BlcmFuZChvcGVy
YW5kKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBub2RlLCBub2RlLT5vcCgpICE9IFNldExvY2FsKTsgLy8gV2Ugc2hvdWxkIGhh
dmUgaW5zZXJ0ZWQgYSBGbHVzaCBiZWZvcmUgdGhpcyEKICAgICAgICAgICAgIGluaXRpYWxBY2Nl
c3NEYXRhLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAg
ICAgICAgICAgIGluaXRpYWxBY2Nlc3NOb2Rlcy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZTsKICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBs
KEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0Q2Fs
bGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CisgICAgY2FzZSBH
ZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNlIEdl
dFNjb3BlOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDEsNiArNDEsOCBAQCBNaW5pZmllZE5vZGUgTWluaWZpZWROb2RlOjpmcm9tTm9kZShO
b2RlCiAgICAgcmVzdWx0Lm1fb3AgPSBub2RlLT5vcCgpOwogICAgIGlmIChoYXNDb25zdGFudChu
b2RlLT5vcCgpKSkKICAgICAgICAgcmVzdWx0Lm1faW5mbyA9IEpTVmFsdWU6OmVuY29kZShub2Rl
LT5hc0pTVmFsdWUoKSk7CisgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJl
Z2lzdGVyKQorICAgICAgICByZXN1bHQubV9pbmZvID0gMDsKICAgICBlbHNlIHsKICAgICAgICAg
QVNTRVJUKG5vZGUtPm9wKCkgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cyB8fCBub2RlLT5vcCgp
ID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMpOwogICAgICAgICByZXN1bHQubV9pbmZvID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4obm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJ
KHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZp
ZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsNyBAQCBp
bmxpbmUgYm9vbCBiZWxvbmdzSW5NaW5pZmllZEdyYXBoKE5vZGVUCiAgICAgY2FzZSBEb3VibGVD
b25zdGFudDoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIGJvb2wgTm9kZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJiAK
ICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1
bWVudDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBGbHVzaDoKICAg
ICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOCw2ICs4MjgsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgmKTsKICAgICBi
b29sIGFjY2Vzc2VzU3RhY2soR3JhcGgmIGdyYXBoKQogICAgIHsKKyAgICAgICAgaWYgKG9wKCkg
PT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
ICAgICByZXR1cm4gaGFzVmFyaWFibGVBY2Nlc3NEYXRhKGdyYXBoKTsKICAgICB9CiAgICAgCkBA
IC04NDYsNiArODQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFZh
cmlhYmxlQWNjZXNzRGF0YSo+KCktPmZpbmQoKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzZXRW
YXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSkKKyAgICB7Cisg
ICAgICAgIG1fb3BJbmZvID0gdmFyaWFibGU7CisgICAgfQorICAgIAogICAgIFZpcnR1YWxSZWdp
c3RlciBsb2NhbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhKCkt
PmxvY2FsKCk7CkBAIC0xMjE0LDYgKzEyMjIsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
c3BlY3VsYXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkpOwogICAgIH0KICAgICAKKyAgICBi
b29sIGhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gb3Ao
KSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBhcmd1
bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0FyZ3VtZW50UmVn
aXN0ZXJJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczx1bnNpZ25lZD4oKTsK
KyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICEhcmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykgLyogTm90
ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0IGFueXdh
eS4gKi8gXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1h
Y3JvKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE5vZGVSZXN1bHRKUyAvKiB8IE5vZGVNdXN0R2VuZXJh
dGUgKi8pIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4g
VGhlc2Ugbm9kZXMgYXJlIGxpbmtlZCB0b2dldGhlciB1c2luZyBQaGkgbm9kZXMuICovXAogICAg
IC8qIEFueSB0d28gbm9kZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgc2FtZSBQaGkgZ3JhcGggd2ls
bCBzaGFyZSB0aGUgc2FtZSAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFi
aWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCwxMSBA
QCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICBtX2F2
YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpLnNldE5vZGUobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTW92SGludDogewogICAgICAgICBt
X2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSkuc2V0
Tm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENy
ZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDE2ICsxMTIsMzIgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBo
ZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAot
ICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBh
cmFtZXRlcnMoKTsgKythcmd1bWVudCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmFzZWxpbmUtPm51bVBhcmFt
ZXRlcnMoKSk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJn
ZXQtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAo
IW9sZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBo
YXZlIGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAg
ICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAg
ICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYW4gYXJndW1lbnQgbm9kZSBldmVu
IGlmIGl0J3Mgbm90IG5lZWRlZC4KKyAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAotICAgICAgICAgICAgICAgIE9w
SW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgTm9kZSogbm9kZTsK
KyAgICAgICAgICAgIE5vZGUqIHN0YWNrTm9kZTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudCA8
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAg
ICAgICBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIEdldEFyZ3VtZW50UmVnaXN0ZXIsIG9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1
bWVudChhcmd1bWVudCkpKTsKKyAgICAgICAgICAgICAgICBzdGFja05vZGUgPSBuZXdSb290LT5h
cHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0TG9j
YWwsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlKSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2Rl
KAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2RlID0gbm9kZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ3VtZW50
XSA9IG5vZGU7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1thcmd1bWVu
dF0gPSBzdGFja05vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7
IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
NCw3ICszMTQsOSBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAg
ICAgcGVyZm9ybUNGQShkZmcpOwogICAgIHBlcmZvcm1Db25zdGFudEZvbGRpbmcoZGZnKTsKICAg
ICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBkZmcubV9zdHJlbmd0aFJlZHVjZUFyZ3VtZW50
cyA9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzOwogICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNGR1Np
bXBsaWZpY2F0aW9uKGRmZyk7CisgICAgY2hhbmdlZCB8PSBwZXJmb3JtU3RyZW5ndGhSZWR1Y3Rp
b24oZGZnKTsKICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Mb2NhbENTRShkZmcpOwogICAgIAogICAg
IGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0
ZXJtb3N0IGFyZ3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSBkZWZpbml0ZWx5IHJlYWQuCisgICAg
ICAgICAgICAvLyBBbGwgb2YgdGhlIG91dGVybW9zdCBzdGFjayBhcmd1bWVudHMsIGV4Y2VwdCB0
aGlzLCBhcmUgZGVmaW5pdGVseSByZWFkLgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS0gPiAxOykKICAgICAgICAg
ICAgICAgICBtX3JlYWQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9m
aWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkt
PnByZWRpY3QoCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5n
W2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkgfHwgbm9k
ZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25Gcm9tVmFsdWUobV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZhbHVlc1tpXSkpOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDE2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjogeworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBpZiAoIXZhcmlhYmxl
LT5jb3VsZFJlcHJlc2VudEludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTJPbmx5KSkK
KyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjQW55SW50QXNE
b3VibGUpICYgflNwZWNJbnQ1Mk9ubHk7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBV
SW50MzJUb051bWJlcjogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNhblNwZWN1bGF0ZUludDMy
KG1fcGFzcykpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y0ludDMyT25seSk7CkBAIC05NjgsNiArOTc4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNl
IEdldExvY2FsOgogICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50UmVnaXN0ZXI6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAKICAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CiAgICAgICAgIAotICAgICAg
ICAvLyBBbGwgb2YgdGhlIGFyZ3VtZW50cyBzaG91bGQgYmUgbGl2ZSBhdCBoZWFkIG9mIHJvb3Qu
IE5vdGUgdGhhdCB3ZSBtYXkgZmluZCB0aGF0IHNvbWUKKyAgICAgICAgLy8gQWxsIG9mIHRoZSBz
dGFjayBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQgaGVhZCBvZiByb290LiBOb3RlIHRoYXQg
d2UgbWF5IGZpbmQgdGhhdCBzb21lCiAgICAgICAgIC8vIGxvY2FscyBhcmUgbGl2ZSBhdCBoZWFk
IG9mIHJvb3QuIFRoaXMgc2VlbXMgd3JvbmcgYnV0IGlzbid0LiBUaGlzIHdpbGwgaGFwcGVuIGZv
ciBleGFtcGxlCiAgICAgICAgIC8vIGlmIHRoZSBmdW5jdGlvbiBhY2Nlc3NlcyBjbG9zdXJlIHZh
cmlhYmxlICM0MiBmb3Igc29tZSBvdGhlciBmdW5jdGlvbiBhbmQgd2UgZWl0aGVyIGRvbid0CiAg
ICAgICAgIC8vIGhhdmUgdmFyaWFibGUgIzQyIGF0IGFsbCBvciB3ZSBoYXZlbid0IHNldCBpdCBh
dCByb290LCBmb3Igd2hhdGV2ZXIgcmVhc29uLiBCYXNpY2FsbHkgdGhpcwpAQCAtMTU3LDggKzE1
NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEZvciBvdXIgcHVycG9zZXMg
aGVyZSwgdGhlIGltcHJlY2lzaW9uIGluIHRoZSBhbGlhc2luZyBpcyBoYXJtbGVzcy4gSXQganVz
dCBtZWFucyB0aGF0IHdlCiAgICAgICAgIC8vIG1heSBub3QgZG8gYXMgbXVjaCBQaGkgcHJ1bmlu
ZyBhcyB3ZSB3YW50ZWQuCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0SW5k
ZXgoMCkubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4KDApLmFyZ3VtZW50KGkpKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVBdEhlYWQuYXRJbmRleCgwKS5udW1iZXJPZkFyZ3Vt
ZW50cygpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoaSA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAgLy8gU3RhY2sgYXJndW1l
bnRzIGFyZSBsaXZlIGF0IHRoZSBoZWFkIG9mIHJvb3QuCisgICAgICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0SW5kZXgoMCkuYXJndW1lbnQoaSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBOZXh0IGlk
ZW50aWZ5IHdoZXJlIHdlIHdvdWxkIHdhbnQgdG8gc2luayBQdXRTdGFja3MgdG8uIFdlIHNheSB0
aGF0IHRoZXJlIGlzIGEgZGVmZXJyZWQKICAgICAgICAgLy8gZmx1c2ggaWYgd2UgaGFkIGEgUHV0
U3RhY2sgd2l0aCBhIGdpdmVuIEZsdXNoRm9ybWF0IGJ1dCBpdCBoYXNuJ3QgYmVlbiBtYXRlcmlh
bGl6ZWQgeWV0LgpAQCAtMzU4LDcgKzM2Miw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAo
Tm9kZSogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewogICAgICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6Ci0gICAgICAgICAgICAgICAgICAg
IHB1dFN0YWNrc1RvU2luay5hZGQobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5tX2FyZ3VtZW50c09uU3RhY2suY29udGFpbnMobm9kZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBz
c2FDYWxjdWxhdG9yLm5ld0RlZigKICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRUb1Zh
cmlhYmxlLm9wZXJhbmQobm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2FsKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpAQCAtNDgzLDEx
ICs0ODgsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGRvbid0IGRlbGV0ZSBhcmd1
bWVudCBQdXRTdGFja3MsIG5vIG5lZWQgdG8gYWRkIG9uZSBiYWNrLgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKGluY29taW5n
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEdvdHRhIGluc2VydCBhIFB1dFN0YWNrLgogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
SW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQsICIgYXQgIiwgbm9kZSwgIlxuIik7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVy
YW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBpbmNvbWluZyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC01MzgsNiArNTQ3LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZzsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzQ29uY3JldGUoZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNv
bnRhaW5zKGluY29taW5nKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgcGhpTm9kZSwgaW5j
b21pbmcpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSXNzdWUgYSBHZXRTdGFjayB0byBnZXQgdGhlIHZhbHVlLiBUaGlzIG1pZ2h0IGlu
dHJvZHVjZSBzb21lIHJlZHVuZGFuY3kKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVnaXN0ZXJCYW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0
Myw2IEBAIHB1YmxpYzoKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYWxsb2NhdGVTcGVjaWZpYyhSZWdJ
RCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4
KHJlZyk7Ci0KICAgICAgICAgKyttX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG5hbWUgPSBuYW1lQXRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChuYW1l
LmlzVmFsaWQoKSkKQEAgLTE3MiwxMSArMTcxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9kYXRh
W2luZGV4XS5uYW1lID0gbmFtZTsKICAgICAgICAgbV9kYXRhW2luZGV4XS5zcGlsbE9yZGVyID0g
c3BpbGxPcmRlcjsKICAgICB9CisKICAgICB2b2lkIHJlbGVhc2UoUmVnSUQgcmVnKQogICAgIHsK
ICAgICAgICAgcmVsZWFzZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQog
CisgICAgdm9pZCBtb3ZlUmVnKFJlZ0lEIGZyb21SZWcsIFJlZ0lEIHRvUmVnKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gQmFua0luZm86OnRvSW5kZXgoZnJvbVJlZyk7Cisg
ICAgICAgIHVuc2lnbmVkIHRvSW5kZXggPSBCYW5rSW5mbzo6dG9JbmRleCh0b1JlZyk7CisgICAg
ICAgIAorICAgICAgICAvLyAnZnJvbUluZGV4JyBtdXN0IGJlIGEgdmFsaWQsIG5hbWVkIHJlZ2lz
dGVyLgorICAgICAgICBBU1NFUlQoZnJvbUluZGV4IDwgTlVNX1JFR1MpOworICAgICAgICBBU1NF
UlQobV9kYXRhW2Zyb21JbmRleF0ubmFtZS5pc1ZhbGlkKCkpOworICAgICAgICAKKyAgICAgICAg
Ly8gJ3RvSW5kZXgnIG11c3QgYmUgYSB2YWxpZCwgdW5uYW1lZCBhbmQgbG9ja2VkIHJlZ2lzdGVy
LgorICAgICAgICBBU1NFUlQodG9JbmRleCA8IE5VTV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKCFt
X2RhdGFbdG9JbmRleF0ubmFtZS5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhW3Rv
SW5kZXhdLmxvY2tDb3VudCk7CisKKyAgICAgICAgbV9kYXRhW3RvSW5kZXhdLm5hbWUgPSBtX2Rh
dGFbZnJvbUluZGV4XS5uYW1lOworICAgICAgICBtX2RhdGFbdG9JbmRleF0uc3BpbGxPcmRlciA9
IG1fZGF0YVtmcm9tSW5kZXhdLnNwaWxsT3JkZXI7CisgICAgICAgIHJlbGVhc2VBdEluZGV4KGZy
b21JbmRleCk7CisgICAgfQorCiAgICAgLy8gbG9jay91bmxvY2sgcmVnaXN0ZXIsIGVuc3VyZXMg
dGhhdCB0aGV5IGFyZSBub3Qgc3BpbGxlZC4KICAgICB2b2lkIGxvY2soUmVnSUQgcmVnKQogICAg
IHsKQEAgLTE4Niw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgICAgICsrbV9kYXRhW2luZGV4XS5s
b2NrQ291bnQ7CiAgICAgICAgIEFTU0VSVChtX2RhdGFbaW5kZXhdLmxvY2tDb3VudCk7CiAgICAg
fQorCiAgICAgdm9pZCB1bmxvY2soUmVnSUQgcmVnKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBCYW5rSW5mbzo6dG9JbmRleChyZWcpOwpAQCAtMjM2LDYgKzI1NiwxMSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbV9iYW5rLT5pc0xvY2tlZEF0SW5kZXgobV9pbmRleCk7
CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHVubG9jaygpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2JhbmstPnVubG9ja0F0SW5kZXgobV9pbmRleCk7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVsZWFzZSgpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1fYmFuay0+cmVsZWFzZUF0SW5kZXgobV9pbmRleCk7CkBAIC0yOTgsNiArMzIz
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsK
ICAgICB9CiAKKyAgICB2b2lkIHVubG9ja0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICBBU1NFUlQoaW5kZXggPCBOVU1fUkVHUyk7CisgICAgICAgIEFTU0VSVChtX2RhdGFb
aW5kZXhdLmxvY2tDb3VudCk7CisgICAgICAgIC0tbV9kYXRhW2luZGV4XS5sb2NrQ291bnQ7Cisg
ICAgfQorCiAgICAgVmlydHVhbFJlZ2lzdGVyIG5hbWVBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgTlVNX1JFR1MpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
b252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRmluZCBhbGwgU2V0TG9jYWxzIGFu
ZCBjcmVhdGUgRGVmcyBmb3IgdGhlbS4gV2UgaGFuZGxlIFNldEFyZ3VtZW50IGJ5IGNyZWF0aW5n
IGEKLSAgICAgICAgLy8gR2V0TG9jYWwsIGFuZCByZWNvcmRpbmcgdGhlIGZsdXNoIGZvcm1hdC4K
KyAgICAgICAgLy8gR2V0U3RhY2ssIGFuZCByZWNvcmRpbmcgdGhlIGZsdXNoIGZvcm1hdC4gV2Ug
aGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgYnkgZGlyZWN0bHkKKyAgICAgICAgLy8gYWRkaW5n
IHRoZSBub2RlIHRvIG1fYXJndW1lbnRNYXBwaW5nIGhhc2ggbWFwLgogICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2spCkBAIC04MywxNCArODQsMTYgQEAgcHVibGlj
OgogICAgICAgICAgICAgLy8gYXNzaWdubWVudCBmb3IgZXZlcnkgbG9jYWwuCiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7
ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChu
b2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsICYm
IG5vZGUtPm9wKCkgIT0gU2V0QXJndW1lbnQpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVudCAmJiBub2RlLT5vcCgp
ICE9IEdldEFyZ3VtZW50UmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGU7CisgICAgICAgICAgICAgICAgTm9kZSogY2hp
bGROb2RlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRM
b2NhbCkKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRS
ZWdpc3RlcikKKyAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudE1hcHBpbmcuYWRkKG5vZGUs
IG5vZGUpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxk
Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDEsOSArMTA0LDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRHZXR0ZXJzLmFkZChjaGls
ZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwg
Y2hpbGROb2RlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgbV9jYWxjdWxhdG9yLm5ld0RlZigKLSAgICAgICAgICAgICAgICAgICAgbV9zc2FW
YXJpYWJsZUZvclZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJsb2NrLCBjaGlsZE5vZGUpOworCisg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAgICAgICAgICBtX2Nh
bGN1bGF0b3IubmV3RGVmKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9zc2FWYXJpYWJsZUZv
clZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJsb2NrLCBjaGlsZE5vZGUpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuZXhlY3V0ZShibG9jayk7CkBAIC0yOTQsNyArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkp
ID0gY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50
UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgICAgICB2
YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBub2RlOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICBjYXNlIEdldFN0YWNrOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50
R2V0dGVycy5jb250YWlucyhub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3Bl
cmFuZC5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkgPSBub2RlOwpAQCAt
MzgyLDE3ICszOTMsMjEgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1f
YXJndW1lbnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9h
cmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1h
dHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcuc2l6ZSgp
OyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1
ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dy
YXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50
TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7Ci0gICAgICAgICAgICBmb3Jt
YXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OworICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAg
ICAgICAgICAgICAgICBmb3JtYXQgPSB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ld
ID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3Ig
dGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzRm9yQ2hlY2tpbmdbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2Fk
cyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjA5
NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgR2V0Q2FsbGVl
OgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CisgICAgY2FzZSBHZXRB
cmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNlIEdldExv
Y2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIwOTUwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJl
Y29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChk
eW5hbWljT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICAKICAgICBDYWxsTGlua0luZm8q
IGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+
c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZVBheWxvYWRH
UFIpOworICAgIGluZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgU3RhY2tBcmdzLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxlZVBheWxvYWRHUFIpOwogICAgIAogICAgIGF1dG8gc2V0UmVzdWx0
QW5kUmVzZXRTdGFjayA9IFsmXSAoKSB7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdFBheWxvYWQodGhpcyk7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNh
bGxlZVNhdmVzKCk7CiAgICAgfQogCi0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwpAQCAtNTYxNCw2ICs1NjE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgS2lsbFN0YWNrOgogICAgIGNhc2UgR2V0
U3RhY2s6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgY2FzZSBHZXRBcmd1bWVu
dFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CiAgICAg
Y2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpib3hJbnQ1MihHUFJSZWcgc291CiAgICAgdW5sb2NrKGZwcik7CiB9CiAK
LUdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQorR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UsIEdQUlJlZyBncHJUb1VzZSkKIHsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lz
dGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKICAgICAKICAgICBzd2l0Y2ggKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKLSAgICAgICAgR1BS
UmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZShncHJU
b1VzZSk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOwpAQCAtMTIwLDcgKzEyMCwxMiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIC8vIElm
IHRoZSByZWdpc3RlciBoYXMgYWxyZWFkeSBiZWVuIGxvY2tlZCB3ZSBuZWVkIHRvIHRha2UgYSBj
b3B5LgogICAgICAgICAvLyBJZiBub3QsIHdlJ2xsIHplcm8gZXh0ZW5kIGluIHBsYWNlLCBzbyBt
YXJrIG9uIHRoZSBpbmZvIHRoYXQgdGhpcyBpcyBub3cgdHlwZSBEYXRhRm9ybWF0SW50MzIsIG5v
dCBEYXRhRm9ybWF0SlNJbnQzMi4KICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7
Ci0gICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CisgICAgICAgICAgICBtX2ppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByLCByZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ3ByVG9Vc2UgIT0gSW52
YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1
bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CiAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByLCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQpAQCAtMTM4LDYgKzE0MywxMyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAg
IGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgaWYgKGdwclRvVXNlICE9IEludmFsaWRHUFJSZWcgJiYgZ3ByICE9IGdw
clRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2Up
OworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgICAgICBtX2dw
cnMubW92ZVJlZyhncHIsIGdwclRvVXNlKTsKKyAgICAgICAgICAgIGluZm8ubW92ZVRvR1BSKCpt
X3N0cmVhbSwgZ3ByVG9Vc2UpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0K
QEAgLTYzMiw2ICs2NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmlj
dEVxCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewogICAgIENh
bGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7CisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJn
dW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAgYm9vbCBpc1ZhcmFyZ3MgPSBmYWxzZTsK
ICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzVGFpbCA9IGZh
bHNlOwpAQCAtNzE0LDcgKzcyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBD
YWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKLSAgICAKKyAgICBzdGQ6Om9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiB0YWlsQ2FsbGVlOworCisgICAgaW5jcmVtZW50Q291bnRlcigmbV9q
aXQsIFZNOjpERkdDYWxsZXIpOworCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBu
dWxscHRyOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVs
bHB0cjsKICAgICBpZiAoaXNEaXJlY3QpIHsKQEAgLTczMyw2ICs3NDksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7
CiAgICAgICAgIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gbV9qaXQuZ3JhcGgoKS5tX25l
eHRNYWNoaW5lTG9jYWw7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2pp
dCwgVk06OkNhbGxWYXJhcmdzKTsKICAgICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQz
KCkpCkBAIC04MTAsNyArODI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZQogICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMygpKTsKIAogICAgICAgICAvLyBO
b3cgc2V0IHVwIHRoZSAidGhpcyIgYXJndW1lbnQuCi0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNBcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHRoaXNBcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMCkpOwogICAgICAgICBHUFJSZWcgdGhpc0FyZ3VtZW50R1BSID0gdGhp
c0FyZ3VtZW50LmdwcigpOwogICAgICAgICB0aGlzQXJndW1lbnQudXNlKCk7CiAgICAgICAgIApA
QCAtODQxLDEyICs4NTgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzVGFpbCkgeworICAgICAgICAgICAgaW5j
cmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpUYWlsQ2FsbCk7CiAgICAgICAgICAgICBFZGdlIGNh
bGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApOwotICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxlZUVkZ2UpOwotICAgICAgICAgICAgY2FsbGVl
R1BSID0gY2FsbGVlLmdwcigpOworICAgICAgICAgICAgdGFpbENhbGxlZS5lbXBsYWNlKHRoaXMs
IGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgICAgICBj
YWxsZWVHUFIgPSB0YWlsQ2FsbGVlLT5ncHIoKTsKICAgICAgICAgICAgIGlmICghaXNEaXJlY3Qp
Ci0gICAgICAgICAgICAgICAgY2FsbGVlLnVzZSgpOworICAgICAgICAgICAgICAgIHRhaWxDYWxs
ZWUtPnVzZSgpOwogCisgICAgICAgICAgICBhcmd1bWVudHNMb2NhdGlvbiA9IGFyZ3VtZW50c0xv
Y2F0aW9uRm9yKG51bUFsbG9jYXRlZEFyZ3MpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJn
dW1lbnRzSW5SZWdpc3RlcnMgPSBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3M7CiAgICAg
ICAgICAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gbV9qaXQuZ3Jh
cGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZUdQUiwgRGF0YUZvcm1hdEpTKTsKQEAgLTg2
NCw3ICs4ODQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0
YW50KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxl
ZVNhdmVSZWdpc3RlcnMobV9qaXQuY29kZUJsb2NrKCkpOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAgIC8v
IENhbGxFdmFsIGlzIGhhbmRsZWQgd2l0aCB0aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBh
c3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKQEAgLTg3NSwyMiArODk2LDY5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsr
aSkKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKworICAgICAgICAgICAgaW5j
cmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAwOykgewor
ICAgICAgICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07
CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2UsIHBsYXRm
b3JtQXJnR1BSKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChhcmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwgcGxhdGZv
cm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZyk7CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGZy
ZWUgdGhlIG5vbi1hcmd1bWVudCByZWdpc3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAg
ICAgICBpZiAocGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAg
ICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQo
YXJnR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJndW1lbnQg
ZWRnZXMgZm9yIGFyZ3VtZW50cyBwYXNzZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgYXJnR1BSID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7
CisgICAgICAgICAgICAgICAgaWYgKGFyZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAg
ICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJl
bltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgICAgIHVzZShh
cmdFZGdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IGFsbG9jYXRlKGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIobnVtUGFzc2VkQXJncyksIGFyZ0NvdW50R1BSKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxM
U19BUkdDT1VOVCkKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRHUFIsIEpJVENv
bXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKTsKKyNlbmRpZgorICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb24gPSBhcmd1bWVudHNM
b2NhdGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAg
ICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGkpOworCisgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGpzVW5kZWZpbmVkKCksIEpJVENvbXBpbGVyOjpjYWxsZWVBcmd1bWVudFNsb3QoaSkpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgYWxsb2NhdGUocGxhdGZv
cm1BcmdHUFIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBp
ZiAoIWlzVGFpbCB8fCBpc1ZhcmFyZ3MgfHwgaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICBF
ZGdlIGNhbGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApOwotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpOwogICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNhbGxlZS51
c2UoKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpjYWxs
ZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjaWYgIUVOQUJMRShDQUxMRVJf
U1BJTExTX0NBTExFRSkKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJn
cykKKyNlbmRpZgorICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBp
bGVyOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CiAKKyAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gIT0g
U3RhY2tBcmdzICYmICFpc1RhaWwpCisgICAgICAgIHVubG9ja0FyZ3VtZW50UmVnaXN0ZXJzKCk7
CisKICAgICBDb2RlT3JpZ2luIHN0YXRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
ICAgICBBU1NFUlQoIWlzVGFpbCB8fCAhc3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZSB8fCAh
c3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMo
KSk7CiAgICAgQVNTRVJUKCFpc0VtdWxhdGVkVGFpbCB8fCAoc3RhdGljT3JpZ2luLmlubGluZUNh
bGxGcmFtZSAmJiBzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGlu
Z1RhaWxDYWxscygpKSk7CkBAIC05MTMsNyArOTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIH07CiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgY2Fs
bExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbGVlR1BSKTsKKyAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwg
YXJndW1lbnRzTG9jYXRpb24sIG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVl
R1BSKTsKIAogICAgIGlmIChub2RlLT5vcCgpID09IENhbGxFdmFsKSB7CiAgICAgICAgIC8vIFdl
IHdhbnQgdG8gY2FsbCBvcGVyYXRpb25DYWxsRXZhbCBidXQgd2UgZG9uJ3Qgd2FudCB0byBvdmVy
d3JpdGUgdGhlIHBhcmFtZXRlciBhcmVhIGluCkBAIC05NTYsMTcgKzEwMjQsMjAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gbV9qaXQucGF0
Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0g
bV9qaXQubGFiZWwoKTsKKworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZN
OjpUYWlsQ2FsbCk7CisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRp
cmVjdENhbGwpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5lbWl0U3RvcmVDYWxs
U2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRGcmFtZVNodWZmbGVEYXRhKHNodWZmbGVEYXRhKTsKICAgICAgICAgICAgIENhbGxG
cmFtZVNodWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0
Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6
TGFiZWwgc2xvd1BhdGggPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICAgICAgcGF0Y2hhYmxlSnVt
cC5tX2p1bXAubGlua1RvKHNsb3dQYXRoLCAmbV9qaXQpOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBj
YWxsZWVHUFIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BS
UmVnKTsKQEAgLTk3OCwyNyArMTA0OSwzMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdFRhaWxDYWxsKHBhdGNo
YWJsZUp1bXAsIGNhbGwsIHNsb3dQYXRoLCBjYWxsTGlua0luZm8pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBt
YWluUGF0aCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZtX2ppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNh
bGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgIAorCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJl
bCBzbG93UGF0aCA9IG1faml0LmxhYmVsKCk7CisKICAgICAgICAgaWYgKGlzWDg2KCkpCi0gICAg
ICAgICAgICBtX2ppdC5wb3AoSklUQ29tcGlsZXI6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BS
KSk7CisgICAgICAgICAgICBtX2ppdC5wb3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisKKyAgICAg
ICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8p
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFy
Z0dQUjAKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2Fs
bCgpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNh
bGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAgICAgICAg
CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2V0UmVzdWx0
QW5kUmVzZXRTdGFjaygpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkSlNEaXJlY3RDYWxs
KGNhbGwsIHNsb3dQYXRoLCBjYWxsTGlua0luZm8pOworCisgICAgICAgIG1faml0LmFkZEpTRGly
ZWN0Q2FsbChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMDI1LDIzICsxMTAxLDIyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIGlmIChub2RlLT5vcCgpID09IFRh
aWxDYWxsKSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIGNhbGxGcmFtZVNodWZmbGVyKG1f
aml0LCBzaHVmZmxlRGF0YSk7Ci0gICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnNldENhbGxlZUpT
VmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChhcmd1
bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBjYWxsRnJhbWVTaHVmZmxl
ci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2Fs
bGVlKCkpKTsKICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQUkluZm86OnJl
Z1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0KLSAgICAgICAgaWYgKGlzVGFp
bCkKLSAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBu
ZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCi0gICAgfQor
ICAgIH0gZWxzZSBpZiAoaXNUYWlsKQorICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNh
dmVzKCk7CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGlu
IHJlZ1QyCisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJl
IGluIG5vbkFyZ0dQUjAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5l
YXJDYWxsKCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIAotICAgIGlmIChpc1RhaWwpCisg
ICAgaWYgKGlzVGFpbCkgeworICAgICAgICB0YWlsQ2FsbGVlID0gc3RkOjpudWxsb3B0OworICAg
ICAgICB1bmxvY2tBcmd1bWVudFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhS
ZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAg
ICAgICAgIHNldFJlc3VsdEFuZFJlc2V0U3RhY2soKTsKIAogICAgIG1faml0LmFkZEpTQ2FsbChm
YXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5rSW5mbyk7CkBAIC00MTU0
LDE4ICs0MjI5LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIEdQ
UlJlZyBjYWxsZWVSZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZVZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxs
ZWUpOworICAgICAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChj
YWxsZWVSZWcpICYmIG1fZ3Bycy5uYW1lKGNhbGxlZVJlZykgPT0gY2FsbGVlVmlydHVhbFJlZ2lz
dGVyKQorICAgICAgICAgICAgICAgIGNhbGxlZVJlZ1dpdGhWYWx1ZSA9IGNhbGxlZVJlZzsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbGxlZVJlZ1dpdGhWYWx1ZSA9PSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUmVnV2l0aFZhbHVlLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhjYWxsZWVSZWdXaXRoVmFsdWUpOworICAg
ICAgICAgICAgbV9ncHJzLnJlbGVhc2UoY2FsbGVlUmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQor
I2Vsc2UKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworI2VuZGlmCiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAg
ICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FS
R0NPVU5UX1JFRykKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgewor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0ZXIg
PSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAg
ICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQo
YXJndW1lbnRDb3VudFJlZykgJiYgbV9ncHJzLm5hbWUoYXJndW1lbnRDb3VudFJlZykgPT0gYXJn
dW1lbnRDb3VudFZpcnR1YWxSZWdpc3RlcikKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50
UmVnV2l0aFZhbHVlID0gYXJndW1lbnRDb3VudFJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50
UmVnV2l0aFZhbHVlKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGFyZ3VtZW50Q291bnRS
ZWdXaXRoVmFsdWUpOworICAgICAgICB9CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3Vs
dC5ncHIoKSk7CisjZW5kaWYKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVy
OgorICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDog
ewogICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRp
dmVKSVQ6OlNwZWN1bGF0aXZlSklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0R2VuZXJhdGVkTm9k
ZShMYXN0Tm9kZVR5cGUpCiAgICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0
aW9uSW5mbyhtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQorICAgICwgbV9hcmd1
bWVudEdlbmVyYXRpb25JbmZvKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnMpCiAgICAgLCBtX3N0YXRlKG1faml0LmdyYXBoKCkpCiAgICAg
LCBtX2ludGVycHJldGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAgLCBtX3N0cmVhbSgm
aml0LmppdENvZGUoKS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1f
Z2VuZXJhdGlvbkluZm9baV0gPSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAg
IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CiAgICAgbV9n
cHJzID0gUmVnaXN0ZXJCYW5rPEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5r
PEZQUkluZm8+KCk7CiB9CkBAIC0xMTk5LDYgKzEyMDIsMjYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGFGb3JtYXRTdHJpbmcoRGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zvcm1hdF07CiB9CiAK
K3N0YXRpYyB2b2lkIGR1bXBSZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8mIGluZm8sIHVuc2ln
bmVkIGluZGV4KQoreworICAgIGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAgIGRhdGFMb2dGKCIg
ICAgJSAzZDolcyVzIiwgaW5kZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1h
dCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKKyAgICBlbHNlCisg
ICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsKKyAgICBpZiAoaW5m
by5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAgIGRhdGFMb2dG
KCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3Jt
YXQoKSAhPSBEYXRhRm9ybWF0Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICYm
ICEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2VuZGlmCisgICAgICAg
ICkgeworICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAg
ICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0YoIlxuIik7CisgICAgCit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVsKQpAQCAt
MTIwOCwyNSArMTIzMSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIq
IGxhCiAgICAgbV9ncHJzLmR1bXAoKTsKICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7CiAgICAg
bV9mcHJzLmR1bXAoKTsKLSAgICBkYXRhTG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2ldOwot
ICAgICAgICBpZiAoaW5mby5hbGl2ZSgpKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNk
OiVzJXMiLCBpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFG
b3JtYXRTdHJpbmcoaW5mby5zcGlsbEZvcm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwotICAgICAgICBpZiAoaW5mby5y
ZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBkYXRhTG9n
RigiOmZwciVkXG4iLCBpbmZvLmZwcigpKTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAg
ICAgICAgICYmICEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQotI2VuZGlm
Ci0gICAgICAgICAgICApIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFs
aWRHUFJSZWcpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdO
YW1lKGluZm8uZ3ByKCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigi
XG4iKTsKLSAgICB9CisKKyAgICBkYXRhTG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJz
OlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9u
SW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3VtZW50R2Vu
ZXJhdGlvbkluZm9baV0sIGkpOworCisgICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lz
dGVyczpcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZv
LnNpemUoKTsgKytpKQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9b
aV0sIGkpOworCiAgICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxh
YmVsKTsKIH0KQEAgLTE2NzcsNiArMTY5MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDdXJyZW50QmxvY2sKICAgICAKICAgICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9jay0+aW5k
ZXhdID0gbV9qaXQubGFiZWwoKTsKIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAg
IGNoZWNrQXJndW1lbnRUeXBlcygpOworCiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25P
ZkNGQUhhc1Zpc2l0ZWQpIHsKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFz
aWMgYmxvY2tzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAgICAg
IC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRo
aXMgYmxvY2ssIGRyb3AgaW4gYQpAQCAtMTY4NywxNSArMTcwMywzMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9n
KFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwogICAgIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgp
CisgICAgICAgIHNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworICAgIAogICAgIG1f
aml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgbV9qaXQuaml0QXNzZXJ0VGFn
c0luUGxhY2UoKTsKICAgICBtX2ppdC5qaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpOwogCiAg
ICAgbV9zdGF0ZS5yZXNldCgpOwogICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKG1fYmxvY2sp
OwotICAgIAorCiAgICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5z
aXplKCk7IGktLTspIHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNB
dEhlYWQub3BlcmFuZEZvckluZGV4KGkpOworICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4ICYm
IG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhcmd1
bWVudCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOworICAg
ICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0Zv
ckNoZWNraW5nW2FyZ3VtZW50XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50Tm9kZSAmJiBhcmd1bWVudE5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikgewor
ICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlLT5yZWZDb3VudCgpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1bWVu
dFJlZ2lzdGVycydzLgorICAgICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBNaW5pZmllZElEKGFyZ3VtZW50Tm9kZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudE5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2Nr
LT52YXJpYWJsZXNBdEhlYWRbaV07CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzgyLDEz
ICsxODE2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAg
ICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1
ZSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVu
dHNGb3JDaGVja2luZ1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBU
aGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1
bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudAorICAgICAgICAgICAgfHwgKG5vZGUtPm9wKCkgPT0gU2V0
TG9jYWwgJiYgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAg
ICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAg
IEFTU0VSVChub2RlLT5zaG91bGRHZW5lcmF0ZSgpKTsKIAogICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwpA
QCAtMTc5OSwyMyArMTgzNSw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50
VHlwZXMoCiAgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwogCi0gICAgICAgIEpTVmFsdWVTb3VyY2Ug
dmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlcikpOwotICAgICAgICAKKyAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJj
ZTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVy
ID0gSW52YWxpZEdQUlJlZzsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSA8IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50
UmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAgICAg
ICAgICAgIHZhbHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShhcmd1bWVudFJlZ2lzdGVyKTsKKyAg
ICAgICAgfSBlbHNlCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBK
U1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOwor
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6IHsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxv
dywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxv
dywgYXJndW1lbnRSZWdpc3RlciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGFy
Z3VtZW50UmVnaXN0ZXIsIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1
bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE4NDYsMTAgKzE5MDMsNTcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9y
aWdpbigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50UmVnaXN0ZXJz
Rm9yRW50cnkoKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlMKKyAgICBCYXNpY0Jsb2NrKiBmaXJzdEJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jaygwKTsK
KworICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGZpcnN0
QmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGZp
cnN0QmxvY2stPmF0KGluZGV4SW5CbG9jayk7CisKKyAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZyA9IEdQUkluZm86OnRv
QXJndW1lbnRSZWdpc3Rlcihub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFTU0VSVChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKCFtX2dwcnMuaXNMb2NrZWQoYXJndW1l
bnRSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50UmVn
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oYXJndW1lbnRSZWcsIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckpTKTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJW
YWx1ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVudFJlZywgRGF0YUZvcm1hdEpTKTsK
KyAgICAgICAgICAgIGluZm8ubm90aWNlT1NSQmlydGgoKm1fc3RyZWFtLCBub2RlLCB2aXJ0dWFs
UmVnaXN0ZXIpOworI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHKQorICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gR2V0Q2FsbGVlKSB7CisgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVy
YXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAg
ICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAg
ICAgICAgICAgQVNTRVJUKCFtX2dwcnMuaXNMb2NrZWQoY2FsbGVlUmVnKSk7CisgICAgICAgICAg
ICBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhjYWxsZWVSZWcpOworICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihjYWxsZWVSZWcsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAg
ICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5yZWZDb3Vu
dCgpLCBjYWxsZWVSZWcsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpbmZvLm5vdGljZU9T
UkJpcnRoKCptX3N0cmVhbSwgbm9kZSwgdmlydHVhbFJlZ2lzdGVyKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShTVEFDS19FTlRSWV9GSUxMU19BUkdDT1VOVF9SRUcpCisgICAgICAgIH0gZWxzZSBpZiAo
bm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7
CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJG
b3JBcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9n
cHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxv
Y2F0ZVNwZWNpZmljKGFyZ3VtZW50Q291bnRSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihhcmd1bWVudENvdW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2VyKTsK
KyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5y
ZWZDb3VudCgpLCBhcmd1bWVudENvdW50UmVnLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAg
ICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdpc3Rlcik7
CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCiBib29sIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKCkKIHsKLSAgICBjaGVja0FyZ3VtZW50VHlwZXMoKTsKLSAgICAKICAgICBB
U1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0g
MDsgYmxvY2tJbmRleCA8IG1faml0LmdyYXBoKCkubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkg
ewogICAgICAgICBtX2ppdC5zZXRGb3JCbG9ja0luZGV4KGJsb2NrSW5kZXgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlKTsKKyAgICBH
UFJSZWcgZmlsbEpTVmFsdWUoRWRnZSwgR1BSUmVnIGdwclRvVXNlID0gSW52YWxpZEdQUlJlZyk7
CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGJvb2wgZmlsbEpTVmFsdWUoRWRnZSwgR1BS
UmVnJiwgR1BSUmVnJiwgRlBSUmVnJik7CiAjZW5kaWYKQEAgLTIwMCw3ICsyMDAsMTIgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQogICAg
ICAgICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5kZWJ1Z09mZnNl
dCgpKTsKICNlbmRpZgotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSA9IG1fZ3Bycy5h
bGxvY2F0ZVNwZWNpZmljKHNwZWNpZmljKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxs
TWU7CisgICAgICAgIGlmIChzcGVjaWZpYyA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
c3BlY2lmaWMgPSBtX2dwcnMuYWxsb2NhdGUoc3BpbGxNZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNwaWxsTWUgPSBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhzcGVjaWZpYyk7CisKICAg
ICAgICAgaWYgKHNwaWxsTWUuaXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHNwaWxsTWUpOwpAQCAtMzE1LDYgKzMyMCw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2hlY2tBcmd1bWVudFR5cGVzKCk7CiAKKyAgICB2b2lkIHNldHVwQXJndW1lbnRSZWdpc3Rl
cnNGb3JFbnRyeSgpOworCiAgICAgdm9pZCBjbGVhckdlbmVyYXRpb25JbmZvKCk7CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyAndW5leHBlY3RlZCcKQEAg
LTQ4NSw2ICs0OTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIg
dG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkK
ICAgICB7CisgICAgICAgIGlmIChzcGlsbE1lLmlzQXJndW1lbnQoKSAmJiBtX2Jsb2NrLT5pbmRl
eCA+IDApCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIoc3BpbGxNZSk7CiAKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQpAQCAtNjEzLDYgKzYyMywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgdW5sb2NrQXJndW1lbnRSZWdpc3RlcnMoKQor
ICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCByZWdJbmRleCA9IDA7IHJlZ0luZGV4IDwgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsgcmVnSW5kZXgrKykgeworICAgICAgICAgICAgR1BS
UmVnIGFyZ1JlZ2lzdGVyID0gYXJndW1lbnRSZWdpc3RlckZvcihyZWdJbmRleCk7CisgICAgICAg
ICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGFyZ1JlZ2lzdGVyKSkKKyAgICAgICAgICAgICAgICBt
X2dwcnMudW5sb2NrKGFyZ1JlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyOjpJbW02NCB2YWx1ZU9mSlNDb25z
dGFudEFzSW1tNjQoTm9kZSogbm9kZSkKICAgICB7CkBAIC0yODcyLDcgKzI4OTEsMTAgQEAgcHVi
bGljOgogCiAgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAg
IGlmICh2aXJ0dWFsUmVnaXN0ZXIuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ2Vu
ZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIEFTU0VSVCh2
aXJ0dWFsUmVnaXN0ZXIuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRH
ZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCldOwogICAgIH0KICAgICAKICAg
ICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKQEAgLTI4OTUsNiAr
MjkxNyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICAvLyBW
aXJ0dWFsIGFuZCBwaHlzaWNhbCByZWdpc3RlciBtYXBzLgogICAgIFZlY3RvcjxHZW5lcmF0aW9u
SW5mbywgMzI+IG1fZ2VuZXJhdGlvbkluZm87CisgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZvLCA4
PiBtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm87CiAgICAgUmVnaXN0ZXJCYW5rPEdQUkluZm8+IG1f
Z3ByczsKICAgICBSZWdpc3RlckJhbms8RlBSSW5mbz4gbV9mcHJzOwogCkBAIC0yOTkzLDYgKzMw
MTYsMjAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBleHBsaWNpdCBKU1ZhbHVlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2Us
IEdQUlJlZyByZWdUb1VzZSkKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdl
KGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSB8fCByZWdUb1VzZSAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgZ3ByVXNlU3BlY2lmaWMocmVnVG9Vc2UpOworICAg
IH0KKyNlbmRpZgorICAgIAogICAgIH5KU1ZhbHVlT3BlcmFuZCgpCiAgICAgewogICAgICAgICBp
ZiAoIW1fZWRnZSkKQEAgLTMwMjksNiArMzA2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsSlNWYWx1ZShtX2VkZ2UpOwogICAgICAgICByZXR1
cm4gbV9ncHJPckludmFsaWQ7CiAgICAgfQorICAgIEdQUlJlZyBncHJVc2VTcGVjaWZpYyhHUFJS
ZWcgcmVnVG9Vc2UpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVl
KG1fZWRnZSwgcmVnVG9Vc2UpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAg
fQogICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlUmVncyhncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw2ICsyNzYsOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgTm9kZSogc2V0TG9jYWwgPSBudWxscHRyOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGxvY2FsID0gbV9ub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
bG9jYWwuaXNBcmd1bWVudCgpICYmIG1fZ3JhcGgubV9zdHJlbmd0aFJlZHVjZUFyZ3VtZW50cyAh
PSBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ub2RlSW5kZXg7IGktLTspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaSk7CiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2NhbCkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsMTUgKzEzMCwzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlU
aHVua0dlbmVyCiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2Yo
UmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoaW50MzJfdCkpKSk7CiAg
ICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1Qx
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1zdGF0
aWNfY2FzdDxpbnRwdHJfdD4oQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkpLmxp
bmtUbyhsb29wLCAmaml0KTsKICAgICAKLSAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7Cisg
ICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9m
ZnNldE9mVGFyZ2V0UEMpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZv
Ojpub25BcmdHUFIwLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxMDAwKSkpKTsKICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9r
LmxpbmsoJmppdCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMK
KyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVn
IGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBq
aXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgYXJnQ291bnRSZWcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBkb25lTG9hZGluZ0FyZ3M7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9
IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgrKykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAr
IGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGRvbmVM
b2FkaW5nQXJncy5saW5rKCZqaXQpOworI2VuZGlmCisgICAgCiAgICAgaml0LnJlc3RvcmVDYWxs
ZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpOwogICAgIGppdC5lbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogCi0gICAgaml0Lmp1bXAoR1BSSW5mbzo6
cmVnVDEpOworICAgIGppdC5qdW1wKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBlbnRyeSB0aHVuayIpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHJ1bigpCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fcGxhbi5tb2RlID09IERGR01vZGUp
OwotICAgICAgICAKKwogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZUZUTEpJVCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgICAgICBpZiAobV9ncmFwaC5tX3By
b2ZpbGVkQmxvY2stPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgYmxv
Y2spLCAhYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKSB8fCBibG9jay0+dmFyaWFi
bGVzQXRIZWFkLmFyZ3VtZW50KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKICAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpCiAgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgYmxvY2spLCAh
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChpKSB8fCBibG9jay0+dmFyaWFibGVzQXRU
YWlsLmFyZ3VtZW50KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsKLSAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0aW9ucy5hcmd1bWVudChpKSA9IG5vdFNl
dDsKICAgICAgICAgICAgICAgICBzZXRMb2NhbFBvc2l0aW9ucy5hcmd1bWVudChpKSA9IG5vdFNl
dDsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDggKzEzMywxMyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJl
Y29uc3RydWN0KAogICAgIGlmICghaW5kZXgpIHsKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzID0g
T3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZh
cmlhYmxlcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJl
Y292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOwor
ICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTKSB7CisgICAgICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVy
eTo6aW5HUFIoCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJ
bkpTU3RhY2soCisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVJlY292
ZXJpZXMub3BlcmFuZEZvckluZGV4KGkpKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxLDYgKzE2NiwxMyBAQCB2
b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgICAgICAgICAgTWluaWZp
ZWRHZW5lcmF0aW9uSW5mbyBpbmZvOwogICAgICAgICAgICAgaW5mby51cGRhdGUoZXZlbnQpOwog
ICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9zLmFkZChldmVudC5pZCgpLCBpbmZvKTsKKyAgICAg
ICAgICAgIE1pbmlmaWVkTm9kZSogbm9kZSA9IGdyYXBoLmF0KGV2ZW50LmlkKCkpOworICAgICAg
ICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByID0gZXZlbnQuZ3By
KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnQgPSBqc0Z1bmN0aW9uQXJndW1l
bnRGb3JBcmd1bWVudFJlZ2lzdGVyKGdwcik7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50UmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpOwor
ICAgICAgICAgICAgICAgIG9wZXJhbmRTb3VyY2VzLnNldE9wZXJhbmQoYXJndW1lbnRSZWcsIFZh
bHVlU291cmNlKGV2ZW50LmlkKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsMzMgQEAgcHVibGljOgogICAgICAgICA6IFBoYXNlKGdyYXBoLCAidmlydHVh
bCByZWdpc3RlciBhbGxvY2F0aW9uIikKICAgICB7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBh
bGxvY2F0ZVJlZ2lzdGVyKFNjb3JlQm9hcmQmIHNjb3JlQm9hcmQsIE5vZGUqIG5vZGUpCisgICAg
eworICAgICAgICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUn
cyBjaGlsZHJlbiwgdGhlbgorICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBm
b3IgdGhpcyBub2RlLiBXZSBkbyBzbyBpbiB0aGlzCisgICAgICAgIC8vIG9yZGVyIHNvIHRoYXQg
aWYgYSBjaGlsZCBpcyBvbiBpdHMgbGFzdCB1c2UsIGFuZCBhCisgICAgICAgIC8vIFZpcnR1YWxS
ZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgorICAgICAg
ICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUt
PmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAg
ICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNjb3JlQm9hcmQu
dXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc2NvcmVCb2FyZC51
c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
bm9kZS0+aGFzUmVzdWx0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKKyAgICAg
ICAgbm9kZS0+c2V0VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIC8v
ICdtdXN0R2VuZXJhdGUnIG5vZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5IGVs
ZXZhdGVkLAorICAgICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAg
ICAgICAgaWYgKG5vZGUtPm11c3RHZW5lcmF0ZSgpKQorICAgICAgICAgICAgc2NvcmVCb2FyZC51
c2Uobm9kZSk7CisgICAgfQorCiAgICAgYm9vbCBydW4oKQogICAgIHsKICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CkBA
IC01OSw2ICs4NSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXNhZ2Ug
b2YgaGlnaGVzdC1udW1iZXJlZCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgICAgICBz
Y29yZUJvYXJkLnNvcnRGcmVlKCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhh
bmRsZSBHZXRBcmd1bWVudFJlZ2lzdGVyIE5vZGVzIGZpcnN0IGFzIHRoZSByZWdpc3RlciBpcyBh
bGl2ZSBvbiBlbnRyeQorICAgICAgICAgICAgLy8gdG8gdGhlIGZ1bmN0aW9uIGFuZCBtYXkgbmVl
ZCB0byBiZSBzcGlsbGVkIGJlZm9yZSBhbnkgdXNlLgorICAgICAgICAgICAgaWYgKCFibG9ja0lu
ZGV4KSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5k
ZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxsb2NhdGVSZWdpc3RlcihzY29yZUJvYXJkLCBub2RlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJ
bkJsb2NrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleElu
QmxvY2spOwogICAgICAgICAKQEAgLTczLDMyICsxMTAsMTQgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+
Y2hpbGQxKCktPmhhc1Jlc3VsdCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRmlyc3Qs
IGNhbGwgdXNlIG9uIGFsbCBvZiB0aGUgY3VycmVudCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KLSAg
ICAgICAgICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2Rl
LiBXZSBkbyBzbyBpbiB0aGlzCi0gICAgICAgICAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBh
IGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAvLyBWaXJ0
dWFsUmVnaXN0ZXIgaXMgZnJlZWQsIHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4KLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxk
KCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsg
Y2hpbGRJZHgrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNS
ZXN1bHQobV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3Vs
dChub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZI
YXNSZXN1bHQobm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJk
LnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUtPmhhc1Jlc3VsdCgpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBzY29yZUJvYXJkLmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0
VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgLy8gJ211
c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0
ZWQsCi0gICAgICAgICAgICAgICAgLy8gY2FsbCB1c2Ugbm93IHRvIGFjY291bnQgZm9yIHRoaXMu
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm11c3RHZW5lcmF0ZSgpKQotICAgICAgICAgICAg
ICAgICAgICBzY29yZUJvYXJkLnVzZShub2RlKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0ZVJl
Z2lzdGVyKHNjb3JlQm9hcmQsIG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2Nv
cmVCb2FyZC5hc3NlcnRDbGVhcigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAg
Y2FzZSBHZXRDYWxsZWU6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2Ug
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBj
YXNlIFRvU3RyaW5nOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUu
Y3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJ
VENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw4IEBAIEpJVENvZGU6On5KSVRD
b2RlKCkKICAgICAgICAgZGF0YUxvZygiRGVzdHJveWluZyBGVEwgSklUIGNvZGUgYXQgIik7CiAg
ICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9iM0Nv
ZGUpOwotICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAg
ICAgICAgZGF0YUxvZyhjb21tYSwgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5
UG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlF
bnRyeVBvaW50KTsKICAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICB9CiB9CkBAIC02MCwzMSAr
NjEsMzAgQEAgdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZAogICAgIG1f
YjNCeXByb2R1Y3RzID0gV1RGTW92ZShieXByb2R1Y3RzKTsKIH0KIAotdm9pZCBKSVRDb2RlOjpp
bml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0ciBhZGRyZXNzKQordm9pZCBKSVRDb2RlOjpp
bml0aWFsaXplRW50cnlwb2ludFRodW5rKENvZGVSZWYgZW50cnlwb2ludFRodW5rKQogewotICAg
IG1fYWRkcmVzc0ZvckNhbGwgPSBhZGRyZXNzOworICAgIG1fZW50cnlwb2ludFRodW5rID0gZW50
cnlwb2ludFRodW5rOwogfQogCi12b2lkIEpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50
cnlwb2ludChDb2RlUmVmIGVudHJ5cG9pbnQpCit2b2lkIEpJVENvZGU6OnNldEVudHJ5Rm9yKEVu
dHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50cnkpCiB7Ci0gICAgbV9hcml0eUNoZWNrRW50
cnlwb2ludCA9IGVudHJ5cG9pbnQ7CisgICAgbV9lbnRyeXBvaW50cy5zZXRFbnRyeUZvcih0eXBl
LCBlbnRyeSk7CiB9Ci0KLUpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUgYXJpdHlDaGVjaykKKyAgICAKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29k
ZTo6YWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogewotICAgIHN3aXRj
aCAoYXJpdHlDaGVjaykgewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAg
ICByZXR1cm4gbV9hZGRyZXNzRm9yQ2FsbDsKLSAgICBjYXNlIE11c3RDaGVja0FyaXR5OgotICAg
ICAgICByZXR1cm4gbV9hcml0eUNoZWNrRW50cnlwb2ludC5jb2RlKCk7Ci0gICAgfQotICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENvZGVQdHIoKTsKKyAgICBD
b2RlUHRyIGVudHJ5ID0gbV9lbnRyeXBvaW50cy5lbnRyeUZvcihlbnRyeVR5cGUpOworICAgIFJF
TEVBU0VfQVNTRVJUKGVudHJ5KTsKKyAgICByZXR1cm4gZW50cnk7CiB9CiAKIHZvaWQqIEpJVENv
ZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRk
cmVzcygpKSArIG9mZnNldDsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxs
KFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkg
KyBvZmZzZXQ7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRy
ZXNzRm9yQ2FsbChTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpICsgb2Zmc2V0OworI2VuZGlmCiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNz
QXRPZmZzZXQoc2l6ZV90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
Q29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBKSVRD
b2RlKCk7CiAgICAgfkpJVENvZGUoKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJp
dHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQ
b2ludFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQo
c2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2lu
dGVySW50b0NvZGUpIG92ZXJyaWRlOwpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGluaXRpYWxpemVCM0NvZGUoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQjNCeXBy
b2R1Y3RzKHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4pOwotICAgIHZvaWQg
aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFy
aXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYpOwotICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVu
dHJ5cG9pbnRUaHVuayhDb2RlUmVmKTsKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRU
eXBlLCBDb2RlUHRyKTsKKwogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNr
ZWRSZWZlcmVuY2VzJikgb3ZlcnJpZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJz
VG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0
ZUluZGV4KSBvdmVycmlkZTsKQEAgLTc3LDcgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgQ29kZVB0
ciBtX2FkZHJlc3NGb3JDYWxsOwogICAgIENvZGVSZWYgbV9iM0NvZGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEIzOjpPcGFxdWVCeXByb2R1Y3RzPiBtX2IzQnlwcm9kdWN0czsKLSAgICBDb2RlUmVm
IG1fYXJpdHlDaGVja0VudHJ5cG9pbnQ7CisgICAgQ29kZVJlZiBtX2VudHJ5cG9pbnRUaHVuazsK
KyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5cG9pbnRzOworICAgIENvZGVQdHIgbV9yZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVy
QXJnc0NoZWNrQXJpdHlFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NBcml0eU9L
RW50cnlQb2ludDsKKyAgICBDb2RlUHRyIG1fc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5cG9pbnQ7
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24o
KQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwKICAgICAg
ICAgICAgICgiRlRMIEIzIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsKIAotICAg
IGppdENvZGUtPmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludCgKKyAgICBqaXRDb2RlLT5p
bml0aWFsaXplRW50cnlwb2ludFRodW5rKAogICAgICAgICBGSU5BTElaRV9DT0RFX0lGKAogICAg
ICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAg
ICAgICAoIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2Rl
IGF0ICVwIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ss
IEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3
LDExMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAgIHN3aXRjaCAoZ3JhcGgu
bV9wbGFuLm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6IHsKLSAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBtYWluUGF0aEp1bXBzOwotICAgIAotICAgICAgICBqaXQubG9hZDMyKAotICAg
ICAgICAgICAgZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCksCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAg
IG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRo
OworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHRvTWFpblBhdGg7CisKKyAgICAgICAg
dW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIHVuc2lnbmVkIG1heFJlZ2lzdGVyQXJndW1lbnRD
b3VudCA9IHN0ZDo6bWluKG51bVBhcmFtZXRlcnMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMgKyAxXTsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIC8vIFNw
aWxsIGFueSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8g
dGhlIHN0YWNrLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOyBhcmdJbmRleCA+PSBudW1QYXJh
bWV0ZXJzOyBhcmdJbmRleC0tKSB7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNF
bnRyeXBvaW50c1thcmdJbmRleCArIDFdID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAg
aml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdp
c3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEp
OworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0K
KworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9Bcml0eUZpeHVwOwor
ICAgICAgICAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NDaGVja0FyaXR5
RW50cnkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6
U3RhY2tBcmdzQXJpdHkpOworICAgICAgICBqaXQubG9hZDMyKGZyYW1lLndpdGhPZmZzZXQoc2l6
ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmFwcGVuZChqaXQuYnJhbmNoMzIo
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJlbG93LCBHUFJJbmZvOjpyZWdUMSwKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNp
ZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjb250aW51
ZVRvU3RhY2tBcml0eU9rID0gaml0Lmp1bXAoKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFja0FyZ3NBcml0eU9LRW50cnkgPSBqaXQubGFiZWwoKTsK
KworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisK
KyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVlVG9TdGFja0FyaXR5T2su
bGluaygmaml0KTsKKyNlbmRpZgorCisgICAgICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGlu
dG8gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgICAgIC8vIFJlZ0NDIFRvZG86IFdvdWxkIGxpa2Ug
dG8gZWxpbWluYXRlIHRoZXNlLCBidXQgd2UgY3VycmVudGx5IGNhbid0IGp1bXAgaW50byB0aGUg
QjMKKyAgICAgICAgLy8gY29tcGlsZWQgY29kZSBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgYWZ0ZXIg
d2hlcmUgdGhlIHJlZ2lzdGVycyBhcmUgc3RvcmVkIHRvIHRoZSBzdGFjay4KKyNpZiAxCisgICAg
ICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgaml0
LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkp
OworI2VuZGlmCisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsg
YXJnSW5kZXggPCBtYXhSZWdpc3RlckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAg
ICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0lu
ZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAg
ICAgICAKKyAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIAor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSA9
IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdz
QXJpdHkpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29udGludWVUb1JlZ2lz
dGVyQXJpdHlGaXh1cDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBjaGVja0ZvckV4dHJh
UmVnaXN0ZXJBcmd1bWVudHM7CisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpF
cXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKSk7CisgICAgICAgICAgICBjb250aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChq
aXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpCZWxvdywgYXJnQ291
bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisgICAg
ICAgICAgICAvLyAgRmFsbCB0aHJvdWdoIHRvIHRoZSAiZXh0cmEgcmVnaXN0ZXIgYXJpdHkiIGNh
c2UuCisKKyAgICAgICAgICAgIGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cyA9IGppdC5s
YWJlbCgpOworICAgICAgICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50
cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ0luZGV4ID0gbnVtUGFyYW1ldGVyczsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICAg
ICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QmVsb3dPckVx
dWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7
CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJv
bG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJ
bmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRo
LmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1Q
YXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250aW51
ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChqaXQuanVtcCgpKTsKKyNlbmRpZgorCisgICAg
ICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAgICAgLy8gIFRoZXJlIHNob3Vs
ZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gaml0LmxhYmVsKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJ
bmRleCA8IG51bVBhcmFtZXRlcnMgJiYgYXJnSW5kZXggPD0gbWF4UmVnaXN0ZXJBcmd1bWVudENv
dW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlw
b2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAgICAg
ICAgfQorCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpSZWdBcmdzQXJpdHkpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmxpbmsoJmppdCk7CisKKyAgICAgICAgaml0LnNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUobWF4UmVnaXN0ZXJBcmd1bWVu
dENvdW50KTsKKworICAgICAgICBjb250aW51ZVRvQXJpdHlGaXh1cC5saW5rKCZqaXQpOworCisg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7CisK
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAg
ICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJh
bWUpOwpAQCAtMTU1LDExICsyNTEsMjAgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIAogICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1haW5Q
YXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFp
blBhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsQXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7CiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBz
LmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5kQ29udGludWVN
YWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENv
bnRpbnVlTWFpblBhdGgubGlua1RvKHN0YWNrQXJnc0FyaXR5T0tFbnRyeSwgJmppdCk7CisKKyNp
ZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0
ZXJFbnRyeU5vQXJpdHkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigm
aml0LCBWTTo6UmVnQXJnc05vQXJpdHkpOworICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQu
anVtcCgpKTsKKyNlbmRpZgogCiAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKQEAgLTE2OSw5
ICsyNzQsMzUgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRp
b25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwogICAgICAg
ICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKICAgICAgICAgbGlu
a0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENUSVN0dWIo
YXJpdHlGaXh1cEdlbmVyYXRvcikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAg
ICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wcywgQ29kZUxvY2F0aW9uTGFiZWwoYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKKyAgICAgICAgbGlu
a0J1ZmZlci0+bGluayh0b01haW5QYXRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOworCisgICAgICAgIHN0YXRlLmppdENv
ZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkpOworICAgICAgICBzdGF0ZS5qaXRDb2Rl
LT5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2Yoc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CiAKLSAgICAgICAgc3RhdGUuaml0
Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeSA9IGxp
bmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeU5vQXJpdHkpOworI2Vsc2UKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeSA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSk7CisjZW5kaWYK
KyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkLCBtYWluRW50cnkpOworCisgICAgICAgIGlmIChjaGVja0ZvckV4dHJhUmVn
aXN0ZXJBcmd1bWVudHMuaXNTZXQoKSkKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVu
dHJ5Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlv
bk9mKGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cykpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQb3NzaWJsZUV4
dHJhQXJncywgbWFpbkVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHN0YXRl
LmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSkpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgYXJnQ291bnQgPSAxOyBhcmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdDb3VudCsrKSB7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVt
UGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBlbnRyeSA9IG1haW5FbnRyeTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdLmlzU2V0
KCkpCisgICAgICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lz
dGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5KTsKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9y
KEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoYXJnQ291
bnQpLCBlbnRyeSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
QEAgLTE4MSw3ICszMTIsMjEgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgLy8g
cG9pbnQgd2UndmUgZXZlbiBkb25lIHRoZSBzdGFjayBjaGVjay4gQmFzaWNhbGx5IHdlIGp1c3Qg
aGF2ZSB0byBtYWtlIHRoZQogICAgICAgICAvLyBjYWxsIHRvIHRoZSBCMy1nZW5lcmF0ZWQgY29k
ZS4KICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFydCA9IGppdC5sYWJlbCgpOworCiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworCisgICAgICAgIC8vIExvYWQgYXJn
dW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJzCisKKyAgICAgICAgLy8gUmVnQ0Mg
VG9kbzogV291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UsIGJ1dCB3ZSBjdXJyZW50bHkgY2Fu
J3QganVtcCBpbnRvIHRoZSBCMworICAgICAgICAvLyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0
cmFyeSBwb2ludCBhZnRlciB3aGVyZSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgdG8gdGhlIHN0
YWNrLgorI2lmIDEKKyAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpOworICAgICAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZv
ckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRG
cm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdp
c3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKwogICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxp
bmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKQEAgLTE5MSw3ICszMzYsNyBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICB9CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBh
dGhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVy
YXRlZEZ1bmN0aW9uKSkpOwogCi0gICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRy
ZXNzRm9yQ2FsbChsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CisgICAgICAgIHN0YXRl
LmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwg
bGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ1R5cGVOdW1iZXItPmtl
eSgpKTsKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ01hc2stPmtleSgpKTsK
ICAgICAgICAgCisgICAgICAgIC8vIFN0b3JlIG91dCBjYWxsZWUgYW5kIGFyZ3VtZW50IGNvdW50
IGZvciBwb3NzaWJsZSBPU1IgZXhpdC4KKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVF
KQorICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpKSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsK
KyNlbmRpZgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKKyAgICAgICAgbV9v
dXQuc3RvcmUzMihtX291dC5hcmd1bWVudFJlZ2lzdGVySW50MzIoYXJndW1lbnRSZWdpc3RlckZv
ckFyZ3VtZW50Q291bnQoKSksIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpOworI2VuZGlmCisKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIo
Y29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogCiAg
ICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgpAQCAtMjQ3LDIwICsyNTUsMzQgQEAgcHVi
bGljOgogICAgICAgICAvLyBDaGVjayBBcmd1bWVudHMuCiAgICAgICAgIGF2YWlsYWJpbGl0eU1h
cCgpLmNsZWFyKCk7CiAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzID0gT3BlcmFu
ZHM8QXZhaWxhYmlsaXR5Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpLCAwKTsKKworICAg
ICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50Tm9kZXM7CisgICAgICAgIFZlY3RvcjxMVmFs
dWUsIDg+IGFyZ3VtZW50VmFsdWVzOworCisgICAgICAgIGFyZ3VtZW50Tm9kZXMucmVzaXplKGNv
ZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICBhcmd1bWVudFZhbHVlcy5yZXNp
emUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAgICAgbV9oaWdoQmxvY2sg
PSBtX2dyYXBoLmJsb2NrKDApOworCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1h
cCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0KLSAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHko
Rmx1c2hlZEF0KEZsdXNoZWRKU1ZhbHVlLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkp
OwotICAgICAgICB9Ci0gICAgICAgIG1fbm9kZSA9IG51bGxwdHI7Ci0gICAgICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykg
ewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldOwog
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBt
X291dC5sb2FkNjQoYWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICAKKyAgICAgICAg
ICAgIExWYWx1ZSBqc1ZhbHVlID0gbnVsbHB0cjsKKwogICAgICAgICAgICAgaWYgKG5vZGUpIHsK
LSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9wZXJhbmQgPT0gbm9k
ZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CisgICAgICAgICAgICAgICAgaWYg
KGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0gQXZh
aWxhYmlsaXR5KG5vZGUpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlID0gbV9vdXQuYXJn
dW1lbnRSZWdpc3RlcihHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRS
ZWdpc3RlckluZGV4KCkpKTsKKworICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKG5vZGUs
IGpzVmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIEF2YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIG9wZXJhbmQp
KTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2Rl
LT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSB8fCBvcGVyYW5kID09IG5vZGUtPnN0YWNrQWNj
ZXNzRGF0YSgpLT5tYWNoaW5lTG9jYWwpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgYSBoYWNrLCBidXQgaXQncyBhbiBlZmZlY3RpdmUgb25lLiBJdCBhbGxv
d3MgdXMgdG8gZG8gQ1NFIG9uIHRoZQogICAgICAgICAgICAgICAgIC8vIHByaW1vcmRpYWwgbG9h
ZCBvZiBhcmd1bWVudHMuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBHZXRMb2NhbCB0aGF0IGdvdCBw
dXQgaW4KQEAgLTI2OCw3ICsyOTAsMjEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIHNo
b3VsZCBob2xkIHRydWUuCiAgICAgICAgICAgICAgICAgbV9sb2FkZWRBcmd1bWVudFZhbHVlcy5h
ZGQobm9kZSwganNWYWx1ZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFyZ3VtZW50
Tm9kZXNbaV0gPSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRWYWx1ZXNbaV0gPSBqc1ZhbHVl
OworICAgICAgICB9CisKKyAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKKyAgICAgICAgbV9vcmln
aW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07
KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnROb2Rlc1tpXTsKICAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IGFyZ3VtZW50VmFsdWVzW2ldOworCiAgICAg
ICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0pIHsKICAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBl
LCBqc1ZhbHVlVmFsdWUoanNWYWx1ZSksIG5vZGUsIGlzTm90SW50MzIoanNWYWx1ZSkpOwpAQCAt
ODEwLDYgKzg0Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CisgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRSZWdpc3RlcigpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICBjb21waWxl
R2V0U2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTM5NCw2ICs1NDMzLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUdl
dEFyZ3VtZW50UmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBhbHJl
YWR5IGhhdmUgYSB2YWx1ZSBmb3IgdGhpcyBub2RlLgorICAgICAgICBpZiAoTFZhbHVlIHZhbHVl
ID0gbV9sb2FkZWRBcmd1bWVudFZhbHVlcy5nZXQobV9ub2RlKSkgeworICAgICAgICAgICAgc2V0
SlNWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihtX25vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSkpOworICAgIH0KKyAgICAKICAg
ICB2b2lkIGNvbXBpbGVHZXRTY29wZSgpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Nj
b3BlKSk7CkBAIC01ODA2LDkgKzU4NTUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdGhlIGNh
bGwuCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CiAKLSAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8gR1BSMCBiZWNhdXNlIHRo
YXQncyB3aGVyZSB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlCi0gICAgICAgIC8vIGNh
bGxlZSB0byBiZS4KLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpz
Q2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNsb3cgcGF0aCB0aHVua3Mg
ZXhwZWN0IHRoZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1
bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAKICAgICAg
ICAgYXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVnLCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXRGcm9tU1AgPQpA
QCAtNTgxNiwxMCArNTg2NiwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZz
ZXRGcm9tU1ApKSk7CiAgICAgICAgIH07CiAKKyAgICAgICAgQXJndW1lbnRzTG9jYXRpb24gYXJn
TG9jYXRpb24gPSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BcmdzKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxMRUUpCiAgICAgICAgIGFkZEFy
Z3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwg
MCk7CisjZW5kaWYKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1f
b3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZv
ckFyZ3VtZW50Q291bnQoKSkpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkK
ICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKLSAgICAgICAgICAg
IGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5kaWYKKworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKSB7CisgICAgICAgICAgICBpZiAo
aSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
ICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgIH0KIAog
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KElu
dDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVjdG9yKGFyZ3VtZW50cyk7CkBAIC01
ODQ4LDkgKzU5MTAsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIAor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNr
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzbG93UGF0aCA9IGppdC5icmFu
Y2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIEdQUkluZm86OnJlZ1QwLCB0YXJnZXRUb0NoZWNrLAorICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVSZWcsIHRhcmdldFRvQ2hlY2ssCiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdENhbGwgPSBqaXQubmVhckNhbGwoKTsKQEAg
LTU4NTgsMTMgKzU5MjIsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRo
LmxpbmsoJmppdCk7CiAKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7CiAKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0
cnVjdCA6IENhbGxMaW5rSW5mbzo6Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGFyZ0xv
Y2F0aW9uLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUo
KSk7CiAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtcGFyYW1zLnByb2MoKS5mcmFtZVNpemUoKSksCkBA
IC01ODczLDcgKzU5MzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5r
VGFzaygKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwg
PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0
aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNTkxNywyMCArNTk4
MSwzOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFs
dWU+IGFyZ3VtZW50czsKICAgICAgICAgCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJlZ2lzdGVyRm9y
Q2FsbGVlKCkgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNsb3cgcGF0aCB0
aHVua3MgZXhwZWN0IHRoZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcg
PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAg
ICAgICAgIGlmICghaXNUYWlsKSB7CiAgICAgICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZd
IChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAg
ICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXRGcm9tU1AgPQogICAgICAgICAgICAgICAgICAgICAo
cmVnLm9mZnNldCgpIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZz
ZXRGcm9tU1ApKSk7CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgCisKKyAgICAgICAgICAg
IGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJl
ZyhjYWxsZWVSZWcpKSk7CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQogICAgICAg
ICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKG1fb3V0LmNvbnN0SW50MzIobnVtUGFzc2VkQXJncyksIFZhbHVlUmVwOjpy
ZWcoYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSkpKTsKKyNpZiBFTkFCTEUoQ0FM
TEVSX1NQSUxMU19BUkdDT1VOVCkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0
SW50MzIobnVtUGFzc2VkQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKQotICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50
KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
dW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKQotICAgICAgICAgICAgICAg
IGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworI2VuZGlmCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdz
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSAr
IGkpKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChp
KSkpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFkZEFyZ3Vt
ZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkp
KSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWRkQXJndW1l
bnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJn
czsgKytpKQogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6
Oldhcm1BbnkpKTsKQEAgLTU5NzIsNiArNjA1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJh
bWVSZWdpc3RlckNvdW50OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVy
eTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0Q2VsbCk7CiAgICAgICAgICAgICAgICAgICAg
IHRvU2F2ZS5zZXQoY2FsbGVlR1BSKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkgewpAQCAtNTk5MCw3ICs2MDczLDExIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCA9IGppdC5wYXRjaGFibGVKdW1w
KCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbWFpblBhdGggPSBq
aXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAgICAg
aW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6VGFpbENhbGwpOworICAgICAgICAgICAgICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpEaXJlY3RDYWxsKTsKKwogICAgICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSkpOwpAQCAtNjAxMSw3ICs2MDk4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRV
cENhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxD
YWxsLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgYXJndW1lbnRzTG9jYXRp
b25Gb3IobnVtUGFzc2VkQXJncyksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJl
Zyk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmlu
Z0NvbXBpbGF0aW9uKGV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobnVtQWxs
b2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnNldE1heE51bUFyZ3VtZW50cyhudW1BbGxvY2F0ZWRBcmdzKTsKQEAgLTYwMzQs
NiArNjEyMSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwogCisgICAgICAgICAg
ICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpEaXJlY3RDYWxsKTsKKwogICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSkpOwpAQCAtNjA0NSw3ICs2MTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAg
ICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkRpcmVjdENvbnN0cnVjdCA6IENh
bGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRz
TG9jYXRpb25Gb3IobnVtUGFzc2VkQXJncyksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVy
aW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9j
YXRlZEFyZ3MgPiBudW1QYXNzZWRBcmdzKQogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldE1heE51bUFyZ3VtZW50cyhudW1BbGxvY2F0ZWRBcmdzKTsKQEAgLTYwNTYsMTMgKzYx
NDYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aCA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LnBvcChDQ2FsbEhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BS
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0Rp
cmVjdENhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbGVlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BS
MAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0g
aml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBl
bmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayhBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlv
bkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZhckp1bXBXaWR0aCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkBA
IC02MDcxLDYgKzYxNTksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBzbG93UGF0
aExvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGxpbmtDYWxsID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0RpcmVjdENhbGxU
aHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dD
YWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLApAQCAtNjEwMiw3ICs2MTkzLDggQEAg
cHJpdmF0ZToKIAogICAgICAgICBWZWN0b3I8Q29uc3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwog
Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFs
dWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMCkpKTsKKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9
IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKSB7CiAgICAgICAg
ICAgICAvLyBOb3RlOiB3ZSBjb3VsZCBsZXQgdGhlIHNodWZmbGVyIGRvIGJveGluZyBmb3IgdXMs
IGJ1dCBpdCdzIG5vdCBzdXBlciBjbGVhciB0aGF0IHRoaXMKQEAgLTYxMzYsOSArNjIyOCwxMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
Y29kZU9yaWdpbik7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZN
OjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06
OlRhaWxDYWxsKTsKKwogICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZm
bGVEYXRhOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJz
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudDsKLSAgICAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihHUFJJbmZvOjpyZWdUMCwgRGF0
YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJl
Y292ZXJ5OjppbkdQUihjYWxsZWVSZWcsIERhdGFGb3JtYXRKUyk7CiAKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5hcmdzLmFwcGVuZChwYXJhbXNbMSArIGldLnJlY292ZXJ5Rm9ySlNW
YWx1ZSgpKTsKQEAgLTYxNDksNyArNjI0NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBzbG93UGF0aCA9IGppdC5icmFuY2hQdHJXaXRoUGF0Y2go
Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJl
Z1QwLCB0YXJnZXRUb0NoZWNrLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBjYWxsZWVSZWcsIHRhcmdldFRvQ2hlY2ssCiAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwpAQCAtNjE2NywyMCArNjI2
MywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAg
ICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVm
ZmxlRGF0YSk7Ci0gICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1Zh
bHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOwogICAgICAgICAgICAgICAgIHNs
b3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7CiAKLSAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5m
bzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKIAogICAg
ICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxs
KTsKIAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5m
bzo6VGFpbENhbGwsIGNvZGVPcmlnaW4sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBhcmd1bWVu
dHNMb2NhdGlvbkZvcihudW1BcmdzKSwgY29kZU9yaWdpbiwgY2FsbGVlUmVnKTsKIAogICAgICAg
ICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5r
RW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+
YXJndW1lbnRzTG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRp
b25zKApAQCAtNjI3MCw2ICs2MzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgICAgICAgICAgICAg
QXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAKICAgICAg
ICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJl
Z2lzdGVycygpOwogICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3Rl
clNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CkBAIC02NDE5LDcgKzY1MTUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAg
ICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgICAgICAgICAgICAgIEFT
U0VSVCghdXNlZFJlZ2lzdGVycy5nZXQoR1BSSW5mbzo6cmVnVDIpKTsKLSAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BS
SW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY0Mjcs
NyArNjUyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBD
YWxsKGNhbGxUeXBlLCBhcmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBH
UFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdo
dCksCkBAIC02NDM2LDcgKzY1MzIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlu
a0NhbGwgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRD
VElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjUzNywx
MSArNjYzMywxNSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxl
LT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwog
CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpDYWxsVmFyYXJncyk7
CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0
cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKCk7CisgICAgICAgICAgICAgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9j
YXRpb24gPSBTdGFja0FyZ3M7CiAgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRh
ID0gbm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmdJbmRleCA9IDE7CkBAIC02NzAyLDcgKzY4MDIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC02NzEwLDcgKzY4MTAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgYXJndW1lbnRzTG9j
YXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5hbFN0YWNrSGVpZ2h0KSwKQEAgLTY3
MTksNyArNjgxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNr
KAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC02Nzg4LDEzICs2ODg4LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+
IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFt
cyktPmp1bXBzKGppdCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRl
SW5kZXgpOwotICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZqaXQsIFZNOjpDYWxsRXZhbCk7CisKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJ
bmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGpp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVw
Q2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QxLCBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTksOCArOTksMTIgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIH0KICAgICAKICAg
ICBleGVjLT5zZXRDb2RlQmxvY2soZW50cnlDb2RlQmxvY2spOwotICAgIAotICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKS5l
eGVjdXRhYmxlQWRkcmVzcygpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIHZvaWQqIHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwo
UmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
I2Vsc2UKKyAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgog
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICBFbnRy
eSB3aWxsIHN1Y2NlZWQsIGdvaW5nIHRvIGFkZHJlc3MiLCBSYXdQb2ludGVyKHJlc3VsdCksICJc
biIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAko
cmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxNiBAQCB2b2lkIE91dHB1dDo6YXBwZW5k
VG8oTEJhc2ljQmxvY2sgYmxvY2spCiAgICAgbV9ibG9jayA9IGJsb2NrOwogfQogCitMVmFsdWUg
T3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVyKFJlZyByZWcpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCByZWcpOworfQor
CitMVmFsdWUgT3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVySW50MzIoUmVnIHJlZykKK3sKKyAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHJlZywgSW50MzIpOworfQorCiBMVmFsdWUgT3V0cHV0OjpmcmFtZVBvaW50ZXIoKQogewog
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFt
ZVBvaW50ZXIsIG9yaWdpbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRPcmlnaW4oREZHOjpOb2RlKiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQogICAgIEIz
OjpPcmlnaW4gb3JpZ2luKCkgeyByZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KIAorICAg
IExWYWx1ZSBhcmd1bWVudFJlZ2lzdGVyKFJlZyByZWcpOworICAgIExWYWx1ZSBhcmd1bWVudFJl
Z2lzdGVySW50MzIoUmVnIHJlZyk7CiAgICAgTFZhbHVlIGZyYW1lUG9pbnRlcigpOwogCiAgICAg
QjM6OlNsb3RCYXNlVmFsdWUqIGxvY2tlZFN0YWNrU2xvdChzaXplX3QgYnl0ZXMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2Vu
LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTYgKzI4NCwyNCBA
QCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYsIEV4ZWNTdGF0CiAgICAgICAgICAgICBi
b29sIGZvdW5kRnJhbWUgPSBhZHZhbmNlSW5kZXhJbkxvZ1RvKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgICAgICAgICAgYm9v
bCBpc1RhaWxEZWxldGVkID0gZmFsc2U7CiAgICAgICAgICAgICBKU1Njb3BlKiBzY29wZSA9IG51
bGxwdHI7CisgICAgICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRo
RGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2st
PnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChmb3VuZEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleElu
TG9nXS5zY29wZTsKLSAgICAgICAgICAgICAgICBpZiAoc2NvcGUpCisgICAgICAgICAgICBpZiAo
Y29kZUJsb2NrICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2Rlcygp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgICAgICBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMoSlNTY29wZTo6aW5mbygpKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNjb3BlKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlID0gbV9sb2dbaW5k
ZXhJbkxvZ10uc2NvcGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjpp
bmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICAgICB0aGlzVmFsdWUgPSBtX2xvZ1tp
bmRleEluTG9nXS50aGlzVmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b1B1c2gu
YXBwZW5kKEZyYW1lKHZpc2l0b3ItPmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2Fs
bFNpdGVJbmRleCgpKSk7CisgICAgICAgICAgICB0b1B1c2guYXBwZW5kKEZyYW1lKHZpc2l0b3It
PmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQsIHRoaXNWYWx1ZSwgc2NvcGUsIGNv
ZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKIAogICAgICAgICAgICAgaWYg
KGluZGV4SW5Mb2cgPCBsb2dDdXJzb3JJbmRleAogICAgICAgICAgICAgICAgIC8vIFRoaXMgY29u
ZGl0aW9uIHByb3RlY3RzIHVzIGZyb20gdGhlIGNhc2Ugd2hlcmUgYWR2YW5jZUluZGV4SW5Mb2dU
byBkaWRuJ3QgZmluZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsMTMgKzYxNiwx
MyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6cmVzdG9yZUNhbGxlZVNhdmVzCiAKIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjplbWl0RHVtYlZpcnR1YWxDYWxsKENhbGxMaW5rSW5mbyogaW5mbykKIHsK
LSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIENhbGwgY2Fs
bCA9IG5lYXJDYWxsKCk7CiAgICAgYWRkTGlua1Rhc2soCiAgICAgICAgIFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcigmbGlua0J1ZmZlci52bSgpLCAqaW5mbyk7Ci0gICAg
ICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1
bmssIGxpbmtCdWZmZXIudm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOwotICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5jb2RlKCkpKTsK
KyAgICAgICAgICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0ZvcigmbGlua0J1ZmZlci52bSgpLCAqaW5mbyk7CisgICAgICAgICAg
ICBpbmZvLT5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29k
ZVJlZigpLCBsaW5rQnVmZmVyLnZtKCksIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh2aXJ0dWFsVGh1bmsuZW50cnlG
b3IoU3RhY2tBcmdzKSkpOwogICAgICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MTQsNiArNDE0LDk3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIGVudW0gU3Bp
bGxSZWdpc3RlclR5cGUgeyBTcGlsbEFsbCwgU3BpbGxFeGFjdGx5IH07CisKKyAgICB2b2lkIHNw
aWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUodW5zaWduZWQgbWluaW11
bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxBbGwp
CisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAg
ICAgICAgSnVtcExpc3QgZG9uZVN0b3JpbmdBcmdzOworCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJ
TExTX0NBTExFRSkKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwor
I2VuZGlmCisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAg
ICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmdDb3VudFJlZywg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisjZW5kaWYKKworICAgICAgICB1bnNpZ25l
ZCBhcmdJbmRleCA9IDA7CisgICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAg
bWluaW11bUFyZ3NUb1NwaWxsID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisK
KyAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYmIGFyZ0luZGV4
IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykK
KyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisK
KyAgICAgICAgaWYgKHNwaWxsVHlwZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8gU3Bp
bGwgZXh0cmEgYXJncyBwYXNzZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBhcmdJ
bmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4
KyspIHsKKyAgICAgICAgICAgICAgICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVu
dFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBkb25lU3RvcmluZ0FyZ3MubGluayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNF
RF9QQVJBTShtaW5pbXVtQXJnc1RvU3BpbGwpOworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxU
eXBlKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1Rv
RnJhbWUodW5zaWduZWQgbWluaW11bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUg
c3BpbGxUeXBlID0gU3BpbGxBbGwpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgSnVtcExpc3QgZG9uZVN0b3JpbmdBcmdzOworCisj
aWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKTsKKyNlbmRpZgorICAgICAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpOworI2lmICFFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VO
VCkKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGFyZ0NvdW50UmVnLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgdW5zaWdu
ZWQgYXJnSW5kZXggPSAwOworICAgICAgICAvLyBBbHdheXMgc3BpbGwgInRoaXMiCisgICAgICAg
IG1pbmltdW1BcmdzVG9TcGlsbCA9IHN0ZDo6bWF4KG1pbmltdW1BcmdzVG9TcGlsbCwgMVUpOwor
ICAgICAgICAKKyAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYm
IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJn
SW5kZXgrKykKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lKGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNwaWxsVHlwZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8g
U3BpbGwgZXh0cmEgYXJncyBwYXNzZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBh
cmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0lu
ZGV4KyspIHsKKyAgICAgICAgICAgICAgICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1
bWVudFRvQ2FsbEZyYW1lKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0lu
ZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBkb25lU3RvcmluZ0FyZ3MubGluayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTShtaW5pbXVtQXJnc1RvU3BpbGwpOworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBl
KTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zy
b21GcmFtZUJlZm9yZVByb2xvZ3VlKCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBkb25lTG9hZGluZ0FyZ3M7CisK
KyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJh
bWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIEdQ
UlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisg
ICAgICAgIGVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKyAgICAgICAgCisgICAg
ICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgIGlm
IChhcmdJbmRleCkgLy8gQWx3YXlzIGxvYWQgInRoaXMiCisgICAgICAgICAgICAgICAgZG9uZUxv
YWRpbmdBcmdzLmFwcGVuZChicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBh
cmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAg
ICAgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJ
bmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsodGhpcyk7Cisj
ZW5kaWYKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgIHN0YXRpYyBz
aXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCiAgICAgewpAQCAtNjI0LDYgKzcxNSwz
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKICAgICB9CisKKyAgICB2
b2lkIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20s
IHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVz
cyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFy
Z3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9s
b2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRQdXRBcmd1
bWVudFRvQ2FsbEZyYW1lKEdQUlJlZyBmcm9tLCB1bnNpZ25lZCBhcmd1bWVudCkKKyAgICB7Cisg
ICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihmcm9tLCBDYWxsRnJhbWVTbG90Ojp0aGlz
QXJndW1lbnQgKyBhcmd1bWVudCk7CisgICAgfQorCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGNvbnN0IGludCBlbnRyeSwgR1BSUmVnIHRvKQorICAg
IHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAq
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQorICAgIAorICAgIHZvaWQgZW1pdEdldEZyb21D
YWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKHVuc2lnbmVkIGFyZ3VtZW50LCBHUFJSZWcg
dG8pCisgICAgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVudCkgKiBzdGF0aWNfY2FzdDxw
dHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
KSwgdG8pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFt
ZUhlYWRlckJlZm9yZVByb2xvZ3VlKGNvbnN0IGludCBlbnRyeSwgR1BSUmVnIHRvKQorICAgIHsK
KyAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpLCB0byk7CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGVtaXRQdXRQYXlsb2Fk
VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgaW50IGVudHJ5KQog
ICAgIHsKQEAgLTE2NDcsNyArMTc2MywxNCBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNj
cmF0Y2gpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgdm9p
ZCBpbmNyZW1lbnRDb3VudGVyKFZNOjpWTUNvdW50ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsK
KyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKHZtKCktPmFk
ZHJlc3NPZkNvdW50ZXIoY291bnRlclR5cGUpKSk7CisgICAgfQorI2VuZGlmCisKIHByb3RlY3Rl
ZDoKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTY1Niw2
ICsxNzc5LDEyIEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBtX2RlY29kZWRDb2RlTWFwczsKIH07CiAKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIoaml0LCBjb3VudGVy
VHlwZSkgKGppdCktPmluY3JlbWVudENvdW50ZXIoY291bnRlclR5cGUpCisjZWxzZQorI2RlZmlu
ZSBpbmNyZW1lbnRDb3VudGVyKGppdCwgY291bnRlclR5cGUpICgodm9pZCkwKQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQg
Q2FjaGVkUmVjb3Zlcnk6OmFkZFRhcmdldEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVS
ZWdzKQoreworICAgIEFTU0VSVChtX3dhbnRlZEZQUiA9PSBJbnZhbGlkRlBSUmVnKTsKKyAgICBz
aXplX3QgZXhpc3RpbmcgPSBtX2dwclRhcmdldHMuZmluZChqc1ZhbHVlUmVncyk7CisgICAgaWYg
KGV4aXN0aW5nID09IFdURjo6bm90Rm91bmQpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBpZiAobV9ncHJUYXJnZXRzLnNpemUoKSA+IDAgJiYgbV9yZWNvdmVyeS5pc1NldCgpICYmIG1f
cmVjb3ZlcnkuaXNJbkdQUigpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcmVjb3Zlcmlu
ZyB0byB0aGUgc2FtZSBHUFIsIG1ha2UgdGhhdCBHUFIgdGhlIGZpcnN0IHRhcmdldC4KKyAgICAg
ICAgICAgIEdQUlJlZyBzb3VyY2VHUFIgPSBtX3JlY292ZXJ5LmdwcigpOworICAgICAgICAgICAg
aWYgKGpzVmFsdWVSZWdzLmdwcigpID09IHNvdXJjZUdQUikgeworICAgICAgICAgICAgICAgIC8v
IEFwcGVuZCB0aGUgY3VycmVudCBmaXJzdCBHUFIgYmVsb3cuCisgICAgICAgICAgICAgICAganNW
YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncyhtX2dwclRhcmdldHNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgIG1fZ3ByVGFyZ2V0c1swXSA9IEpTVmFsdWVSZWdzKHNvdXJjZUdQUik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX2dwclRhcmdldHMuYXBwZW5kKGpz
VmFsdWVSZWdzKTsKKyAgICB9Cit9CisKIC8vIFdlIHByZWZlciBsb2FkaW5nIGRvdWJsZXMgYW5k
IHVuZGV0ZXJtaW5lZCBKU1ZhbHVlcyBpbnRvIEZQUnMKIC8vIGJlY2F1c2UgaXQgd291bGQgb3Ro
ZXJ3aXNlIHVzZSB1cCBHUFJzLiAgVHdvIGluIEpTVkFMVUUzMl82NC4KIGJvb2wgQ2FjaGVkUmVj
b3Zlcnk6OmxvYWRzSW50b0ZQUigpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NhY2hlZFJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWNoZWRSZWNvdmVyeS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlY292ZXJ5JiBvcGVyYXRvcj0oQ2FjaGVkUmVjb3Zl
cnkmJikgPSBkZWxldGU7CiAKICAgICBjb25zdCBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiYg
dGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxK
U1ZhbHVlUmVncywgMT4mIGdwclRhcmdldHMoKSBjb25zdCB7IHJldHVybiBtX2dwclRhcmdldHM7
IH0KIAogICAgIHZvaWQgYWRkVGFyZ2V0KFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAgewpAQCAt
NjgsMTUgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV90YXJnZXRzLmNsZWFyKCk7CiAgICAg
fQogCi0gICAgdm9pZCBzZXRXYW50ZWRKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyBqc1ZhbHVlUmVn
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3dhbnRlZEZQUiA9PSBJbnZhbGlkRlBSUmVnKTsK
LSAgICAgICAgbV93YW50ZWRKU1ZhbHVlUmVncyA9IGpzVmFsdWVSZWdzOwotICAgIH0KKyAgICB2
b2lkIGFkZFRhcmdldEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKTsKIAogICAgIHZvaWQgc2V0V2Fu
dGVkRlBSKEZQUlJlZyBmcHIpCiAgICAgewotICAgICAgICBBU1NFUlQoIW1fd2FudGVkSlNWYWx1
ZVJlZ3MpOworICAgICAgICBBU1NFUlQobV9ncHJUYXJnZXRzLmlzRW1wdHkoKSk7CiAgICAgICAg
IG1fd2FudGVkRlBSID0gZnByOwogICAgIH0KIApAQCAtMTE5LDE0ICsxMTYsMjAgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRSZWNvdmVyeShWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5KSB7IG1fcmVj
b3ZlcnkgPSByZWNvdmVyeTsgfQogCi0gICAgSlNWYWx1ZVJlZ3Mgd2FudGVkSlNWYWx1ZVJlZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3dhbnRlZEpTVmFsdWVSZWdzOyB9CisgICAgSlNWYWx1ZVJlZ3Mg
d2FudGVkSlNWYWx1ZVJlZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByVGFyZ2V0
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MoKTsKKworICAgICAg
ICByZXR1cm4gbV9ncHJUYXJnZXRzWzBdOworICAgIH0KIAogICAgIEZQUlJlZyB3YW50ZWRGUFIo
KSBjb25zdCB7IHJldHVybiBtX3dhbnRlZEZQUjsgfQogcHJpdmF0ZToKICAgICBWYWx1ZVJlY292
ZXJ5IG1fcmVjb3Zlcnk7Ci0gICAgSlNWYWx1ZVJlZ3MgbV93YW50ZWRKU1ZhbHVlUmVnczsKICAg
ICBGUFJSZWcgbV93YW50ZWRGUFIgeyBJbnZhbGlkRlBSUmVnIH07CiAgICAgVmVjdG9yPFZpcnR1
YWxSZWdpc3RlciwgMT4gbV90YXJnZXRzOworICAgIFZlY3RvcjxKU1ZhbHVlUmVncywgMT4gbV9n
cHJUYXJnZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIFZhbHVlUmVjb3Zl
cnkgY2FsbGVlOwogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmdzOwogI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgYm9vbCBhcmd1bWVudHNJblJlZ2lzdGVycyB7IGZhbHNlIH07CiAgICAgUmVn
aXN0ZXJNYXA8VmFsdWVSZWNvdmVyeT4gcmVnaXN0ZXJzOwogICAgIEdQUlJlZyB0YWdUeXBlTnVt
YmVyIHsgSW52YWxpZEdQUlJlZyB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMyw3ICszMjMsOCBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjplbWl0RGlz
cGxhY2UoQ2FjCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5
KCkuZ3ByKCksIHdhbnRlZFJlZy5ncHIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
aml0Lm1vdmU2NFRvRG91YmxlKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksIHdhbnRl
ZFJlZy5mcHIoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292
ZXJ5KCkuZGF0YUZvcm1hdCgpID09IERhdGFGb3JtYXRKUyk7CisgICAgICAgIERhdGFGb3JtYXQg
Zm9ybWF0ID0gY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0SlMgfHwgZm9ybWF0ID09IERhdGFG
b3JtYXRDZWxsKTsKICAgICAgICAgdXBkYXRlUmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnksCiAgICAg
ICAgICAgICBWYWx1ZVJlY292ZXJ5OjppblJlZ2lzdGVyKHdhbnRlZFJlZywgRGF0YUZvcm1hdEpT
KSk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsOSBAQCBDYWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIoQ0NhCiAgICAg
ICAgICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGppdC5jb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpKSkKICAgICAsIG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZShDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycwogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25G
cmFtZShkYXRhLmFyZ3Muc2l6ZSgpKSkKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICwgbV9hcmd1
bWVudHNJblJlZ2lzdGVycyhkYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzKQorI2VuZGlmCiAgICAg
LCBtX2ZyYW1lRGVsdGEobV9hbGlnbmVkTmV3RnJhbWVTaXplIC0gbV9hbGlnbmVkT2xkRnJhbWVT
aXplKQogICAgICwgbV9sb2NrZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygp
KQogewpAQCAtNTQsMTEgKzU3LDIxIEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVm
ZmxlcihDQ2EKICAgICBtX2xvY2tlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2bUNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICBBU1NFUlQoIWRhdGEuY2FsbGVlLmlzSW5KU1N0
YWNrKCkgfHwgZGF0YS5jYWxsZWUudmlydHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICBh
ZGROZXcoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGRhdGEuY2FsbGVl
KTsKLQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKGRhdGEuYXJndW1lbnRzSW5SZWdpc3Rl
cnMpCisgICAgICAgIGFkZE5ldyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCkpLCBkYXRhLmNhbGxlZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGFkZE5ldyhWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOworICAgIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIEFTU0VSVCghZGF0YS5hcmdzW2ldLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5hcmdzW2ldLnZp
cnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7Ci0gICAgICAgIGFkZE5ldyh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSwgZGF0YS5hcmdzW2ldKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyAmJiBpIDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgIGFkZE5ldyhKU1ZhbHVlUmVn
cyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSksIGRhdGEuYXJnc1tpXSk7
CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpLCBkYXRhLmFyZ3NbaV0pOwogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVF
NjQpCkBAIC0xODUsOCArMTk4LDEzIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXAoUHJp
bnRTdHJlYW0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgaWYgKG5l
d0NhY2hlZFJlY292ZXJ5KQorICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpIHsKICAgICAg
ICAgICAgIG91dC5wcmludCgiICAgICAgICAgIiwgcmVnLCAiIDwtICIsIG5ld0NhY2hlZFJlY292
ZXJ5LT5yZWNvdmVyeSgpKTsKKyAgICAgICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeS0+Z3By
VGFyZ2V0cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpOyBpKyspCisgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCAiLCBuZXdDYWNoZWRSZWNvdmVyeS0+Z3ByVGFy
Z2V0cygpW2ldLmdwcigpLCAiIDwtICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIG91dC5wcmludCgiXG4i
KTsKICAgICB9CkBAIC00OTYsNyArNTE0LDcgQEAgYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5
V3JpdGVzKENhY2hlZAogICAgIEFTU0VSVChjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmlzSW5S
ZWdpc3RlcnMoKQogICAgICAgICB8fCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmlzQ29uc3Rh
bnQoKSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAodmVyYm9zZSAmJiBjYWNoZWRSZWNv
dmVyeS50YXJnZXRzKCkuc2l6ZSgpKQogICAgICAgICBkYXRhTG9nKCIgICAqIFN0b3JpbmcgIiwg
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
YWNoZWRSZWNvdmVyeS50YXJnZXRzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHRhcmdldCB7IGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKVtpXSB9OwpAQCAtNTA1LDkg
KzUyMyw5IEBAIGJvb2wgQ2FsbEZyYW1lU2h1ZmZsZXI6OnRyeVdyaXRlcyhDYWNoZWQKICAgICAg
ICAgICAgIGRhdGFMb2coIWkgPyAiIGludG8gIiA6ICIsIGFuZCAiLCAiTkVXICIsIHRhcmdldCk7
CiAgICAgICAgIGVtaXRTdG9yZShjYWNoZWRSZWNvdmVyeSwgYWRkcmVzc0Zvck5ldyh0YXJnZXQp
KTsKICAgICAgICAgc2V0TmV3KHRhcmdldCwgbnVsbHB0cik7CisgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICB9Ci0gICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgY2FjaGVkUmVjb3ZlcnkuY2xlYXJUYXJnZXRzKCk7
CiAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeS53YW50ZWRKU1ZhbHVlUmVncygpICYmIGNhY2hlZFJl
Y292ZXJ5LndhbnRlZEZQUigpID09IEludmFsaWRGUFJSZWcpCiAgICAgICAgIGNsZWFyQ2FjaGVk
UmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKSk7CkBAIC02MDYsNyArNjI0LDcgQEAg
dm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiB7CiAgICAgQVNTRVJUKCFpc1Vu
ZGVjaWRlZCgpKTsKIAotICAgIHVwZGF0ZURhbmdlckZyb250aWVyKCk7CisgICAgaW5pdERhbmdl
ckZyb250aWVyKCk7CiAKICAgICAvLyBGaXJzdCwgd2UgdHJ5IHRvIHN0b3JlIGFueSB2YWx1ZSB0
aGF0IGdvZXMgYWJvdmUgdGhlIGRhbmdlcgogICAgIC8vIGZyb250aWVyLiBUaGlzIHdpbGwgbmV2
ZXIgdXNlIG1vcmUgcmVnaXN0ZXJzIHNpbmNlIHdlIGFyZSBvbmx5CkBAIC03NDIsMTIgKzc2MCwx
OSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KCkKIAogICAgIC8vIFdlIG5l
ZWQgdG8gaGFuZGxlIDQpIGZpcnN0IGJlY2F1c2UgaXQgaW1wbGllcyByZWxlYXNpbmcKICAgICAv
LyBtX25ld0ZyYW1lQmFzZSwgd2hpY2ggY291bGQgYmUgYSB3YW50ZWQgcmVnaXN0ZXIuCisgICAg
Ly8gTm90ZSB0aGF0IHdlIGRlbGF5IHNldHRpbmcgdGhlIGFyZ3VtZW50IGNvdW50IHJlZ2lzdGVy
IGFzIGl0IG5lZWRzIHRvIGJlIHJlbGVhc2VkIGluIHN0ZXAgMy4KICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBjb3VudCBpbnRvICIs
IFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSwgIlxuIik7
Ci0gICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLAotICAg
ICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQgfSkud2l0aE9mZnNldChUYWdPZmZzZXQpKTsKLSAgICBtX2ppdC5zdG9yZTMyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksCi0gICAgICAgIGFkZHJlc3NG
b3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53
aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICgh
bV9hcmd1bWVudHNJblJlZ2lzdGVycykgeworI2VuZGlmCisgICAgICAgIG1faml0LnN0b3JlMzIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JO
ZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRo
T2Zmc2V0KFRhZ09mZnNldCkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksCisgICAgICAgICAgICBhZGRyZXNzRm9yTmV3KFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNl
dChQYXlsb2FkT2Zmc2V0KSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB9CisjZW5kaWYKIAog
ICAgIGlmICghaXNTbG93UGF0aCgpKSB7CiAgICAgICAgIEFTU0VSVChtX25ld0ZyYW1lQmFzZSAh
PSBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtNzY3LDYgKzc5Miwy
MyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KCkKIAogICAgICAgICBlbWl0
RGlzcGxhY2UoKmNhY2hlZFJlY292ZXJ5KTsKICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIC8vIEZvciByZWNvdmVyaWVzIHdpdGggbXVsdGlwbGUgcmVnaXN0ZXIgdGFyZ2V0cywgY29w
eSB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IHRhcmdldCB0byB0aGUKKyAgICAvLyByZW1haW5p
bmcgdGFyZ2V0cy4KKyAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6
Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgeworICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2Fj
aGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CisgICAgICAgIGlmICghY2FjaGVk
UmVjb3ZlcnkgfHwgY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCkgPCAyKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR1BSUmVnIHNvdXJjZUdQUiA9IGNhY2hlZFJl
Y292ZXJ5LT5ncHJUYXJnZXRzKClbMF0uZ3ByKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkrKykKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoc291cmNlR1BSLCBjYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpW2ld
LmdwcigpKTsKKyAgICB9CisKKyAgICBpZiAobV9hcmd1bWVudHNJblJlZ2lzdGVycykKKyAgICAg
ICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0NvdW50KCkpLCBh
cmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFt
ZVNodWZmbGVyLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTcgKzk2LDM3IEBA
IHB1YmxpYzoKICAgICAvLyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUKICAg
ICAvLyBhcmd1bWVudHMvY2FsbGVlL2NhbGxlZS1zYXZlIHJlZ2lzdGVycyBhcmUgYnkgdGFraW5n
IGludG8KICAgICAvLyBhY2NvdW50IGFueSBzcGlsbGluZyB0aGF0IGFjcXVpcmVHUFIoKSBjb3Vs
ZCBoYXZlIGRvbmUuCi0gICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc25hcHNob3QoKSBjb25zdAor
ICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNuYXBzaG90KEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3Vt
ZW50c0xvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVW5kZWNpZGVkKCkp
OwogCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIGRhdGE7CiAgICAgICAgIGRhdGEubnVt
TG9jYWxzID0gbnVtTG9jYWxzKCk7Ci0gICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1
YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBkYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gYXJndW1l
bnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOworI2VuZGlmCisgICAgICAgIGlmIChhcmd1bWVudHNM
b2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhW
aXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90OjpjYWxsZWUgfSktPnJlY292ZXJ5KCk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVnIHJlZyB7IGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSB9OworICAgICAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsg
bV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAgICAgICAgICAgZGF0YS5jYWxsZWUgPSBjYWNoZWRS
ZWNvdmVyeS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgfQogICAgICAgICBkYXRhLmFyZ3MucmVzaXpl
KGFyZ0NvdW50KCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50KCk7
ICsraSkKLSAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJnQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24g
PT0gU3RhY2tBcmdzIHx8IGkgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUykKKyAgICAgICAgICAgICAgICBkYXRhLmFyZ3NbaV0gPSBnZXROZXcodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoaSkpLT5yZWNvdmVyeSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgUmVnIHJlZyB7IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KGkpIH07CisgICAgICAgICAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsg
bV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAgICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGNh
Y2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
ICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcg
PSByZWcubmV4dCgpKSB7CisgICAgICAgICAgICBpZiAocmVnLmlzR1BSKCkgJiYgYXJndW1lbnRz
TG9jYXRpb24gIT0gU3RhY2tBcmdzCisgICAgICAgICAgICAgICAgJiYgR1BSSW5mbzo6dG9Bcmd1
bWVudEluZGV4KHJlZy5ncHIoKSkgPCBhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9u
QXJndW1lbnQoYXJnQ291bnQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVnaXN0ZXJzW3Jl
Z10gfTsKICAgICAgICAgICAgIGlmICghY2FjaGVkUmVjb3ZlcnkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0zNzYsNiArMzk2LDkgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2FsaWdu
ZWRPbGRGcmFtZVNpemU7CiAgICAgaW50IG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGJvb2wgbV9hcmd1bWVudHNJblJlZ2lzdGVyczsKKyNlbmRpZgogCiAg
ICAgLy8gVGhpcyBpcyB0aGUgZGlzdGFuY2UsIGluIHNsb3RzLCBiZXR3ZWVuIHRoZSBiYXNlIG9m
IHRoZSBuZXcKICAgICAvLyBmcmFtZSBhbmQgdGhlIGJhc2Ugb2YgdGhlIG9sZCBmcmFtZS4gSXQg
Y291bGQgYmUgbmVnYXRpdmUgd2hlbgpAQCAtNjQxLDkgKzY2NCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQoanNWYWx1ZVJlZ3MgJiYgIWdldE5ldyhqc1ZhbHVlUmVncykpOwogICAgICAg
ICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgPSBhZGRDYWNoZWRSZWNvdmVyeShyZWNv
dmVyeSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5LT53
YW50ZWRKU1ZhbHVlUmVncygpKQotICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVj
b3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkuZ3ByKCldID0gbnVsbHB0cjsKLSAgICAgICAgbV9u
ZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MuZ3ByKCldID0gY2FjaGVkUmVjb3Zlcnk7CisgICAgICAg
IGlmIChjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKSkgeworICAgICAgICAgICAg
aWYgKHJlY292ZXJ5LmlzSW5HUFIoKSAmJiBqc1ZhbHVlUmVncy5ncHIoKSA9PSByZWNvdmVyeS5n
cHIoKSkgeworICAgICAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2NhY2hlZFJlY292ZXJ5LT53
YW50ZWRKU1ZhbHVlUmVncygpLmdwcigpXSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV9u
ZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MuZ3ByKCldID0gY2FjaGVkUmVjb3Zlcnk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1
ZVJlZ3MuZ3ByKCldID0gY2FjaGVkUmVjb3Zlcnk7CiAjZWxzZQogICAgICAgICBpZiAoSlNWYWx1
ZVJlZ3Mgb2xkUmVncyB7IGNhY2hlZFJlY292ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpIH0pIHsK
ICAgICAgICAgICAgIGlmIChvbGRSZWdzLnBheWxvYWRHUFIoKSkKQEAgLTY1Niw4ICs2ODMsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoanNWYWx1ZVJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQ
UlJlZykKICAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2pzVmFsdWVSZWdzLnRhZ0dQUigpXSA9
IGNhY2hlZFJlY292ZXJ5OwogI2VuZGlmCi0gICAgICAgIEFTU0VSVCghY2FjaGVkUmVjb3Zlcnkt
PndhbnRlZEpTVmFsdWVSZWdzKCkpOwotICAgICAgICBjYWNoZWRSZWNvdmVyeS0+c2V0V2FudGVk
SlNWYWx1ZVJlZ3MoanNWYWx1ZVJlZ3MpOworICAgICAgICBjYWNoZWRSZWNvdmVyeS0+YWRkVGFy
Z2V0SlNWYWx1ZVJlZ3MoanNWYWx1ZVJlZ3MpOwogICAgIH0KIAogICAgIHZvaWQgYWRkTmV3KEZQ
UlJlZyBmcHIsIFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpCkBAIC03NTUsMTMgKzc4MSwyMyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gcmVnIDw9IGRhbmdlckZyb250aWVyKCk7CiAgICAgfQog
CisgICAgdm9pZCBpbml0RGFuZ2VyRnJvbnRpZXIoKQorICAgIHsKKyAgICAgICAgZmluZERhbmdl
ckZyb250aWVyRnJvbShsYXN0TmV3KCkpOworICAgIH0KKwogICAgIHZvaWQgdXBkYXRlRGFuZ2Vy
RnJvbnRpZXIoKQogICAgIHsKKyAgICAgICAgZmluZERhbmdlckZyb250aWVyRnJvbShtX2Rhbmdl
ckZyb250aWVyIC0gMSk7CisgICAgfQorCisgICAgdm9pZCBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9t
KFZpcnR1YWxSZWdpc3RlciBuZXh0UmVnKQorICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VuZGVj
aWRlZCgpKTsKIAogICAgICAgICBtX2RhbmdlckZyb250aWVyID0gZmlyc3ROZXcoKSAtIDE7Ci0g
ICAgICAgIGZvciAoVmlydHVhbFJlZ2lzdGVyIHJlZyA9IGxhc3ROZXcoKTsgcmVnID49IGZpcnN0
TmV3KCk7IHJlZyAtPSAxKSB7Ci0gICAgICAgICAgICBpZiAoIWdldE5ldyhyZWcpIHx8ICFpc1Zh
bGlkT2xkKG5ld0FzT2xkKHJlZykpIHx8ICFnZXRPbGQobmV3QXNPbGQocmVnKSkpCisgICAgICAg
IGZvciAoVmlydHVhbFJlZ2lzdGVyIHJlZyA9IG5leHRSZWc7IHJlZyA+PSBmaXJzdE5ldygpOyBy
ZWcgLT0gMSkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2xkKG5ld0FzT2xkKHJlZykpIHx8
ICFnZXRPbGQobmV3QXNPbGQocmVnKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIG1fZGFuZ2VyRnJvbnRpZXIgPSByZWc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgog
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gSW52YWxpZEdQUlJl
ZzsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2dwciAh
PSBJbnZhbGlkR1BSUmVnOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oSlNWYWx1ZVJlZ3Mgb3Ro
ZXIpIHsgcmV0dXJuIG1fZ3ByID09IG90aGVyLm1fZ3ByOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9
KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0g
b3RoZXIubV9ncHI7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgR1BSUmVnIGdwcigp
IGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0
dXJuIEludmFsaWRHUFJSZWc7IH0KQEAgLTMzMSw2ICszMzEsNyBAQCBwcml2YXRlOgogCiAjaWYg
Q1BVKFg4NikKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQorI2RlZmlu
ZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5V
TUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAt
MzUzLDYgKzM1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50
R1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjplYng7IC8vIHJlZ1QzCiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjplc2k7IC8vIHJlZ1Q0Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplZGk7IC8v
IHJlZ1Q1CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lz
dGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OmVjeDsKQEAgLTM3OSw2
ICszODEsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAg
IHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxpbnQ+KHJlZykgPCA4KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4
Rm9yQXJndW1lbnRSZWdpc3Rlcls4XSA9IHsgMiwgMCwgMSwgMywgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisgICAgICAgIHJldHVybiBp
bmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRHUFJSZWcpOwpAQCAtNDAzLDYgKzQxMywxMSBAQCBwdWJsaWM6CiAjZGVmaW5lIE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9T
QVZFU19SRUdJU1RFUlMgN3UKICNlbmRpZgorI2lmIFVTRShSRUdJU1RFUl9BUkdVTUVOVFMpCisj
ZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKKyNlbHNlCisjZGVmaW5lIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKKyNlbmRpZgogCiBjbGFzcyBHUFJJbmZvIHsK
IHB1YmxpYzoKQEAgLTQ2NCw2ICs0NzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlmCiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8v
IHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJn
R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyBy
ZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQpA
QCAtNTA4LDYgKzUyNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpbmRleEZvclJlZ2lz
dGVyW3JlZ107CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChH
UFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyNpZiAhT1MoV0lO
RE9XUykKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1lbnRSZWdp
c3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMywgMiwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgMSwgMCwgNCwgNSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9
OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1lbnRS
ZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDIsIDMsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gaW5kZXhG
b3JBcmd1bWVudFJlZ2lzdGVyW3JlZ107CisgICAgfQorICAgIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0g
SW52YWxpZEdQUlJlZyk7CkBAIC01MzgsNiArNTY2LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKEFS
TSkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2RlZmluZSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5VTUJFUl9P
Rl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNjAxLDYg
KzYzMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAg
c3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PGludD4ocmVnKSA8IDE2KTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3VtZW50R1BSMykKKyAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVybiAodW5zaWduZWQp
cmVnOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJl
ZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAt
NjIxLDYgKzY1OSw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk02NCkKICNkZWZpbmUgTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA4dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIC0gMnUpCiAv
LyBDYWxsZWUgU2F2ZXMgaW5jbHVkZXMgeDE5Li54MjggYW5kIEZQIHJlZ2lzdGVycyBxOC4ucTE1
CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDE4dQogCkBAIC02OTgs
NiArNzM3LDcgQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpx
MTMgPT0gMTMsIHExM19pc18xMyk7CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6
OnExNCA9PSAxNCwgcTE0X2lzXzE0KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVy
czo6cTE1ID09IDE1LCBxMTVfaXNfMTUpOworCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVy
KHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuIChHUFJSZWcpaW5kZXg7CkBA
IC03MTUsNiArNzU1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRvUmVnaXN0ZXIoaW5k
ZXgpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIGlmIChyZWcgPiBhcmd1bWVudEdQUjcpCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZElu
ZGV4OworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzQ2LDYgKzc5NCw3IEBAIHB1YmxpYzoKIAogI2lm
IENQVShNSVBTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVm
aW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUg
TlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBA
IC03NzMsNiArODIyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjAgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBy
ZWdUNTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAtODI1
LDYgKzg3NSw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShTSDQpCiAjZGVmaW5lIE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTg1NSw2ICs5MDYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBTSDRSZWdpc3RlcnM6OnI2OyAvLyBy
ZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gU0g0UmVnaXN0ZXJz
OjpyNzsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdU
NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUNTsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAtODkxLDYgKzk0Myw2MSBAQCBw
dWJsaWM6CiAKICNlbmRpZiAvLyBDUFUoU0g0KQogCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVn
aXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyNpZiBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTID4gMAorICAgIGlmIChhcmd1bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIHJldHVy
biBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShhcmd1bWVudEluZGV4KTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworI2VuZGlmCit9CisKK2lubGluZSBH
UFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpCit7CisjaWYgTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA+IDAKKyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcigwKTsKKyNl
bHNlCisgICAgcmV0dXJuIEdQUkluZm86OnJlZ1QwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJS
ZWcgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1
bWVudFJlZ2lzdGVyRm9yKDEpOworfQorCitpbmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3Rl
ckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJl
dHVybiBhcmd1bWVudCArIDI7Cit9CisKK2lubGluZSB1bnNpZ25lZCBqc0Z1bmN0aW9uQXJndW1l
bnRGb3JBcmd1bWVudFJlZ2lzdGVyKEdQUlJlZyBncHIpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+IDAKKyAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4
ID0gR1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4KGdwcik7CisgICAgQVNTRVJUKGFyZ3VtZW50SW5k
ZXggIT0gR1BSSW5mbzo6SW52YWxpZEluZGV4ICYmIGFyZ3VtZW50SW5kZXggPj0gMik7CisgICAg
cmV0dXJuIGFyZ3VtZW50SW5kZXggLSAyOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworI2VuZGlm
Cit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
dW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZv
cihhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnRJbmRl
eCkpOworfQorCitpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcih1
bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworICAgIHJldHVybiBzdGQ6Om1pbihhcmd1bWVudENv
dW50LCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKK30KKwogLy8g
VGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGgg
cmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2Vy
dmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3Vs
dHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE0ICs2Niw2IEBAIHZvaWQgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkEKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24p
OwogfQogCi1KSVQ6OkNvZGVSZWYgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAg
IHJldHVybiBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJh
bXBvbGluZSk7Ci0gICAgSklUIGppdCh2bSwgMCk7Ci0gICAgcmV0dXJuIGppdC5wcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwodm0sIGZ1bmMpOwotfQotCiBKSVQ6OkpJVChWTSogdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgIDogSlNJbnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAg
ICAsIG1faW50ZXJwcmV0ZXIodm0tPmludGVycHJldGVyKQpAQCAtNTc5LDYgKzU3MSwyMCBAQCB2
b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgaWYgKG1fcmFuZG9t
R2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKICAgICAgICAgbm9wKCk7CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKKyAg
ICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisjaWYgRU5BQkxF
KFZNX0NPVU5URVJTKQorICAgIEp1bXAgY29udGludWVTdGFja0VudHJ5ID0ganVtcCgpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzTm9Bcml0eSk7CisKKyNpZiBVU0Uo
SlNWQUxVRTY0KSAmJiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgY29udGludWVTdGFja0VudHJ5
LmxpbmsodGhpcyk7CisjZW5kaWYKKwogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOwogCkBAIC02MzUsNyArNjQxLDIxIEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExp
bmtpbmcoSklUQ29tcGkKICAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25F
eGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsK
IAogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAg
ICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRo
QXJpdHlDaGVjayA9IGxhYmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFt
ZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIEp1
bXAgY29udGludWVTdGFja0FyaXR5RW50cnkgPSBqdW1wKCk7CisjZW5kaWYKKworICAgICAgICBt
X3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJpdHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICAgICAgY29udGludWVTdGFja0FyaXR5RW50cnkubGluayh0aGlzKTsKKyNlbmRpZgogICAg
ICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spOwpAQCAtNjQzLDYgKzY2Myw4IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmco
SklUQ29tcGkKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwg
VHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5M
YWJlbCwgdGhpcyk7CiAKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QXJpdHlG
aXh1cFJlcXVpcmVkKTsKKwogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAogICAgICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCkBAIC03NzgsOSArODAwLDE0IEBA
IENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgfQogICAgIG1fY29kZUJsb2NrLT5z
ZXRKSVRDb2RlTWFwKGppdENvZGVNYXBFbmNvZGVyLmZpbmlzaCgpKTsKIAotICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjazsKLSAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVU
eXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
c3RhY2tFbnRyeUFyaXR5T0tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdz
QXJpdHlPS0VudHJ5KTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJF
bnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0Vu
dHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIg
PSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOwor
ICAgICAgICBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgIH0KIAogICAgIGlmIChPcHRpb25z
OjpkdW1wRGlzYXNzZW1ibHkoKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRj
aEJ1ZmZlcik7CkBAIC03OTgsMTQgKzgyNSwyNiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6Omxp
bmsoKQogICAgIENvZGVSZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hC
dWZmZXIsCiAgICAgICAgICgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENv
ZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpLmRh
dGEoKSkpOwotICAgIAorCiAgICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29y
ZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0
LnNpemUoKSkgLwogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNp
emUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNo
cmluayk7CisgICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVn
aXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyLCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQ
dHIsIHN0YWNrRW50cnlBcml0eU9LUHRyLCBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOwor
CisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0g
MTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnQ291bnQrKykgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAg
ICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSBy
ZXN1bHQuY29kZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVy
RW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3Io
SklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3Vu
dCksIGVudHJ5KTsKKyAgICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklU
Q29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KEpJVEVudHJ5UG9pbnRzV2l0aFJlZihyZXN1bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFz
ZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJ
VCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVz
dWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnko
KS0+ZW5kKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk1MDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJKSVRNYXRoSUMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgog
I2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKIApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eShieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0
aW9uKTsKKyAgICAgICAgc3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZl
Q2FsbEVudHJ5UG9pbnRzKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2Rl
UmVmIG5hdGl2ZUNhbGxSZWYgPSBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0
aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihuYXRpdmVDYWxsUmVmLCBuYXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2Fs
bFJlZi5jb2RlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxs
KHZtLCBmdW5jKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJl
Z2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2lu
dGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpAQCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJl
bCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFs
c2UpOwotICAgICAgICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5h
dGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21w
aWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lk
IHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpOwogCiAgICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdp
dGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpAQCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVk
IG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5m
b0luZGV4OwotICAgICAgICAKLSAgICAgICAgTGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAg
IExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJn
c1dpdGhBcml0eUNoZWNrOworICAgICAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNo
ZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwog
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVD
YWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNl
KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2Fs
bExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0
KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwx
MiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoaW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVnVDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8t
PnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51
bGxwdHIsIHRydWUpKTsKLSAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7CisgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklU
U3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUp
KTsKKyAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsK
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9j
aykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyAr
Mjg2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8u
c2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cihvcGNvZGVJRCksIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVn
VDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5m
bygpKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBh
dGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGls
YXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3
LDEyICszMTcsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4
XS5jYWxsTGlua0luZm8pLCByZWdUMik7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsK
KyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2Fs
bF92YXJhcmdzKQogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2Nh
bGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9
IGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5j
b2RlKCkpOworICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2Fs
bFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1
bWVudHNMb2NhdGlvbigpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8
IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJl
YXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQg
SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBB
ZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNy
ZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpDYWxsVmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21w
aWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1l
UmVnaXN0ZXIsIEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkp
OwogCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAg
IGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdp
c3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJs
b2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZv
OjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+
c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxNCAr
MTU5LDIzIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBD
T01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzX29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBudWxscHRyOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0
aW9uID0gU3RhY2tBcmdzOworCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAg
ICAgICAgaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJh
cmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJn
c0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWdu
ZWQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGlu
dCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKKyNpZiBFTkFC
TEUoQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1FTlRfQ0FMTFMpCisgICAgICAgIGlmIChOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICYmIChvcGNvZGVJRCA9PSBvcF9jYWxs
IHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCkpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50c0xv
Y2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IoYXJnQ291bnQpOworICAgICAgICAgICAgaW5m
by0+c2V0UHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCk7CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9m
ZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7
CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKQEAg
LTE3MSwxNSArMTg1LDI1IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICAgICAgfQogICAgIAogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGlmIChhcmd1
bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MpIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFyZ3MgPSBzdGQ6Om1pbihhcmdDb3VudCwgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lzdGVyQXJnczsgYXJnKyspCisgICAgICAgICAgICAg
ICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0
aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFy
Z3VtZW50KGFyZykpOworICAgICAgICB9CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFy
Z0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgfSAvLyBTUCBob2xkcyBu
ZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3Vu
dCBpbml0aWFsaXplZC4KKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5l
Q2FsbGVyKTsKICAgICAKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9u
IC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChieXRlY29kZU9mZnNldCkuYml0cygpOwogICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCi0gICAgc3RvcmU2NChyZWdU
MCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVSZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBjYWxsZWVSZWdp
c3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVSZWdpc3RlciwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29k
ZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rp
b24pOwpAQCAtMTg3LDE2ICsyMTEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2Rl
SUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5j
dGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nhc2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1
YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKDAp
KTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBjYWxs
ZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigw
KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBp
bGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIGluZm8tPnNldFVw
Q2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86
OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJndW1lbnRzTG9jYXRpb24sIENvZGVPcmlnaW4obV9i
eXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lzdGVyKTsKICAgICBtX2NhbGxDb21waWxhdGlvbklu
Zm8uYXBwZW5kKENhbGxDb21waWxhdGlvbkluZm8oKSk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25J
bmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5j
dGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0u
Y2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwp
IHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6VGFpbENhbGwpOworCiAgICAg
ICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOwogICAgICAgICBzaHVmZmxlRGF0
YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyOwogICAgICAg
ICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpAQCAtMjA5LDcgKzIzNSw3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgICAgICAgICAgICAgRGF0YUZv
cm1hdEpTKTsKICAgICAgICAgfQogICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPQotICAgICAg
ICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIocmVnVDAsIERhdGFGb3JtYXRKUyk7CisgICAgICAg
ICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVSZWdpc3RlciwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1fY29kZUJsb2Nr
KTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAg
ICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxD
YWxsKCk7CkBAIC0yNDYsOSArMjcyLDEwIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nh
c2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAg
bW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRl
eF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOworICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87
CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCi0g
ICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9j
YXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVy
YXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5k
ZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRo
dW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5m
by0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9y
dFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBA
QCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0NhCiAKICAgICBpZiAoIWZ1
bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+bmVlZEFyaXR5Q2hlY2soKSkgewogICAgICAgICBB
U1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVkQXJpdHlDaGVjaygpKTsKLSAgICAgICAgZW50cnlB
ZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRk
cmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0gZWxzZQotICAgICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2Fs
bChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlBZGRy
ZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRv
SmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZtLCBwcm90b0NhbGxGcmFtZSkpOwogICAgIHJldHVy
biBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0OwogfQpAQCAtMTYyLDkgKzE2
Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVjdEpJVENvZGUoSklUVHlwZSBqaXQKIHsKIH0KIAot
RGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29k
ZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywgSklUVHlwZSBqaXRUeXBlKQotICAgIDogSklUQ29k
ZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkKLSAgICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFy
aXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0
aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5cGUpCisgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYo
ZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUpCisgICAgLCBtX2VudHJ5UG9pbnRzKGVudHJpZXMp
CiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2IEBAIERpcmVjdEpJVENvZGU6On5EaXJlY3RKSVRD
b2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RKSVRDb2RlOjppbml0aWFsaXplQ29kZVJlZihKSVRD
b2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK3ZvaWQg
RGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJl
ZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3JlZik7Ci0gICAgbV9yZWYgPSBy
ZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9IHdpdGhBcml0eUNoZWNrOworICAgIG1fcmVmID0g
ZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9lbnRyeVBvaW50cyA9IGVudHJpZXM7CiB9CiAKLUpJ
VENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01v
ZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxs
KEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoIChhcml0eSkgewotICAgIGNhc2Ug
QXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0g
ICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRoQXJpdHlDaGVjayk7Ci0gICAgICAgIHJldHVybiBt
X3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBDb2RlUHRyKCk7CisgICAgcmV0dXJuIG1fZW50cnlQb2ludHMuZW50cnlG
b3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENvZGU6Ok5hdGl2ZUpJVENvZGUoSklUVHlwZSBqaXRU
eXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZvaWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6ZUNv
ZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsKIH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRpdmVK
SVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIg
TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAgcmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1
LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAi
RGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiSklURW50cnlwb2ludHMuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgQ29kZVB0
ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgPSAwOworICAgIHZpcnR1YWwgQ29kZVB0
ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCog
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7Ci0gICAgdm9pZCog
ZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVybiBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDAp
OyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQp
ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29k
ZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsyMjMsMTUgQEAgcHJvdGVjdGVkOgogY2xhc3MgRGly
ZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewogcHVibGljOgogICAgIERp
cmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAgRGlyZWN0SklUQ29kZShDb2RlUmVmLCBDb2RlUHRy
IHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsKKyAgICBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9p
bnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAgdmlydHVhbCB+RGlyZWN0SklUQ29kZSgpOwogICAg
IAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlD
aGVjayk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRo
UmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJy
aWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIENvZGVQdHIgbV93aXRoQXJpdHlDaGVjazsKKyAgICBKSVRFbnRy
eVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsKIAogY2xhc3MgTmF0aXZlSklUQ29kZSA6IHB1Ymxp
YyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAtMjQzLDcgKzI0Miw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYpOwogCi0gICAgQ29kZVB0ciBhZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNz
Rm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlwb2ludHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5cG9pbnRzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeXBvaW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkK
KworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86IENvbnNpZGVyIHVzaW5nIGEgbWFjcm8gYmFzZSBjb250
cnVjdGlvbiB0byBnZXQgZW51bSAiaW5oZXJpdGVuY2UiCitlbnVtIEFyZ3VtZW50c0xvY2F0aW9u
IDogdW5zaWduZWQgeworICAgIFN0YWNrQXJncyA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJz
LAorICAgIFJlZ2lzdGVyQXJnczJJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3MzSW5SZWdp
c3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNEluUmVnaXN0ZXJzLAorI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyQXJnczVJblJlZ2lz
dGVycywKKyAgICBSZWdpc3RlckFyZ3M2SW5SZWdpc3RlcnMsCisjZW5kaWYKKyAgICBSZWdpc3Rl
ckFyZ3NXaXRoRXh0cmFPblN0YWNrCisjZW5kaWYKK307CisKKy8vIFRoaXMgZW51bSBuZWVkcyB0
byBoYXZlIHRoZSBzYW1lIGVudW1lcmF0b3Igb3JkZXJpbmcgYXMgQXJndW1lbnRzTG9jYXRpb24u
CitlbnVtIFRodW5rRW50cnlQb2ludFR5cGUgOiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzRW50
cnkgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0g
NAorICAgIFJlZ2lzdGVyMUFyZ0VudHJ5LAorICAgIFJlZ2lzdGVyMkFyZ3NFbnRyeSwKKyAgICBS
ZWdpc3RlcjNBcmdzRW50cnksCisgICAgUmVnaXN0ZXI0QXJnc0VudHJ5LAorI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyNUFyZ3NF
bnRyeSwKKyAgICBSZWdpc3RlcjZBcmdzRW50cnksCisjZW5kaWYKKyNlbmRpZgorICAgIFRodW5r
RW50cnlQb2ludFR5cGVDb3VudAorfTsKKworZW51bSBFbnRyeVBvaW50VHlwZSB7CisgICAgU3Rh
Y2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLAorICAgIFN0YWNrQXJnc011c3RDaGVja0FyaXR5
LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBSZWdp
c3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgUmVnaXN0ZXJBcmdzUG9zc2libGVF
eHRyYUFyZ3MsCisgICAgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgUmVnaXN0ZXJBcmdzMSwK
KyAgICBSZWdpc3RlckFyZ3MyLAorICAgIFJlZ2lzdGVyQXJnczMsCisgICAgUmVnaXN0ZXJBcmdz
NCwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAg
ICBSZWdpc3RlckFyZ3M1LAorICAgIFJlZ2lzdGVyQXJnczYsCisjZW5kaWYKKyNlbmRpZgorI2Vu
ZGlmCisgICAgTnVtYmVyT2ZFbnRyeVBvaW50VHlwZXMKK307CisKK2NsYXNzIEpJVEVudHJ5UG9p
bnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRy
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBFbnRyeVBv
aW50VHlwZTo6TnVtYmVyT2ZFbnRyeVBvaW50VHlwZXM7CisKKyAgICBKSVRFbnRyeVBvaW50cygp
CisgICAgeworICAgICAgICBjbGVhckVudHJpZXMoKTsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBv
aW50cyhDb2RlUHRyIHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHJl
Z2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0
ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1
aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAg
ICB7CisgICAgICAgIG1fZW50cnlQb2ludHNbU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
XSA9IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5
UG9pbnRzW1N0YWNrQXJnc011c3RDaGVja0FyaXR5XSA9IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRy
eTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAg
IG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHJlZ2lz
dGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzXSA9IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
RW50cnk7CisgICAgICAgIG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHld
ID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGkgKysp
CisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW3JlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRD
b3VudChpKV0gPSByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnk7CisjZWxzZQorICAgICAgICBV
TlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVkRW50cnkpOworICAgICAgICBV
TlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSk7CisgICAgICAg
IFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkpOworI2VuZGlmCisKKyAg
ICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50c1t0eXBlXTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAg
ICAgICBBU1NFUlQodHlwZSA8IE51bWJlck9mRW50cnlQb2ludFR5cGVzKTsKKyAgICAgICAgbV9l
bnRyeVBvaW50c1t0eXBlXSA9IGVudHJ5OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZFbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9mZnNldG9mKEpJVEVudHJ5UG9pbnRzLCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVu
dENvdW50KHVuc2lnbmVkIGFyZ0NvdW50KQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIEFTU0VSVChhcmdDb3VudCk7CisgICAgICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQXJnQ291bnQgPSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9y
KGFyZ0NvdW50KTsKKyAgICAgICAgaWYgKCFyZWdpc3RlckFyZ0NvdW50IHx8IHJlZ2lzdGVyQXJn
Q291bnQgIT0gYXJnQ291bnQpCisgICAgICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENo
ZWNrQXJpdHk7CisKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihS
ZWdpc3RlckFyZ3MxICsgcmVnaXN0ZXJBcmdDb3VudCAtIDEpOworI2Vsc2UKKyAgICAgICAgVU5V
U0VEX1BBUkFNKGFyZ0NvdW50KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAg
fQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRUeXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1l
bnRUeXBlKEFyZ3VtZW50c0xvY2F0aW9uIHR5cGUpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgQVNTRVJUKHR5cGUgIT0gU3RhY2tB
cmdzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaykK
KyAgICAgICAgICAgIHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdz
MSArIHR5cGUgLSBSZWdpc3RlckFyZ3MxSW5SZWdpc3RlcnMpOworI2Vsc2UKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIGNsZWFyRW50cmllcygpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ld
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMm
IG9wZXJhdG9yPShjb25zdCBKSVRFbnRyeVBvaW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBt
X2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50c1tpXTsKKworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRlOgorCisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRz
W251bWJlck9mRW50cnlUeXBlc107Cit9OworCitjbGFzcyBKSVRFbnRyeVBvaW50c1dpdGhSZWYg
OiBwdWJsaWMgSklURW50cnlQb2ludHMgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIENvZGVSZWY7CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKQorICAg
IHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29uc3QgSklURW50cnlQb2lu
dHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhvdGhlcikKKyAgICAg
ICAgLCBtX2NvZGVSZWYob3RoZXIubV9jb2RlUmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmLCBjb25zdCBKSVRFbnRyeVBvaW50cyYg
b3RoZXIpCisgICAgICAgIDogSklURW50cnlQb2ludHMob3RoZXIpCisgICAgICAgICwgbV9jb2Rl
UmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKyAgICAKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoQ29kZVJlZiBjb2RlUmVmLCBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAg
ICAgOiBKSVRFbnRyeVBvaW50cyhDb2RlUHRyKCksIENvZGVQdHIoKSwgQ29kZVB0cigpLCBzdGFj
a0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5
KQorICAgICAgICAsIG1fY29kZVJlZihjb2RlUmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmLCBDb2RlUHRyIHJlZ2lzdGVyQXJnc05v
Q2hlY2tzUmVxdWlyZWRFbnRyeSwKKyAgICAgICAgQ29kZVB0ciByZWdpc3RlckFyZ3NQb3NzaWJs
ZUV4dHJhQXJnc0VudHJ5LCBDb2RlUHRyIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwKKyAg
ICAgICAgQ29kZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwgQ29kZVB0
ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgIDogSklURW50cnlQb2ludHMocmVn
aXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVudHJ5LCByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJh
QXJnc0VudHJ5LAorICAgICAgICAgICAgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBzdGFj
a0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwKKyAgICAgICAgICAgIHN0YWNrQXJnc0No
ZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAg
fQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkgeyByZXR1cm4gbV9jb2RlUmVmOyB9CisKK3ByaXZh
dGU6CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7Cit9OworCitpbmxpbmUgQXJndW1lbnRzTG9jYXRp
b24gYXJndW1lbnRzTG9jYXRpb25Gb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1bWVu
dENvdW50KQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzOworICAgIAorICAgIGFyZ3VtZW50Q291
bnQgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICsg
MSwgYXJndW1lbnRDb3VudCk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50
c0xvY2F0aW9uPihBcmd1bWVudHNMb2NhdGlvbjo6UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzICsg
YXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3Vu
dCk7CisgICAgcmV0dXJuIFN0YWNrQXJnczsKKyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2lu
dFR5cGUgcmVnaXN0ZXJFbnRyeVBvaW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQor
eworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBpZiAo
IWFyZ3VtZW50Q291bnQgfHwgYXJndW1lbnRDb3VudCA+IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5
UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVu
dENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKK30K
KworaW5saW5lIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0
aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgIGlmIChhcmd1bWVudExvY2F0aW9uID09IFN0YWNrQXJncykKKyAg
ICAgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAgIGlmIChhcmd1
bWVudExvY2F0aW9uID09IFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgIHJl
dHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50TG9jYXRpb24gLSBSZWdpc3RlckFyZ3MxSW5SZWdp
c3RlcnMpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50TG9jYXRpb24pOworICAg
IHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGh1
bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9u
IGFyZ3VtZW50TG9jYXRpb24pCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIHVuc2lnbmVkIGFyZ3VtZW50TG9jYXRpb25JbmRleCA9IHN0ZDo6bWlu
KFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2sgLSAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YXJndW1lbnRMb2NhdGlvbikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9p
bnRUeXBlPihhcmd1bWVudExvY2F0aW9uSW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
YXJndW1lbnRMb2NhdGlvbik7CisgICAgcmV0dXJuIFN0YWNrQXJnc0VudHJ5OworI2VuZGlmCit9
CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRUeXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IodW5z
aWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTCisgICAgYXJndW1lbnRDb3VudCA9IG51bWJlck9mUmVnaXN0ZXJBcmd1bWVu
dHNGb3IoYXJndW1lbnRDb3VudCk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRodW5r
RW50cnlQb2ludFR5cGU+KFRodW5rRW50cnlQb2ludFR5cGU6OlJlZ2lzdGVyMUFyZ0VudHJ5ICsg
YXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3Vu
dCk7CisgICAgcmV0dXJuIFN0YWNrQXJnc0VudHJ5OworI2VuZGlmCit9CisKK2NsYXNzIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIENvZGVSZWY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mRW50cnlUeXBl
cyA9IFRodW5rRW50cnlQb2ludFR5cGU6OlRodW5rRW50cnlQb2ludFR5cGVDb3VudDsKKworICAg
IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkKKyAgICB7CisgICAgfQorCisgICAg
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmKQorICAgICAg
ICA6IG1fY29kZVJlZihjb2RlUmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZihjb25zdCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiYgb3RoZXIpCisgICAgICAgIDogbV9jb2RlUmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkVudHJ5VHlwZXM7IGkrKykK
KyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOwor
ICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50cnlQb2ludHNbdHlwZV07CisgICAgfQorCisgICAg
Q29kZVB0ciBlbnRyeUZvcihBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBlbnRyeUZvcih0aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFyZ3Vt
ZW50c0xvY2F0aW9uKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnRyeUZvcihUaHVua0VudHJ5
UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAgICAgICBtX2VudHJ5UG9p
bnRzW3R5cGVdID0gZW50cnk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRvZihKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiwgbV9lbnRyeVBvaW50
c1t0eXBlXSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAg
ICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKwor
ICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0dXJuIG1fY29kZVJlZjsgfQorCisgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG9wZXJhdG9yPShjb25zdCBKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgeworICAgICAgICBtX2NvZGVSZWYgPSBv
dGhlci5tX2NvZGVSZWY7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlU
eXBlczsgaS0tOykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5
UG9pbnRzW2ldOworICAgICAgICAKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsKKyAgICBDb2RlUHRyIG1fZW50cnlQb2ludHNb
bnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGls
ZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQorSklURW50cnlQb2lu
dHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxl
IHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY4OQpAQCAtMTI5LDcgKzEyOSw5IEBA
IEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNo
QnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVuY3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAg
SklUOjpDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBD
VEkgbmF0aXZlIGNhbGwiKSk7CisgICAgCisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCkpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAKLUpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uKQorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbikKIHsKLSAgICByZXR1
cm4gdm0tPmdldENUSVN0dWIobmF0aXZlQ2FsbEdlbmVyYXRvcik7CisgICAgcmV0dXJuIHZtLT5n
ZXRKSVRFbnRyeVN0dWIobmF0aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OTAsMTAgKzg5MCwxNCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7
CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsK
IAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyLCBjb2RlUHRyRm9yTGlua2luZzsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAg
ICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJp
dHkpOworICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgICAgICBpZiAoIWNhbGxMaW5rSW5mby0+cHJvdmlkZXNSZWdpc3Rl
ckFuZFN0YWNrQXJndW1lbnRzKCkgJiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVy
cygpKQorICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBleGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5KTsKKyNlbmRpZgogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTkxNCwx
NyArOTE4LDQ0IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAg
ICAgICAgfQogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKLSAgICAgICAgQXJp
dHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyaXR5
ID0gTXVzdENoZWNrQXJpdHk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJp
dHlDaGVja05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5KTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50
cnlUeXBlOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAg
ICAgICAgYm9vbCB1c2VTdGFja0VudHJ5ID0gY29kZUJsb2NrLT5wcmVmZXJzU3RhY2tBcmd1bWVu
dHMoKSAmJiBjYWxsTGlua0luZm8tPnByb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cygp
OworI2VuZGlmCisgICAgICAgIHNpemVfdCBjYWxsZXJBcmd1bWVudENvdW50ID0gZXhlY0NhbGxl
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICAgICAgc2l6ZV90IGNhbGxlZUFy
Z3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPCBjYWxsZWVBcmd1bWVudENv
dW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBpZiAoIXVzZVN0YWNrRW50cnkg
JiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAg
ICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChj
YWxsZXJBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkp
OworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1
bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgICAgICB9IGVsc2UgaWYgKCF1c2VTdGFja0VudHJ5ICYmIGNhbGxMaW5rSW5m
by0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3Vt
ZW50Q291bnQgPT0gY2FsbGVlQXJndW1lbnRDb3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAg
ICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlw
ZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAg
IGlmICghY29kZVB0ckZvckxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JM
aW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVy
QXJnc1Bvc3NpYmxlRXh0cmFBcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQ
cmVwb3B1bGF0ZSB0aGUgZW50cnkgcG9pbnRzIHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4K
KyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7
CisKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAo
IWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkKICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVu
KCk7CiAgICAgZWxzZQotICAgICAgICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8s
IGNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRyKTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVl
LCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBj
b2RlUHRyRm9yTGlua2luZyA6IGNvZGVQdHIpOwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihj
YWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1l
IDogS2VlcFRoZUZyYW1lKSk7CiB9CkBAIC05NTksNyArOTkwLDExIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2EKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29k
ZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/
IFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOwor
I2Vsc2UKKyAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFj
a0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApAQCAtOTcxLDEzICsxMDA2LDI5IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5
cGUgZW50cnlUeXBlOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxs
TGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Ns
b3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0g
ICAgICAgICAgICBhcml0eSA9IE11c3RDaGVja0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJs
b2NrUGFyYW1ldGVyQ291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAg
ICAgICAgICAgIC8vIFJlZ0NDIFRvZG86IFRoaXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2lt
cGxpZmllZCEKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQ
YXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlw
ZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxz
ZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3Vu
dCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAg
ICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0
ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0
YWNrU2xvdHMpOworICAgICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVC
bG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UKKyAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90
cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5
cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50
cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRy
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAg
ICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RGb3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJs
b2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCArMTA3MSwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUg
YXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkgaWYgdGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVy
IGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0
dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9y
KGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZv
LT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RD
aGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NN
dXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8g
UmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0
NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVua3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVDYWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2
bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNy
ZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1
cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0t
PmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxs
U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25h
dGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRo
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2
ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIsIG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAg
cmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChW
TSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3Ry
dWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RH
ZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAoIXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZlQ29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBv
bGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1Yiks
IG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICBy
ZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0p
CkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlT
dHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2lu
dHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklU
RW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2Vu
ZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50
cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4
aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBl
bnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlTdHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7
CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGlu
ZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAg
ICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJl
dHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6
ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVj
dXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkp
OwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0
b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhl
Y3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBn
ZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5r
czo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAg
ICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRD
b2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5lcmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RD
YWxsVGh1bmspKTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJh
dG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVu
dHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNh
bGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxs
KHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2Fs
bCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRy
eVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0g
ICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5h
dGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRy
PEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVu
dHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0
aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSks
IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJl
dHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtH
ZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhv
c3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
ciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgor
I2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBA
IC01MiwxNiArNTMsMTggQEAgcHVibGljOgogICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwg
fkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwo
Vk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7
CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAg
IEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZN
Kik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dl
bmVyYXRvcik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJ
VEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAK
ICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2Vu
ZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3Is
IEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVu
Y3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElT
dHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9jdGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJN
YXA7CisgICAgSklURW50cnlTdHViTWFwIG1faml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBv
aW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0VudHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtF
bnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtFbnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5j
dGlvbktleTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAg
ICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0
SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJ
bnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3Qs
IHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQogICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJ
VDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVn
KQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNl
SklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxS
ZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQg
PSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6
ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUg
SlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2ln
bmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNj
cmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAko
cmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7
IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAgICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVu
dFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgpOworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7Cisg
ICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJT
ZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVn
aXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBy
dW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJT
ZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVu
dFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1h
a2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBSZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVz
ZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJ
bnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8g
UmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzksMjEgKzUz
OSwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVy
YXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZv
aWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxs
VGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24o
KSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJlZi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29k
ZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBvaW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJn
dW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAotc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZt
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQor
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93
Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxp
bmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIo
Z2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0Nh
bGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Io
dm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmly
dHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJv
dXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYo
KSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKIHZvaWQgbGlua0ZvcigKQEAgLTYxNSw3ICs2
MTUsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAogICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0lu
Zm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZlcnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQg
cmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxU
aHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2RlUmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8u
aXNEaXJlY3QoKSkgewogICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAg
LTY0Miw3ICs2NDIsNyBAQCB2b2lkIHVubGlua0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2Fs
CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJV
bmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwog
ICAgIAotICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcikpOworICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8s
IHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9
CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBAIC02NTQsOSArNjU0LDkgQEAgdm9pZCBsaW5rVmly
dHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9j
aykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJD
b2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZU9yaWdpbigpLCAiXG4iKTsK
ICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRo
dW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsK
ICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2Fs
bExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywg
KnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksICp2bSwgbnVsbHB0ciwgdHJ1
ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNzA1LDYgKzcwNSw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExpbmtJbmZvLnNldEhhc1NlZW5DbG9zdXJlKCk7CiAg
ICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsKKyAgICBzaXpl
X3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9y
IChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtNzE2LDcgKzcxNyw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAg
ICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0aGVyIGJlY2F1c2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1pc21hdGNoLAogICAgICAg
ICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhpbmcgdG8g
YmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBleGVjLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CisgICAg
ICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENvdW50IDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlz
VmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExp
bmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03Mzcs
NyArNzM4LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAg
R1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxl
ZUdQUigpKTsKLSAgICAKKworICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3Rl
cnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2Fs
bGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNhbGxlckNvZGVCbG9jayk7
CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKQEAgLTc1OSw2ICs3
NjMsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
R1BSOwogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgICAgIHNjcmF0Y2hHUFIg
PSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgICAgIGVsc2UgaWYgKGNhbGxMaW5r
SW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQ
UkluZm86Om5vbkFyZ0dQUjA7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNjcmF0Y2hHUFIg
PSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAgICAgICAg
Ly8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhlY3V0YWJs
ZSBpbiBzY3JhdGNoR1BSLgpAQCAtODI0LDEzICs4MzAsMjMgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKAogICAgIEdQUlJlZyBmYXN0Q291bnRzQmFzZUdQUjsKICAgICBpZiAoZnJhbWVTaHVm
ZmxlcikKICAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJl
R1BSKCk7CisgICAgZWxzZSBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkp
CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86Om5v
bkFyZ0dQUjE7CisjZWxzZQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86OnJl
Z1QwOworI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0KICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNv
bXBhcmlzb25WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDMpOwogICAgIH0KLSAgICBzdHViSml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBmYXN0Q291
bnRzQmFzZUdQUik7CisgICAgaWYgKGZhc3RDb3VudHMpCisgICAgICAgIHN0dWJKaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNC
YXNlR1BSKTsKICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlzVGFpbENh
bGwoKSkKICAgICAgICAgc3R1YkppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisKKyAgICBp
bmNyZW1lbnRDb3VudGVyKCZzdHViSml0LCBWTTo6UG9seW1vcnBoaWNDYWxsKTsKKwogICAgIEJp
bmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29tcGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBC
aW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwog
ICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewpAQCAtODM5LDggKzg1
NSwzMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIENhbGxWYXJpYW50IHZh
cmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworCisg
ICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZDsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxv
Y2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXpl
X3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpOworICAgICAgICAgICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50
ID09IGNhbGxlckFyZ3VtZW50Q291bnQgfHwgY2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgICAgICBl
bnRyeVR5cGUgPSBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9y
QXJnQ291bnQgPSBKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENv
dW50KGNhbGxlckFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0ciA9CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50
cnlGb3JBcmdDb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVn
aXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2li
bGVFeHRyYUFyZ3M7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWly
ZWQpOworICAgICAgICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVG
b3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIEFTU0VSVChjb2Rl
UHRyKTsKICAgICAgICAgCiAgICAgICAgIGlmIChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBz
dHViSml0LmFkZDMyKApAQCAtODQ4LDcgKzg4OCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bCgKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VH
UFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJhbWVTaHVmZmxlcikgewotICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1Ykpp
dCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAg
ICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hv
dChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpLnByZXBhcmVGb3JUYWlsQ2FsbCgp
OwogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENh
bGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAg
ICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKQEAgLTg2OSwxOSAr
OTA5LDE5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApKTsKICNlbHNlCi0gICAgICAgIGZyYW1l
U2h1ZmZsZXItPnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1Qw
KSk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSA9PSBTdGFj
a0FyZ3MpCisgICAgICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhK
U1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpKTsKICNlbmRpZgogICAgICAg
ICBmcmFtZVNodWZmbGVyLT5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICAgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICB9Ci0g
ICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZv
KSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgCi0gICAgc3R1YkppdC5yZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9u
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIHN0dWJK
aXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMSk7
CisKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
c2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAgICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwpAQCAtOTAyLDcgKzk0Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCku
bGFiZWxBdE9mZnNldCgwKSk7CiAgICAgZWxzZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRv
bmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDApKTsKLSAgICBw
YXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxp
bmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CisgICAgcGF0Y2hCdWZm
ZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJ
bmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9
IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFM
SVpFX0NPREVfRk9SKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVj
aWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJ
VEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50
ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMg
SlNJbnRlcmZhY2VKSVQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBU
aGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGlu
dCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywg
SW5SZWdpc3RlcnMgfTsKKworICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50
IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3Bp
bGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xv
Y2F0aW9uID0gT25TdGFjaykKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBl
bWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQg
KyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQorICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09
IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0g
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVC
ZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRy
eSA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAg
ICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9m
IGFyZ3VtZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0
ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3Vt
ZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7CisgICAgICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdS
ZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4
cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFw
cGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRU
aHVua0pJVChWTSogdm0pCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNF
bnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwog
ICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1lbnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAg
ICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJ
RCBhcmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1p
dEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBl
bmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJn
dW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0u
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZv
aWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1wJiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZv
aWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5s
aW5rKHRoaXMpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJ
RCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwxMyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNv
bnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFs
aXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5k
KQogICAgICAgICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAq
dGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9m
YWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwot
ICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6
ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAgICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNF
bnRyeS5pc1NldCgpKQorICAgICAgICAgICAgICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNFbnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsKKyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJn
dW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0
Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAg
ICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJl
Z2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNv
ZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRo
UmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIw
IGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
bV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVu
dHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1f
Y2FsbHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2Ns
YXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJh
dG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVy
YXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcikoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikp
OwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0Nh
bGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0Vu
dHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVu
dHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFi
ZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgfQorCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBqaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZv
ckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisjaWYgIUVOQUJMRShD
QUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aml0KTsKKyAgICBVTlVTRURfUEFSQU0oZW50cnlQb2ludHMpOworI2VuZGlmCisgICAgZW50cnlQ
b2ludHNbU3RhY2tBcmdzXSA9IGppdC5sYWJlbCgpOworfQorCiBzdGF0aWMgdm9pZCBzbG93UGF0
aEZvcigKICAgICBDQ2FsbEhlbHBlcnMmIGppdCwgVk0qIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9F
Q2xpIHNsb3dQYXRoRnVuY3Rpb24pCiB7CkBAIC04OCw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBz
bG93UGF0aEZvcigKICAgICAvLyBNb3ZpbmcgdGhlIHN0YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMgdXMgcm9vbSBmb3Igb3VyIDMgYXJndW1lbnRzCiAg
ICAgLy8gYW5kIHNwYWNlIGZvciB0aGUgMTYgYnl0ZSByZXR1cm4gYXJlYS4KICAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3Zl
KEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigzMiksIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1Bh
dGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTEwMCw3ICsxMjEsNyBAQCBz
dGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICNlbHNlCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsKQogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
SW5mbzo6cmVnVDIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTEyNyw3ICsxNDgsNyBA
QCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0
aGUgc3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKICAgICAvLyBz
YXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEg
QysrIGZ1bmN0aW9uIGNhbGwKQEAgLTEzNSw0NSArMTU2LDE1MyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyCiAgICAgLy8gdG8gYmUgaW4gcmVnVDAvcmVnVDEgKHBh
eWxvYWQvdGFnKSwgdGhlIENhbGxGcmFtZSB0byBoYXZlIGFscmVhZHkKICAgICAvLyBiZWVuIGFk
anVzdGVkLCBhbmQgYWxsIG90aGVyIHJlZ2lzdGVycyB0byBiZSBhdmFpbGFibGUgZm9yIHVzZS4K
ICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKLSAgICAKKworICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRl
UmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5KGppdCwgZW50cnlQb2ludHMpOwogICAgIHNsb3dQ
YXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgKCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50
cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3Rh
Y2tBcmdzOyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRl
eCsrKSB7CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxU
aHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisKKyAgICByZXR1
cm4gY2FsbEVudHJ5UG9pbnRzOworfQorCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiBsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICAvLyBUaGUgcmV0
dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3
aWxsIGhlbmNlCisgICAgLy8gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJh
bWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9ybSBs
aW5raW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9uIGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRoZSBD
YWxsTGlua0luZm8KKyAgICAvLyB0byBiZSBpbiBHUFJJbmZvOjpub25BcmdHUFIwLCB0aGUgY2Fs
bGVlIHRvIGJlIGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwKKyAgICAvLyB0aGUgQ2Fs
bEZyYW1lIHRvIGhhdmUgYWxyZWFkeSBiZWVuIGFkanVzdGVkLCBhbmQgYXJndW1lbnRzIGluIGFy
Z3VtZW50IHJlZ2lzdGVycworICAgIC8vIGFuZC9vciBpbiB0aGUgc3RhY2sgYXMgYXBwcm9wcmlh
dGUuCisgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVh
dGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50cyk7CisKKyAgICBq
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7
IC8vIFNhdmUgY2FsbGVlJ3MgZnJhbWUgcG9pbnRlcgorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LT50b3BDYWxsRnJhbWUpOworCisgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KQorICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhHUFJJbmZvOjpub25BcmdHUFIxLCBHUFJJbmZv
Ojpub25BcmdHUFIwLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlv
bkxpbmtEaXJlY3RDYWxsKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkK
KyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgIAorICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworCisjaWYgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJl
Z2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBh
cmdDb3VudFJlZyk7CisKKyAgICAvLyBsb2FkICJ0aGlzIgorICAgIGppdC5lbWl0R2V0RnJvbUNh
bGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoMCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoMCkpOworCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGZpbGxVbmRlZmluZWRb
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSU107CisgICAgCisgICAgZm9y
ICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICBmaWxsVW5kZWZpbmVk
W2FyZ0luZGV4XSA9IGppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBh
cmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpOworICAg
ICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0lu
ZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAg
IH0KKworICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lRmlsbGluZyA9IGppdC5qdW1wKCk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxV
bmRlZmluZWRbYXJnSW5kZXhdLmxpbmsoJmppdCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAg
ZG9uZUZpbGxpbmcubGluaygmaml0KTsKKyNlbmRpZgorCisKKyAgICBqaXQucmV0KCk7CisKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
ICgiTGluayBkaXJlY3QgY2FsbCB0aHVuayIpKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0
aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFj
a0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4
KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9pbnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRo
dW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRyeUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQogCiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25z
LCB3ZSBvbmx5IGluY2x1ZGUgY2FsbHMsIHNpbmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBm
b3IKIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24gdGhlbiB5b3UncmUgZ29pbmcgdG8gbG9zZSBiaWcg
dGltZSBhbnl3YXkuCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxp
bmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgQ0NhbGxIZWxw
ZXJzIGppdCh2bSk7CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRz
W1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50
c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50cyk7CisKICAgICBzbG93UGF0aEZvcihqaXQsIHZt
LCBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1
bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3JwaGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAo
dW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMu
c2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCks
CisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5k
ZXhdKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8v
IEZJWE1FOiBXZSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1
YWwgY2FsbCB2cy4gYSBzbG93CiAvLyBwYXRoIHZpcnR1YWwgY2FsbCBzbyB0aGF0IHdlIGNhbiBl
bmFibGUgZmFzdCB0YWlsIGNhbGxzIGZvciBtZWdhbW9ycGhpYwogLy8gdmlydHVhbCBjYWxscyBi
eSB1c2luZyB0aGUgc2h1ZmZsZXIuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ4ODMxCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZN
KiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbykKIHsKLSAgICAvLyBUaGUgY2FsbGVlIGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0
LCB0aGUgdGFnIGlzIGluIHJlZ1QxKS4KLSAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24g
dGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQotICAgIC8v
IGp1bXAgdG8gdGhlIGNhbGxlZSwgb3Igc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNh
bGwgZnJhbWUgd2hpbGUgd2UKLSAgICAvLyBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhl
IGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24uCisgICAgLy8gVGhlIGNhbGxlZSBpcyBpbiBhcmd1
bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgKGZvciBKU1ZBTFVFMzJfNjQsIGl0IGlzIGluIHJlZ1Qx
OnJlZ1QwKS4KKyAgICAvLyBUaGUgQ2FsbExpbmtJbmZvIGlzIGluIEdQUkluZm86Om5vbkFyZ0dQ
UjAuCisgICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhl
IGxpbmsgcmVnaXN0ZXIuCisgICAgLy8vIFdlIHdpbGwgaGVuY2UganVtcCB0byB0aGUgY2FsbGVl
LCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbAorICAgIC8vIGZyYW1lIHdo
aWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9w
ZXJhdGlvbi4KIAogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwogICAgIAogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0
aCBleGVjdXRpb24sIGFuZCByZWdUMiBjb250YWlucyB0aGUgQ2FsbExpbmtJbmZvLiBDb3VudCB0
aGUKLSAgICAvLyBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmlsZXIuCisKKyAgICBH
UFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgR1BSUmVnIGNhbGxlZVRhZ1JlZyA9IEdQUkluZm86OnJlZ1QxOwor
I2VuZGlmCisgICAgR1BSUmVnIHRhcmdldFJlZyA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisgICAg
Ly8gVGhpcyBpcyB0aGUgQ2FsbExpbmtJbmZvKiBvbiBlbnRyeSBhbmQgdXNlZCBsYXRlciBhcyBh
IHRlbXAuCisgICAgR1BSUmVnIGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcgPSBHUFJJbmZvOjpub25B
cmdHUFIwOworCisgICAgaml0LmZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVBy
b2xvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHJlZ2lzdGVyRW50cnkgPSBqaXQubGFiZWwoKTsK
KyNlbmRpZgorCisgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6VmlydHVhbENhbGwpOwor
CisgICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0aCBleGVjdXRpb24uIENvdW50IHRoZSBzbG93IHBh
dGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmlsZXIuCiAgICAgaml0LmFkZDMyKAogICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QyLCBDYWxsTGlua0luZm86Om9mZnNldE9mU2xvd1BhdGhDb3VudCgp
KSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9BbmRUZW1wUmVn
LCBDYWxsTGlua0luZm86Om9mZnNldE9mU2xvd1BhdGhDb3VudCgpKSk7CiAKICAgICAvLyBGSVhN
RTogd2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBmb3IgZWxpbWluYXRpbmcgdGhlc2UgY2hlY2tzLiBJ
biBtYW55IGNhc2VzLAogICAgIC8vIHRoZSBERkcga25vd3MgdGhhdCB0aGUgdmFsdWUgaXMgZGVm
aW5pdGVseSBhIGNlbGwsIG9yIGRlZmluaXRlbHkgYSBmdW5jdGlvbi4KQEAgLTE4MSw1NCArMzEw
LDY5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0KICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJyYW5jaFRlc3Q2
NCgKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25a
ZXJvLCBjYWxsZWVSZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogI2Vsc2UKICAgICBz
bG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgY2FsbGVlVGFnUmVnLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICNlbmRpZgotICAgIHNsb3dDYXNlLmFw
cGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uVHlwZSkp
OworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKGNhbGxlZVJlZywgSlNG
dW5jdGlvblR5cGUpKTsKICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB3ZSBoYXZlIGEgSlNGdW5j
dGlvbi4KICAgICAKICAgICBqaXQubG9hZFB0cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCi0g
ICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNh
bGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICB0YXJn
ZXRSZWcpOwogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Ci0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklU
Q29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVj
aWFsaXphdGlvbktpbmQoKSkpLAotICAgICAgICBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgc2xvd0Nh
c2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6
cmVnVDQpKTsKKyAgICAgICAgICAgIHRhcmdldFJlZywgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9m
RW50cnlGb3IoCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2lu
ZCgpLAorICAgICAgICAgICAgICAgIGVudHJ5UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby5hcmd1
bWVudHNMb2NhdGlvbigpKSkpLAorICAgICAgICB0YXJnZXRSZWcpOworICAgIHNsb3dDYXNlLmFw
cGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHRhcmdldFJlZykpOwog
ICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdl
J3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBmYXN0CiAgICAgLy8gY2FsbC4KICAgICAKICAgICAv
LyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCi0g
ICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDQpOworICAgIGVtaXRQ
b2ludGVyVmFsaWRhdGlvbihqaXQsIHRhcmdldFJlZyk7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5p
c1RhaWxDYWxsKCkpIHsKLSAgICAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQ
UkluZm86OnJlZ1Q0KTsKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1l
QmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChjYWxsTGlua0luZm9BbmRUZW1wUmVnKTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWls
Q2FsbFNsb3codGFyZ2V0UmVnKTsKICAgICB9Ci0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDQp
OwotCisgICAgaml0Lmp1bXAodGFyZ2V0UmVnKTsKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwot
ICAgIAorCisgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6VmlydHVhbFNsb3dDYWxsKTsK
KwogICAgIC8vIEhlcmUgd2UgZG9uJ3Qga25vdyBhbnl0aGluZywgc28gcmV2ZXJ0IHRvIHRoZSBm
dWxsIHNsb3cgcGF0aC4KKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZv
cmVQcm9sb2d1ZSgpOwogICAgIAogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZp
cnR1YWxDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBH
TE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBwYXRj
aEJ1ZmZlciwKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZpcnR1YWwgJXMgc2xvdyBwYXRoIHRodW5rIiwKICAg
ICAgICAgY2FsbExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2Fs
bCIgOiBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/ICJ0YWlsIGNh
bGwiIDogImNvbnN0cnVjdCIpKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2Rl
UmVmKTsKKworICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NFbnRyeSwg
Y29kZVJlZi5jb2RlKCkpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZWdpc3RlckVudHJ5UHRyID0gcGF0
Y2hCdWZmZXIubG9jYXRpb25PZihyZWdpc3RlckVudHJ5KTsKKworICAgIGZvciAodW5zaWduZWQg
ZW50cnlJbmRleCA9IFJlZ2lzdGVyMUFyZ0VudHJ5OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQ
b2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKQorICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0
RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksIHJl
Z2lzdGVyRW50cnlQdHIpOworI2VuZGlmCisKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwog
fQogCiBlbnVtIFRodW5rRW50cnlUeXBlIHsgRW50ZXJWaWFDYWxsLCBFbnRlclZpYUp1bXBXaXRo
U2F2ZWRUYWdzLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzIH07CiAKLXN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwp
CitzdGF0aWMgSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUZvckdlbmVyYXRvcihWTSogdm0s
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0g
RW50ZXJWaWFDYWxsKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxv
ZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY4OQpAQCAtMjM3LDggKzM4MSwxNCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgCiAgICAgSlNJbnRlcmZh
Y2VKSVQgaml0KHZtKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzdGFja0FyZ3NFbnRy
eTsKKwogICAgIHN3aXRjaCAoZW50cnlUeXBlKSB7CiAgICAgY2FzZSBFbnRlclZpYUNhbGw6Cisg
ICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7
CisKKyAgICAgICAgc3RhY2tBcmdzRW50cnkgPSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFbnRlclZp
YUp1bXBXaXRoU2F2ZWRUYWdzOgpAQCAtMzc5LDI1ICs1MjksMzMgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktf
SUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVz
IHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJU
YWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRT
YXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2lu
ZCkuZGF0YSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUgJXMlcyB0cmFtcG9saW5lIiwgZW50cnlUeXBlID09
IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVu
dHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBT
YXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSkpOworICAgIGlmIChlbnRy
eVR5cGUgPT0gRW50ZXJWaWFDYWxsKSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBz
dGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisK
KyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNv
ZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFj
a0VudHJ5UHRyKTsKKyAgICB9CisKKyAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNv
ZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSk7CisKIH0KIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNX
aXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIHJldHVybiBuYXRpdmVG
b3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9y
R2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyk7Cisg
ICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVt
cFdpdGhTYXZlZFRhZ3MpLmNvZGVSZWYoKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFnc0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0
dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhv
dXRTYXZlZFRhZ3MpOworICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JD
YWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzKS5jb2RlUmVmKCk7CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQorSklURW50
cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAg
cmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CkBAIC01
MzYsNiArNjk0LDQzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJ1bnJlYWNoYWJsZSB0aHVu
ayIpKTsKIH0KIAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
K3N0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2FkUmVnQ2FsbChTcGVjaWFsaXplZFRodW5rSklUJiBq
aXQsIFZNKiB2bSkKK3sKKyAgICAvLyBsb2FkIHN0cmluZworICAgIEdQUlJlZyB0aGlzUmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCk7CisgICAgR1BSUmVnIGluZGV4
UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMik7CisgICAgR1BSUmVn
IGxlbmd0aFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpOworICAg
IEdQUlJlZyB0ZW1wUmVnID0gU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMDsKKworICAg
IGppdC5jaGVja0pTU3RyaW5nQXJndW1lbnQoKnZtLCB0aGlzUmVnKTsKKworICAgIC8vIExvYWQg
c3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcg
dGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0aGlzUmVnLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkp
LCBsZW5ndGhSZWcpOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRo
aXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgdGVtcFJlZyk7Cisg
ICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgdGVtcFJlZykpOworCisgICAgLy8gbG9hZCBpbmRleAorICAgIGppdC5tb3ZlKGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDEpLCBpbmRleFJlZyk7CisgICAgaml0LmFwcGVu
ZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJbnQzMihpbmRleFJlZykpOworCisgICAgLy8gRG8g
YW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5k
aWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVu
ZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
UmVnLCBsZW5ndGhSZWcpKTsKKworICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlcgorICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlzMTZCaXQ7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6SnVtcExpc3QgY29udDhCaXQ7CisgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAg
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6
ZmxhZ3NPZmZzZXQoKSksIGxlbmd0aFJlZyk7CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgdGVtcFJlZyk7
CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgbGVuZ3RoUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZs
YWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0
ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCAwKSwgdGVtcFJlZyk7
CisgICAgY29udDhCaXQuYXBwZW5kKGppdC5qdW1wKCkpOworICAgIGlzMTZCaXQubGluaygmaml0
KTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgodGVtcFJlZywgaW5k
ZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc1R3bywgMCksIHRlbXBSZWcpOworICAgIGNvbnQ4
Qml0LmxpbmsoJmppdCk7Cit9CisjZWxzZQogc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3Bl
Y2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0pCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKQEAg
LTU2NSw2ICs3NjAsNyBAQCBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRo
CiAgICAgaml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGNvbnQ4Qml0
LmxpbmsoJmppdCk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNp
YWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtLCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBz
cmMsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lz
dGVySUQgc2NyYXRjaCkKIHsKQEAgLTU3NCwzNCArNzcwLDY5IEBAIHN0YXRpYyB2b2lkIGNoYXJU
b1N0cmluZyhTcGVjaWFsaXplZFRodW4KICAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNo
VGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgZHN0KSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNX
aXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CisjaWYgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6SW5SZWdpc3RlcnMpOworICAgIHN0cmluZ0NoYXJMb2FkUmVnQ2FsbChqaXQsIHZtKTsK
KyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCk7Cisg
ICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJz
VG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVu
ZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNoYXJDb2RlQXQiKTsKKyNlbHNlCiAgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0p
OwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwg
ImNoYXJDb2RlQXQiKTsKKyNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVs
cGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7Cisg
ICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykp
OworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVH
UFIpOworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGpp
dC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbHNlCiAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwg
dm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qx
KTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0p
LCAiY2hhckF0Iik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFy
Q29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hh
ckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDEpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGls
bEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICAvLyBsb2Fk
IGNoYXIgY29kZQorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KDEpLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBqaXQuYXBwZW5k
RmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdEludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFy
Z0dQUjApKTsKKworICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklU
Ojpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVy
ZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1i
bHlIZWxwZXJzOjpTcGlsbEFsbCk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7
CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vsc2UKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGpp
dCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CiAgICAgLy8gbG9hZCBjaGFyIGNv
ZGUKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qx
KTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0p
LCAiZnJvbUNoYXJDb2RlIik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNs
ejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmdKdW1wOwpAQCAtNjIyLDExICs4
NTMsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0bwogICAgIHJl
dHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJj
bHozMiIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQog
ewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBw
b3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNh
bGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxs
KHZtKTsKIAogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91
YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDApOwpAQCAtNzgyLDEyICsxMDEzLDEyIEBAIGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVy
KHRydW5jKTsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7CiAgICAg
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
bkludEp1bXA7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihmbG9vcikgfHwgIWppdC5z
dXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwo
dm0pOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1wLmxpbmsoJmppdCk7CkBAIC04MjUsMTEgKzEwNTYs
MTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0bwogICAgIHJldHVy
biBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmbG9v
ciIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewog
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91Ymxl
T3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRT
dHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg0OCwxMSArMTA3OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNlaWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRo
UmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKSB8fCAh
aml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZl
Q2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQu
bG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1
bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBA
IC04NzEsMTEgKzExMDIsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5l
cmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWls
Q2FsbCh2bSksICJ0cnVuYyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVu
a0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcm91bmRUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAg
IGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoanNSb3VuZCkgfHwgIWppdC5zdXBwb3J0c0Zsb2F0
aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAg
ICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50
KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0
dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtOTA1LDM3ICsxMTM2LDM3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG8KICAgICByZXR1cm4g
aml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicm91bmQi
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAg
aWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0
aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlm
ICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0
aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNh
bGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhw
KSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsK
ICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwo
dm0pLCAiZXhwIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRv
cihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
ICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BX
cmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2
ZVRhaWxDYWxsKHZtKSwgImxvZyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAg
aWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkpCi0gICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50
cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdW5zaWduZWQgdmly
dHVhbFJlZ2lzdGVySW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApOwpAQCAtOTg4
LDcgKzEyMTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoCiAg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImFicyIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsKQEAgLTEwMTksMTEgKzEyNTAsMTEgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcgogICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5n
UG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAg
ICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBqaXQuZW1pdFJhbmRvbVRodW5rKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBTcGVjaWFsaXplZFRodW5rSklUOjpm
cFJlZ1QwKTsKQEAgLTEwMzEsMTYgKzEyNjIsMjIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJh
bmRvbVRodW5rR2VuZXJhdAogCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJhbmRvbSIpOwogI2Vsc2UKLSAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlO
YXRpdmVDYWxsKHZtKTsKICNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRU
aGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAg
IENDYWxsSGVscGVycyBqaXQodm0pOworICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZXM7CisKKyAgICBqaXQuc3BpbGxBcmd1
bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwogICAgIAotICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6OkxhYmVsIHN0YWNr
QXJnc0VudHJ5KCZqaXQpOwogICAgIAorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
CiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1lLgogICAgIGppdC5zdG9yZVB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKICAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCkpOwpAQCAtMTExMCwyMCArMTM0NywyMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQu
bG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
a0ZvcihDb2RlRm9yQ2FsbCkpLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFi
bGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eSkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6
cmVnVDApOworICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7CiAgICAgCiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0
aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwKTsK
ICAgICAKICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7Ci0g
ICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQp
OwotICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtKSkpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKAotICAgICAgICBsaW5rQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5r
IGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsKKworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcGF0
Y2hCdWZmZXIubGluayhmYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3Modm0pKSk7CisKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxp
emVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeVB0ciA9IHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkpOworCisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0
aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29k
ZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJ
KHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5
UG9pbnRzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQp
CkBAIC0zNiwzNCArMzcsMzUgQEAgY2xhc3MgQ2FsbExpbmtJbmZvOwogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSopOwogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWND
YWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
IGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSop
OwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiwgQ2FsbExpbmtJ
bmZvJik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3Io
Vk0qLCBDYWxsTGlua0luZm8mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxH
ZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKik7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0
b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNKik7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5yZWFjaGFibGVHZW5lcmF0b3IoVk0qKTsKIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
YWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihW
TSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1
bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVy
YXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50
cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNX
aXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2Vp
bFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZXhwVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVu
dHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50
c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
aW11bFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1
bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiB0cnVuY1RodW5rR2VuZXJh
dG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGxHZW5lcmF0b3IoVk0qIHZtKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qKTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwyNiBAQCBz
dGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtCiAgICAgaWYgKHZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERp
cmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxs
RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0u
Z2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZt
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwK
KyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJh
dG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAg
ICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC01OSwxMiAr
NzMsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2bQogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
ayksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSksCisgICAgICAg
ICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
CisgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpLAorICAgICAg
ICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0
RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTcyLDE0ICsx
MDAsMjggQEAgc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDbwogI2lmIEVO
QUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdl
dENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2
bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dl
bmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGV2YWxF
bnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRo
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxf
cHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCkpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTg3LDE0ICsxMjksMjggQEAgc3RhdGljIHZv
aWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYg
KHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVu
dHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgp
KSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFS
QU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSks
CisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQpAQCAtMTAyLDE0ICsxNTgsMjggQEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVu
dHJ5cG9pbnQoVgogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAg
ICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykp
KTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAg
ICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29k
ZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3By
b2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAg
ICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiB2b2lkIHNldEVudHJ5
cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzczLDkgKzM3Myw5IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50
cnlPU1IoRXhlY1MKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgIk9TUiBlbnRy
eSIsICgiaW4gcHJvbG9ndWUiKSk7CiAgICAgCiAgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCi0g
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVB
ZGRyZXNzKCksIDApOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1
dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hlY2spOwotICAg
IExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKE11
c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKKyAgICBMTElOVF9SRVRVUk5f
VFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hl
Y2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoSklU
KQogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIqLCBFbnRyeUtpbmQp
CkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2Fs
bChFeGVjCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7
Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RD
aGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTEzMDYsMTIgKzEzMDYsMTIgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjLCBlcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tT
bG90OwogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUg
YXJpdHk7CisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4
ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVz
dENoZWNrQXJpdHk7CisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVx
dWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3Ioa2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlD
aGVja05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCEhY29k
ZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1MSwxOSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVudHJ5CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZt
LCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCitlbnVtIFNob3VsZENy
ZWF0ZVJlZ2lzdGVyRW50cnkgeyBDcmVhdGVSZWdpc3RlckVudHJ5LCBEb250Q3JlYXRlUmVnaXN0
ZXJFbnRyeSB9OworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKFZNKiB2bSwgdm9pZCAoKnRhcmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5k
LCBTaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5IHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgPSBE
b250Q3JlYXRlUmVnaXN0ZXJFbnRyeSkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwot
ICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoc2hvdWxkQ3JlYXRlUmVnaXN0ZXJF
bnRyeSA9PSBDcmVhdGVSZWdpc3RlckVudHJ5KQorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiB0aGVy
ZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1
cmUgSSBjYXJlLgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAg
aml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKQEAgLTYzLDI0ICs3Miw0NCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQp
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0
ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwi
LCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdz
IGNhbGwiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJn
cyBjb25zdHJ1Y3QiLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRD
b2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJm
dW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjb25zdHJ1Y3QiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0s
IExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2spLCAiZnVuY3Rpb24gZm9yIHJlZ2lzdGVyIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNr
IiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSks
ICJmdW5jdGlvbiBmb3IgY29uc3RydWN0Iik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwgd2l0aCBhcml0
eSBjaGVjayIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkK
IHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rp
b24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNv
bnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNvbnN0
cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0IHdp
dGggYXJpdHkgY2hlY2siKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50
IHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVy
YXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
UmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
U3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFs
RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQXJpdHlDaGVja01v
ZGUgeworICAgIFJlZ2lzdGVyRW50cnksCiAgICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLAogICAg
IE11c3RDaGVja0FyaXR5CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw4ICs1NCw4IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBtX2ppdENvZGVGb3JDYWxsID0gbnVsbHB0cjsKICAgICBtX2ppdENvZGVG
b3JDb25zdHJ1Y3QgPSBudWxscHRyOwotICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgbV9qaXRFbnRyaWVz
Rm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xl
YXJFbnRyaWVzKCk7CiAjZW5kaWYKICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BB
UkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9
IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hl
Y2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzQsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKSVRFbnRyeXBvaW50cy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlR5cGVTZXQuaCIKQEAgLTE0NSw0NyArMTQ1LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
LCBBcml0eUNoZWNrTW9kZSBhcml0eSkKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlw
b2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZSkKICAgICB7CiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0
LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAg
ICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3
aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbgogICAgICAgICAvLyBtYWNoaW5lIGNv
ZGUuCi0gICAgICAgIGlmIChhcml0eSA9PSBNdXN0Q2hlY2tBcml0eSkgewotICAgICAgICAgICAg
c3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAg
ICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0Ogot
ICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAg
IHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAg
aWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JDYWxsLmVu
dHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAg
ICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0RW50cmllc0ZvckNvbnN0
cnVjdC5lbnRyeUZvcihlbnRyeVR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgcmVzdWx0ID0KLSAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFk
ZHJlc3NGb3JDYWxsKGFyaXR5KTsKLSAgICAgICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5
KSB7Ci0gICAgICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBm
b3IgdGhlIEpJVCdzIHZpcnR1YWwgY2FsbCBvcHRpbWl6YXRpb25zLgotICAgICAgICAgICAgc3dp
dGNoIChraW5kKSB7Ci0gICAgICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAg
ICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAg
ICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdlbmVyYXRl
ZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIC8v
IENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVh
bCBjYWxsIG9wdGltaXphdGlvbnMuCisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRy
eUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0
LnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRU
eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZv
ckNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNl
LCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRFbnRyaWVzRm9yQ2FsbCkgKyBKSVRF
bnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIGNh
c2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
RXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAg
ICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50
cmllc0ZvckNvbnN0cnVjdCkgKyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRy
eVBvaW50VHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzMsOCArMjI4LDggQEAgcHJvdGVjdGVkOgog
ICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2Rl
Rm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwotICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNo
ZWNrOworICAgIEpJVEVudHJ5UG9pbnRzIG1faml0RW50cmllc0ZvckNhbGw7CisgICAgSklURW50
cnlQb2ludHMgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNObwogICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlID0gdGFyZ2V0RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBp
ZiAoZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvckNhbGwoKSkgewogICAgICAgICAvLyBGb3JjZSB0
aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KLSAgICAgICAgZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOworICAg
ICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0
Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
Y3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCB2b2lk
IE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNCiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIG1faml0Q29kZUZvckNhbGwgPSBjYWxsVGh1bms7CiAgICAgbV9qaXRD
b2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0VGh1bms7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNr
QXJpdHkpOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRD
b2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7CisgICAgbV9q
aXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9q
aXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsK
KyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Quc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENo
ZWNrQXJpdHksIG1faml0Q29kZUZvckNvbnN0cnVjdC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdz
TXVzdENoZWNrQXJpdHkpKTsKICAgICBtX25hbWUgPSBuYW1lOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHYKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAg
ICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAgICBtX2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0Nv
ZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAg
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OworICAgICAgICBtX2ppdEVudHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOwogICAgICAgICBt
X251bVBhcmFtZXRlcnNGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSA6IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgogICAgICAgICBtX2ppdENvZGVG
b3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29k
ZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29u
c3RydWN0LmNsZWFyRW50cmllcygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1
Y3QgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IDogTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yODIsNiArMjgyLDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNl
bQogCiBzdGF0aWMgdm9pZCBzZXR1cExMSW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiB7CisgICAgY29kZUJsb2NrLT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBMTElu
dDo6c2V0RW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKIH0KIApAQCAtMjg5LDYgKzI5MCw3IEBA
IHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2bSwgQ29kZUJsb2NrKiAKIHsKICNpZiBFTkFCTEUo
SklUKQogICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNv
ZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCk7CisgICAgY29kZUJsb2NrLT5zZXRQ
cmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgPT0gQ29t
cGlsYXRpb25TdWNjZXNzZnVsKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5
LDYgKzIwOSwxMCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNp
emUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJM
RShWTV9DT1VOVEVSUykKKyAgICBjbGVhckNvdW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5l
ZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7CiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5n
RW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdUYWJsZSk7CkBAIC00NzMsNyArNDc3LDcgQEAgU2Ft
cGxpbmdQcm9maWxlciYgVk06OmVuc3VyZVNhbXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShT
QU1QTElOR19QUk9GSUxFUikKIAogI2lmIEVOQUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0
b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRp
YyBKSVRFbnRyeUdlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMg
aW50cmluc2ljKQogewogICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29k
ZUF0SW50cmluc2ljOgpAQCAtOTIwLDQgKzkyNCwzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
K3ZvaWQgVk06OmNsZWFyQ291bnRlcnMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBOdW1iZXJWTUNvdW50ZXI7IGkrKykKKyAgICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisK
K3ZvaWQgVk06OmR1bXBDb3VudGVycygpCit7CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3Vu
dGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSArIGNvdW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJG
b3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRhTG9nKCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xu
Iik7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRvdGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgQmFzZWxpbmUgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVD
YWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERG
R0NhbGxlcikpOworICAgIGRhdGFMb2dGKCIlMTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3Io
RlRMQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRl
ckZvcihDYWxsVmFyYXJncykpOworICAgIGRhdGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBj
b3VudGVyRm9yKFRhaWxDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxz
XG4iLCBjb3VudGVyRm9yKERpcmVjdENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1v
cnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJGb3IoUG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxv
Z0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBzbG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1
YWxTbG93Q2FsbCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5
XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NOb0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0
YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAg
IGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9y
KFJlZ0FyZ3NFeHRyYSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5
IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6
dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7
CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFyaXR5IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZv
cihBcml0eUZpeHVwUmVxdWlyZWQpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDI1
LDYgKzQyNSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0
aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYgZ2V0SklURW50cnlTdHViKEpJVEVudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7Cisg
ICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRo
dW5rRW50cnlTdHViKEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7
CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdl
bmVyYXRvcik7CisgICAgfQogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0czsKICAgICAKQEAgLTU2Miw2ICs1
NzIsNTAgQEAgcHVibGljOgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2Nh
dG9yOwogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAg
ZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAgICAgICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERG
R0NhbGxlciwKKyAgICAgICAgRlRMQ2FsbGVyLAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAg
ICAgVGFpbENhbGwsCisgICAgICAgIENhbGxFdmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAg
ICAgICBQb2x5bW9ycGhpY0NhbGwsCisgICAgICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0
dWFsU2xvd0NhbGwsCisgICAgICAgIFJlZ0FyZ3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NO
b0FyaXR5LAorICAgICAgICBSZWdBcmdzRXh0cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAg
ICAgICAgU3RhY2tBcmdzQXJpdHksCisgICAgICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAg
ICAgTnVtYmVyVk1Db3VudGVyCisgICAgfTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAg
ICBzaXplX3QgbV9jb3VudGVyc1tOdW1iZXJWTUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNv
dW50ZXJzKCk7CisKKyAgICBzaXplX3QqIGFkZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBj
b3VudGVyVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNv
dW50ZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1f
Y291bnRlcnNbY291bnRlclR5cGVdOworICAgIH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZN
Q291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUg
Pj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gbV9jb3VudGVyc1tjb3VudGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291bnRlcnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBB
TFdBWVNfSU5MSU5FIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7
IHJldHVybiBtX2hhc093blByb3BlcnR5Q2FjaGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0
eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5NSw2ICs2OTUsMTcgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAor
I2RlZmluZSBFTkFCTEVfQ0FMTEVSX1NQSUxMU19DQUxMRUUgMAorI2RlZmluZSBFTkFCTEVfQ0FM
TEVSX1NQSUxMU19BUkdDT1VOVCAwCisjZGVmaW5lIEVOQUJMRV9TVEFDS19FTlRSWV9GSUxMU19D
QUxMRUVfUkVHIDAKKyNkZWZpbmUgRU5BQkxFX1NUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JF
RyAwCisjZGVmaW5lIEVOQUJMRV9WTV9DT1VOVEVSUyAwCisjZGVmaW5lIEVOQUJMRV9CQVNFTElO
RV9SRUdJU1RFUl9BUkdVTUVOVF9DQUxMUyAwCisKKyNpZiAhZGVmaW5lZChVU0VfUkVHSVNURVJf
QVJHVU1FTlRTKSAmJiBFTkFCTEUoSklUKSAmJiBVU0UoSlNWQUxVRTY0KSAmJiAoT1MoREFSV0lO
KSB8fCBPUyhVTklYKSkKKyNkZWZpbmUgVVNFX1JFR0lTVEVSX0FSR1VNRU5UUyAxCisjZW5kaWYK
KwogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdvcmsgb24gMzItYml0IHBsYXRmb3Jtcy4gRGlzYWJs
ZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5hYmxlIGl0LiAqLwogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCiAjdW5kZWYgRU5BQkxFX0ZUTF9KSVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296611</attachid>
            <date>2016-12-08 18:54:12 -0800</date>
            <delta_ts>2016-12-08 19:12:38 -0800</delta_ts>
            <desc>Likely fix for the build issue - fixed inconsistent case in new include file name.</desc>
            <filename>reg-calls-wip184.patch</filename>
            <type>text/plain</type>
            <size>340869</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQ3LDYgKzEzNDcsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeVBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MTIsNiArMzcxMyw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5UG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU1Myw2ICs1NTU1LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03Njk2LDYgKzc2OTksNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5UG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAg
ICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgICAg
IGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4
IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFzU2VlbkNsb3N1cmUo
ZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9hbGxvd1N0dWJzKHRy
dWUpCisgICAgLCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cyhmYWxzZSkKKyAg
ICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFyZ3VtZW50c0xv
Y2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKICAgICAsIG1fY2Fs
bFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2lu
Y2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
TGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxvY2s7IH0KICAgICB2
b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHZvaWQgc2V0
VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewor
ICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8fCAoYXJndW1lbnRz
TG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBl
OworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFy
Z3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKICAg
ICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1LDYgKzI3OSwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlw
ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRQcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMoKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMg
PSB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50
c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIGFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4TnVt
QXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1bWVudHM7CkBA
IC0zMzksNiArMzYzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNsb3N1cmUgOiAx
OwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAx
OworICAgIGJvb2wgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMgOiAxOworICAg
IHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWdu
ZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4
MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBt
X2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3Ro
ZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9pc1N0cmljdE1vZGUob3RoZXIubV9pc1N0cmlj
dE1vZGUpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fY29k
ZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci5tX3Zt
LCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1faGFzRGVidWdnZXJT
dGF0ZW1lbnQoZmFsc2UpCkBAIC0xOTAyLDYgKzE5MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFs
c2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0
b3IoKSkKICAgICAsIG1faXNTdHJpY3RNb2RlKHVubGlua2VkQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNlKQogICAgICwgbV9jb2Rl
VHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
KG1fZ2xvYmFsT2JqZWN0LT52bSgpLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jaykKICAgICAsIG1f
aGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICsz
NjksMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpCisgICAg
eworICAgICAgICBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAg
Ym9vbCBwcmVmZXJzU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzOworICAgIH0KKwogICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb2RlVHlwZT4obV9j
b2RlVHlwZSk7CkBAIC04NDUsNiArODU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNCZWVu
Q29tcGlsZWRXaXRoRlRMIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7IC8vIENvZGVUeXBlCiAKICAgICAv
LyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBi
ZSBwcml2YXRlIGlmIGl0IHdhc24ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8t
PmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpD
YWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxv
YWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25l
OwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRoYXQgdGhlIGdldHRl
ci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVn
VDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fcmFyZURh
dGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldEpJ
VENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFj
a0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0
b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBl
ID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVh
ciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9k
ZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBj
YXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBz
aG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBp
dCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5k
aWYKICAgICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlz
OwogICAgIFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2ODcsMjAgKzM2ODcsNjggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9m
IGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAg
Ly8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkg
ewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0g
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0
LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0
T0sgPSB0cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9u
dW1Bcmd1bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVz
aXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9k
ZXMsCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5v
ZGVzIGFuZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhl
IHJlbWFpbmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUg
ZXhpdCBwcm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNp
bmNlCisgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4g
dGhvdWdoIHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAg
ICAgLy8gZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9y
ZSB3ZSB3YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBT
ZXRMb2NhbCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAg
ICAvLyBXZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50
IHRvIHRoZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAg
IHVuc2lnbmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMs
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZl
Y3RvcjxOb2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0
QXJndW1lbnRSZWdpc3Rlck5vZGVzOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1
bWVudFJlZ2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAg
ICAgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1
bWVudCkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50
J3MgZm9yIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRB
cmd1bWVudFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQs
IE9wSW5mbyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3Vt
ZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAg
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQg
aXMgbm93IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisg
ICAgICAgIC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRS
ZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzW2ld
OworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9
IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0
ZXItPnNldFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3Vt
ZW50UmVnaXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkg
U2V0QXJndW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwg
T3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3Vt
ZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3Rh
Y2tbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEwLDggKzQ4NTgsMTAgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhl
cmUgc2luY2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1l
bnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAg
ICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdz
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2Rl
OjpUYWlsKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZv
ciBvdXIgYXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAg
ICAgICAvLyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFu
ZCBrZXB0IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3Ry
dWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNh
bGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYg
dGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVy
IGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAg
ICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3
YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQg
Y2xlYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDE0ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3Ig
dGhyZWFkZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQg
dmFyaWFibGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2lj
IGJsb2NrLgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8v
IFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAg
ICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9j
YWwsIFBoaSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1l
bnQuCisgICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBt
YXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgLy8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0
aGUgdmFyaWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1
c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhp
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2Nh
bHMgYW5kCi0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRo
ZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQg
bWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1
bWVudFJlZ2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJn
dW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAg
ICAvLyBpbiB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dl
ZCBieSBQaGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisg
ICAgICAgICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAg
ICAgICAgICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRo
YXQgdGhlIHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRv
bUxvY2FsIGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlm
CiAgICAgICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9s
bG93ZWQgYnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAg
ICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUg
bWFjaGluZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxk
IGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhl
IGFyZ3VtZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIg
Zm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTsp
Ci0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1l
bnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1h
bGx5LCBhIFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRo
ZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVu
dCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LAorICAgICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNl
ZW1lZCBsaWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5k
S2luZCBvcGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAg
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFy
Z3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgpAQCAtNDcwLDcgKzQ3MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAg
IC8vIERGRyBiYWNrZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvY2FscyB0aGF0IHRoaXMgcmVhZHMg
YXJlIGZsdXNoZWQuIEZUTCBiYWNrZW5kIGNhbiBoYW5kbGUgdGhvc2UKICAgICAgICAgLy8gbG9j
YWxzIGJlaW5nIHByb21vdGVkLgotICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSkKKyAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkgJiYgIW5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZWFkKFN0YWNrKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGl0J3MgcGhhbnRvbSwgaXQgc3RpbGwgaGFz
IHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4ndCBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIuCkBA
IC01NTksMTEgKzU2MCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgogICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAg
ICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAg
ICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGFy
ZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRl
KFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0R2V0dGVyOgogICAg
ICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVyZVJlZ2lzdHJhdGlv
blJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSB7IEJlZm9y
ZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252ZXJnZWQgfTsKIAor
ZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRpbWl6ZUFyZ3VtZW50
Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVzY3JpYmVzIHRoZSBm
b3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4uCiBlbnVtIEdyYXBo
Rm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNpYyBibG9ja3MgbWF5
IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAg
ICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2spOworICAgICAgICBj
bGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpOwogCiAgICAgICAg
IC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjoKICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblBy
b2xvZ3VlOgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblRhaWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDgg
KzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIC8vIG1h
a2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9y
KTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkK
ICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0
ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzg2LDYgKzE3ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIEdldENhbGxlZToK
KyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3JtYXQpOwogICAgIH0K
KworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJf
dCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9ICBEYXRh
Rm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAgICBtX3VzZUNv
dW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1h
dDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOworICAgICAgICBtX2Nh
bkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAgIG1fYm9ybkZvck9T
UiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJU
KG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBp
bml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk0LDcgKzI5NCw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFu
dHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChk
YXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQotICAgIEFTU0VSVChub2RlLT5oYXNW
YXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpID09IG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpKTsK
ICAgICBpZiAobm9kZS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkgewogICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnRyeUdldFZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhKSB7CkBAIC0z
NzMsNiArMzcyLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS0+Y2FzZXNbaV0udmFs
dWUsIGNvbnRleHQpLCAiOiIsIGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgImRlZmF1bHQ6IiwgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgIH0KKyAgICBp
ZiAobm9kZS0+aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCksICIoIiwgR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSwgIikiKTsKICAgICBD
bG9iYmVyU2V0IHJlYWRzOwogICAgIENsb2JiZXJTZXQgd3JpdGVzOwogICAgIGFkZFJlYWRzQW5k
V3JpdGVzKCp0aGlzLCBub2RlLCByZWFkcywgd3JpdGVzKTsKQEAgLTM5Niw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIldhc0hvaXN0ZWQiKTsKICAgICBvdXQucHJpbnQoIikiKTsKIAotICAgIGlmIChu
b2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKKyAgICBpZiAoKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9wKCkg
PT0gR2V0QXJndW1lbnRSZWdpc3RlcikgJiYgbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRh
KCkpCiAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChu
b2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAgICAgZWxz
ZSBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgb3V0LnByaW50KCIgIHBy
ZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpKTsK
QEAgLTUwNiw4ICs1MDcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBE
dW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRl
LCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0
aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsK
ICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZv
cm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQot
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyks
ICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBj
aGVja2luZzogIiwgbGlzdER1bXAobV9hcmd1bWVudHNGb3JDaGVja2luZyksICJcbiIpOworICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIG9uIHN0YWNrOiAiLCBsaXN0RHVtcChtX2FyZ3Vt
ZW50c09uU3RhY2spLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAog
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTE2MjAsMTMgKzE2MjMsMTQgQEAgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICBpZiAoIWN1cnJl
bnROb2RlIHx8IG5vZGUtPm9yaWdpbiAhPSBjdXJyZW50Tm9kZS0+b3JpZ2luKSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFj
aygqdGhpcykpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvRG86IE5lZWQgYSBiZXR0ZXIgdGVz
dAorICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJvZmlsZSogewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5N
YWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFu
ZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxv
Y2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhp
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51
c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC04Nzgs
OSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9z
dG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRo
ZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2Rl
IGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXli
ZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBu
b2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lz
dGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRo
ZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2Vw
dCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBG
bHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdl
dFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sg
dGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFu
ZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMs
MTEgKzkwMywxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRo
QWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8g
dGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVu
dHM7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c09uU3RhY2s7CisgICAgVmVjdG9y
PE5vZGUqLCA4PiBtX2FyZ3VtZW50c0ZvckNoZWNraW5nOwogICAgIAogICAgIC8vIEluIENQUywg
dGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxh
dGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJn
dW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNz
RGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1
bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKQEAgLTk1NCw2ICs5NTUsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5p
ZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6Oklu
aXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVk
dWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGlt
aXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAg
ICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07
CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTks
MTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAK
LXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1
cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5l
ZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUg
cHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSds
bCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZp
Y2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9u
IHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8g
Ym90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24g
aGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0K
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAg
ICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQg
PSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5m
bzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBG
dW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93
Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlv
bk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVj
b3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBp
bmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGws
IGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJl
Y29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5z
bG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtE
aXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24o
KSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3Nw
ZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAg
ICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGlu
IHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2Rl
QmxvY2spOwogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOworCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCBy
ZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwg
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpKTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAg
ICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93
UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCks
IFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYs
MjQgKzQxNiw5MSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxvY2so
KS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxl
KCpsaW5rQnVmZmVyKTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOwor
I2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBv
aW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlG
b3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRp
b25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxh
biwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50
cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRD
b3VudCgpOworICAgIEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCBy
ZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgKyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0
cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAgZXh0
cmFSZWdpc3RlckFyZ3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFy
Z3VtZW50SW5kZXgtLSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50
c1tleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJl
Z2lzdGVyQXJndW1lbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRy
eS5hcHBlbmQoanVtcCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBs
YWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisK
KyAgICBMYWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCByZWdp
c3RlckNoZWNrQXJpdHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIo
QmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgICAg
ICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQor
ICAgIAorICAgIExhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51
bVBhcmFtZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJl
Z2lzdGVyRW50cnlOb0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVn
QXJnc05vQXJpdHkpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7Cisj
ZW5kaWYKKworICAgIExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKworICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlvbiA9
PT0KICAgICAvLyBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCB3aXRob3V0IHBlcmZvcm1p
bmcgYW4gYXJpdHkgY2hlY2suCiAgICAgLy8gSWYgd2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4gYXJp
dHkgY2hlY2sgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgbW92ZWQgdGhlIHJldHVybiBhZGRyZXNzLAog
ICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhp
cyk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisjaWYg
IUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBzdG9yZVB0cihhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjZW5k
aWYKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgc3RvcmUzMihhcmdD
b3VudFJlZywgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisjZW5k
aWYKKworICAgIExhYmVsIGZyb21TdGFja0VudHJ5KHRoaXMpOworI2VuZGlmCisgICAgCisgICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRp
b25BbmRFeGl0KCkgLSAxKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwotICAgIEp1bXAgc3RhY2tPdmVyZmxv
dyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRT
dGFja0xpbWl0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4
ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBKdW1wIHN0
YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRy
ZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAKICAgICAvLyBN
b3ZlIHRoZSBzdGFjayBwb2ludGVyIGRvd24gdG8gYWNjb21tb2RhdGUgbG9jYWxzCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CkBAIC00NTIsMjggKzUyOSwxMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICBtX3NwZWN1bGF0aXZlLT5j
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKworICAgIEp1bXBMaXN0IGFyaXR5
T0s7CiAgICAgCi0gICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRv
ZXMgbm90IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAvLyBoYXZl
IGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2lu
dCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQotICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVj
a2VkKS4KLSAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nhcnks
IHdlIGVudGVyIGhlcmUuCi0gICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGZyb20gYSBjdGkgY2Fs
bCB0byBhIERGRyBzdHlsZSBvcGVyYXRpb24gKG5vcm1hbCBDIGNhbGxpbmcgY29udmVudGlvbnMp
LgotICAgIG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGp1bXAocmVnaXN0
ZXJBcmdzQ2hlY2tBcml0eSk7CisKKyAgICBKdW1wTGlzdCByZWdpc3RlckFyaXR5TmVlZHNGaXh1
cDsKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMpIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7Cisg
ICAgICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmFwcGVuZChicmFuY2gzMihCZWxvdywgYXJn
Q291bnRSZWcsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOwor
CisgICAgICAgIC8vIFdlIGhhdmUgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzLgorCisgICAgICAg
IC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0
aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgLy8gaGF2ZSBiZWVu
IHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hl
cmUgd2UgY2FuIHN0YXRpY2FsbHkKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG51
bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQpLgorICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nh
cnksIHdlIGVudGVyIGhlcmUuCisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0
cmFBcmdzID0gbGFiZWwoKTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpS
ZWdBcmdzRXh0cmEpOworCisgICAgICAgIC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1
bmN0aW9uCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKS5saW5rVG8obWFpbkVudHJ5LCB0
aGlzKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgICAgIH0KKyAgICAgICAganVtcChtYWluRW50cnkpOworICAgIH0KKworICAgIC8v
IEZhbGwgdGhyb3VnaAorICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAvLyBU
aGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRlci4KKyAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQgPSBzdGQ6Om1pbihudW1QYXJhbWV0ZXJzIC0g
MSwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisgICAgICAgIExh
YmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBsYWJlbCgpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8PSByZWdpc3RlckFyZ3VtZW50
Rml4dXBDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50
cnlwb2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAg
ICB9CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzQXJpdHkpOworCisg
ICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAubGluayh0aGlzKTsKKworICAgIGlmIChudW1QYXJh
bWV0ZXJzID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAg
ICAgIHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworCisgICAgc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJT
KQorICAgIEp1bXAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cCA9IGp1bXAoKTsKKyNlbmRpZgor
I2VuZGlmCisKKyAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICBp
bmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUo
Vk1fQ09VTlRFUlMpCisgICAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cC5saW5rKHRoaXMpOwor
I2VuZGlmCisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgbG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgYnJhbmNoMzIoQWJvdmVPckVxdWFs
LCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9y
aWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
aywgR1BSSW5mbzo6cmVnVDApOwogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBicmFuY2hUZXN0MzIoWmVybywgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAg
YXJpdHlPSy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIG1vdmUo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9j
YWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICBKdW1wIHRvRmlsbFJlZ2lzdGVycyA9IGp1bXAoKTsKKworICAg
IG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisKKyAgICBhcml0eU9LLmxpbmsodGhpcyk7CisgICAgdG9GaWxsUmVnaXN0ZXJzLmxpbmso
dGhpcyk7CisKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lz
dGVycworI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHKQorICAgIGxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lzdGVyRm9y
Q2FsbGVlKCkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5U
X1JFRykKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKKworICAgIGZv
ciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgIGxvYWQ2
NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKKyAg
ICBqdW1wKGZyb21TdGFja0VudHJ5KTsKKyNlbHNlCisgICAgYXJpdHlPSy5saW5rVG8oZnJvbUFy
aXR5Q2hlY2ssIHRoaXMpOwogICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOworI2VuZGlmCiAgICAg
CiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVu
U2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKQEAgLTUwMiwx
MCArNjYzLDM1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAg
ICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOwor
ICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRyeSk7Cisj
ZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNr
Tm90UmVxdWlyZWQsIG1haW5FbnRyeUNvZGVQdHIpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzKSk7CisgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjaykpOworCisgICAgZm9yICh1bnNpZ25l
ZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGVudHJ5OworICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAg
ICAgIGVudHJ5ID0gbWFpbkVudHJ5Q29kZVB0cjsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJB
cmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgIGVudHJ5
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2Fy
Z0NvdW50XSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgZW50cnlw
b2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJn
dW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisgICAgZW50cnlwb2ludHMuc2V0
RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRz
LnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3Rh
Y2tBcmdzV2l0aEFyaXR5Q2hlY2spKTsKIAogICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2sp
OworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2Vt
YmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsy
MTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0
Q2FsbFJlY29yZChjYWxsLCBzbG93UGF0aCwgaW5mbykpOwogICAgIH0KICAgICAKKyAgICB2b2lk
IGFkZEpTRGlyZWN0Q2FsbChDYWxsIGNhbGwsIENhbGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRo
LCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgeworICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBw
ZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGluZm8pKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0RpcmVjdFRhaWxDYWxsKFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlSnVtcCwgQ2FsbCBjYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBp
bmZvKQogICAgIHsKICAgICAgICAgbV9qc0RpcmVjdFRhaWxDYWxscy5hcHBlbmQoSlNEaXJlY3RU
YWlsQ2FsbFJlY29yZChwYXRjaGFibGVKdW1wLCBjYWxsLCBzbG93UGF0aCwgaW5mbykpOwpAQCAt
MjY3LDcgKzI3Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRKdW1wUGxh
Y2Vob2xkZXI7CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KLSAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZVNldHVwUmVnaXN0
ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKICAg
ICB2b2lkIGNvbXBpbGVCb2R5KCk7CkBAIC0zMTgsNyArMzIyLDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgSlNEaXJlY3RDYWxsUmVjb3JkKENh
bGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5m
bykKKyAgICAgICAgICAgIDogY2FsbChjYWxsKQorICAgICAgICAgICAgLCBzbG93Q2FsbChzbG93
Q2FsbCkKKyAgICAgICAgICAgICwgc2xvd1BhdGgoc2xvd1BhdGgpCisgICAgICAgICAgICAsIGlu
Zm8oaW5mbykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNTbG93Q2Fs
bCgpIHsgcmV0dXJuIHNsb3dDYWxsLm1fbGFiZWwuaXNTZXQoKTsgfQorCiAgICAgICAgIENhbGwg
Y2FsbDsKKyAgICAgICAgQ2FsbCBzbG93Q2FsbDsKICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CiAg
ICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwpAQCAtMzMxLDcgKzM0Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAsIGluZm8oaW5mbykKICAgICAgICAgewogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcDsKICAgICAgICAg
Q2FsbCBjYWxsOwogICAgICAgICBMYWJlbCBzbG93UGF0aDsKQEAgLTM1NSw3ICszNzAsMTIgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SW5mbz4gbV9leGNl
cHRpb25IYW5kbGVyT1NSRXhpdENhbGxTaXRlczsKICAgICAKICAgICBDYWxsIG1fY2FsbEFyaXR5
Rml4dXA7Ci0gICAgTGFiZWwgbV9hcml0eUNoZWNrOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJs
ZUV4dHJhQXJnczsKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOworICAg
IExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworI2VuZGlmCisgICAgTGFiZWwgbV9zdGFj
a0FyZ3NXaXRoQXJpdHlDaGVjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVKSVQ+
IG1fc3BlY3VsYXRpdmU7CiAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotSklURmluYWxp
emVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYg
cGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxM
aW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBKSVRFbnRyeVBvaW50cyYgZW50cnlwb2ludHMpCiAgICAg
OiBGaW5hbGl6ZXIocGxhbikKICAgICAsIG1faml0Q29kZShqaXRDb2RlKQogICAgICwgbV9saW5r
QnVmZmVyKFdURk1vdmUobGlua0J1ZmZlcikpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhB
cml0eUNoZWNrKQorICAgICwgbV9lbnRyeXBvaW50cyhlbnRyeXBvaW50cykKIHsKIH0KIApAQCAt
NTYsOSArNTcsOCBAQCBzaXplX3QgSklURmluYWxpemVyOjpjb2RlU2l6ZSgpCiAKIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiB7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJl
ZigKLSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNv
ZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxv
Y2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9E
RkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmco
Q29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSku
ZGF0YSgpKSk7CisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklURW50cnlQ
b2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKICAgICAKICAgICBtX3BsYW4u
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAgICAgCkBAIC02OSwxMCArNjksMTEg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplRnVuY3Rpb24oKQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dpdGhBcml0eUNoZWNr
LmlzRW1wdHlWYWx1ZSgpKTsKLSAgICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAotICAg
ICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIG1fd2l0aEFyaXR5Q2hlY2spOworICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVj
a0FyaXR5KS5pc0VtcHR5VmFsdWUoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVS
ZWYgPSBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSk7CisKKyAgICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRy
eVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwor
CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIAogICAg
IGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBw
dWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NS
ZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBKSVRFbnRyeVBv
aW50cyYpOwogICAgIHZpcnR1YWwgfkpJVEZpbmFsaXplcigpOwogICAgIAogICAgIHNpemVfdCBj
b2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7Ci0gICAgCisKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZm
ZXI7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklU
RW50cnlQb2ludHMgbV9lbnRyeXBvaW50czsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkg
JiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2Rl
ID09IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFt
ZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgcHVi
bGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxv
Y2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBu
b2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBT
ZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSB8fCBub2RlICE9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmbHVzaEFjY2Vzc0RhdGEpCkBAIC0x
MTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGluaXRpYWxBY2Nlc3NEYXRh
Lm9wZXJhbmQob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+b3AoKSAhPSBTZXRMb2NhbCk7IC8v
IFdlIHNob3VsZCBoYXZlIGluc2VydGVkIGEgRmx1c2ggYmVmb3JlIHRoaXMhCiAgICAgICAgICAg
ICBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgICAgICBpbml0aWFsQWNjZXNzTm9kZXMub3BlcmFuZChvcGVyYW5k
KSA9IG5vZGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDggQEAgTWluaWZpZWROb2RlIE1pbmlmaWVkTm9k
ZTo6ZnJvbU5vZGUoTm9kZQogICAgIHJlc3VsdC5tX29wID0gbm9kZS0+b3AoKTsKICAgICBpZiAo
aGFzQ29uc3RhbnQobm9kZS0+b3AoKSkpCiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBKU1ZhbHVl
OjplbmNvZGUobm9kZS0+YXNKU1ZhbHVlKCkpOworICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgcmVzdWx0Lm1faW5mbyA9IDA7CiAgICAgZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMg
fHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKICAgICAgICAgcmVzdWx0
Lm1faW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01p
bmlmaWVkTm9kZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQz
LDYgKzQzLDcgQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAogICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNz
RGF0YShHcmFwaCYgCiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAg
IGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNh
c2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MjgsNiArODI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdy
YXBoJik7CiAgICAgYm9vbCBhY2Nlc3Nlc1N0YWNrKEdyYXBoJiBncmFwaCkKICAgICB7CisgICAg
ICAgIGlmIChvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgcmV0dXJuIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShncmFwaCk7CiAg
ICAgfQogICAgIApAQCAtODQ2LDYgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxWYXJpYWJsZUFjY2Vzc0RhdGEqPigpLT5maW5kKCk7CiAgICAgfQogICAgIAor
ICAgIHZvaWQgc2V0VmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUpCisgICAgeworICAgICAgICBtX29wSW5mbyA9IHZhcmlhYmxlOworICAgIH0KKyAgICAKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5sb2NhbCgpOwpAQCAtMTIxNCw2ICsxMjIyLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8
dW5zaWduZWQ+KCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAhIXJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVz
dWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVy
bmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50
MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudFJlZ2lzdGVyLCBOb2RlUmVzdWx0SlMgLyogfCBO
b2RlTXVzdEdlbmVyYXRlICovKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJp
YWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5v
ZGVzLiAqL1wKICAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUg
UGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw2ICsxNDQsMTEgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsK
KyAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT5sb2NhbCgpKS5z
ZXROb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE1vdkhpbnQ6
IHsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT51bmxpbmtl
ZExvY2FsKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlw
ZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2lu
OwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJh
c2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhc2Vs
aW5lLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBv
bGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAg
ICAgICAgICAgaWYgKCFvbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2Fu
aXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgot
ICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsK
KyAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGFuIGFyZ3Vt
ZW50IG5vZGUgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgb2xkTm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF07CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKLSAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGU7CisgICAgICAgICAgICBOb2RlKiBzdGFja05vZGU7CisgICAgICAgICAgICBp
ZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBHZXRBcmd1bWVudFJlZ2lzdGVyLCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2Rl
ID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3Bl
Y05vbmUsIFNldExvY2FsLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGRO
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9k
ZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV3Um9v
dC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNl
dEFyZ3VtZW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5vZGU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZ1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09u
U3RhY2tbYXJndW1lbnRdID0gc3RhY2tOb2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChp
bnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2Nh
bCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTQsNyArMzE0LDkgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocgogICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICBwZXJmb3JtQ29uc3RhbnRGb2xk
aW5nKGRmZyk7CiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZGZnLm1fc3RyZW5ndGhS
ZWR1Y2VBcmd1bWVudHMgPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlczsKICAgICBjaGFuZ2VkIHw9
IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOworICAgIGNoYW5nZWQgfD0gcGVyZm9ybVN0
cmVuZ3RoUmVkdWN0aW9uKGRmZyk7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtTG9jYWxDU0UoZGZn
KTsKICAgICAKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VM
b2NhbENsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAvLyBB
bGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVs
eSByZWFkLgorICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3Qgc3RhY2sgYXJndW1l
bnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4g
MTspCiAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNGb3JDaGVja2luZ1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1f
Z3JhcGgpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1
ZXNbaV0pKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3Bl
Y0ludDUyT25seSkpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwg
U3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHBy
ZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJl
ZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5T
cGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtOTY4LDYgKzk3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgog
ICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAg
ICAgICAKLSAgICAgICAgLy8gQWxsIG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQg
aGVhZCBvZiByb290LiBOb3RlIHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCisgICAgICAgIC8v
IEFsbCBvZiB0aGUgc3RhY2sgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9v
dC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQogICAgICAgICAvLyBsb2NhbHMgYXJl
IGxpdmUgYXQgaGVhZCBvZiByb290LiBUaGlzIHNlZW1zIHdyb25nIGJ1dCBpc24ndC4gVGhpcyB3
aWxsIGhhcHBlbiBmb3IgZXhhbXBsZQogICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gYWNjZXNz
ZXMgY2xvc3VyZSB2YXJpYWJsZSAjNDIgZm9yIHNvbWUgb3RoZXIgZnVuY3Rpb24gYW5kIHdlIGVp
dGhlciBkb24ndAogICAgICAgICAvLyBoYXZlIHZhcmlhYmxlICM0MiBhdCBhbGwgb3Igd2UgaGF2
ZW4ndCBzZXQgaXQgYXQgcm9vdCwgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFzaWNhbGx5IHRoaXMK
QEAgLTE1Nyw4ICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyBGb3Ig
b3VyIHB1cnBvc2VzIGhlcmUsIHRoZSBpbXByZWNpc2lvbiBpbiB0aGUgYWxpYXNpbmcgaXMgaGFy
bWxlc3MuIEl0IGp1c3QgbWVhbnMgdGhhdCB3ZQogICAgICAgICAvLyBtYXkgbm90IGRvIGFzIG11
Y2ggUGhpIHBydW5pbmcgYXMgd2Ugd2FudGVkLgotICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2
ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1
bWVudChpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0SW5kZXgoMCku
bnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGkgPj0gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIC8v
IFN0YWNrIGFyZ3VtZW50cyBhcmUgbGl2ZSBhdCB0aGUgaGVhZCBvZiByb290LgorICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4KDAp
LmFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgLy8gTmV4dCBpZGVudGlmeSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIHNpbmsgUHV0U3RhY2tz
IHRvLiBXZSBzYXkgdGhhdCB0aGVyZSBpcyBhIGRlZmVycmVkCiAgICAgICAgIC8vIGZsdXNoIGlm
IHdlIGhhZCBhIFB1dFN0YWNrIHdpdGggYSBnaXZlbiBGbHVzaEZvcm1hdCBidXQgaXQgaGFzbid0
IGJlZW4gbWF0ZXJpYWxpemVkIHlldC4KQEAgLTM1OCw3ICszNjIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgotICAgICAg
ICAgICAgICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKG5vZGUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgc3NhQ2FsY3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYW5kVG9WYXJpYWJsZS5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2Nh
bCksCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKQEAgLTQ4MywxMSArNDg4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9w
ZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24n
dCBkZWxldGUgYXJndW1lbnQgUHV0U3RhY2tzLCBubyBuZWVkIHRvIGFkZCBvbmUgYmFjay4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250
YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0YWNrIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIs
IG5vZGUsICJcbiIpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9
IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbm9kZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtNTM4LDYg
KzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmc7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbmNyZXRlKGRlZmVycmVkLm9wZXJhbmQob3BlcmFu
ZCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFu
ZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1l
bnRzT25TdGFjay5jb250YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IHBoaU5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgR2V0U3RhY2sgdG8gZ2V0IHRoZSB2YWx1ZS4g
VGhpcyBtaWdodCBpbnRyb2R1Y2Ugc29tZSByZWR1bmRhbmN5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9
IG5hbWU7CiAgICAgICAgIG1fZGF0YVtpbmRleF0uc3BpbGxPcmRlciA9IHNwaWxsT3JkZXI7CiAg
ICAgfQorCiAgICAgdm9pZCByZWxlYXNlKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHJlbGVh
c2VBdEluZGV4KEJhbmtJbmZvOjp0b0luZGV4KHJlZykpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgKyttX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJU
KG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKICAgICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJ
RCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4
KHJlZyk7CkBAIC0yMzYsNiArMjM4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBt
X2JhbmstPmlzTG9ja2VkQXRJbmRleChtX2luZGV4KTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdW5sb2NrKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+
dW5sb2NrQXRJbmRleChtX2luZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9p
ZCByZWxlYXNlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNl
QXRJbmRleChtX2luZGV4KTsKQEAgLTI5OCw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2Nr
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5V
TV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAg
ICAgLS1tX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKKyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbmFtZUF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoaW5kZXggPCBOVU1fUkVHUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMgYW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBX
ZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRpbmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwg
YW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5k
IHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LiBXZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBieSBkaXJlY3RseQorICAgICAgICAvLyBhZGRpbmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1h
cHBpbmcgaGFzaCBtYXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFi
bG9jaykKQEAgLTgzLDE0ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25t
ZW50IGZvciBldmVyeSBsb2NhbC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5v
cCgpICE9IFNldEFyZ3VtZW50ICYmIG5vZGUtPm9wKCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxk
Tm9kZTsKKyAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKQEAgLTEwMSw5ICsxMDQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hcmd1bWVudEdldHRlcnMuYWRkKGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3
RGVmKAotICAgICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZh
cmlhYmxlKSwgYmxvY2ssIGNoaWxkTm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5uZXdEZWYoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZhcmlhYmxlKSwg
YmxvY2ssIGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKQEAg
LTI5NCw3ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9w
ZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBjaGlsZDsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSA9IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRHZXR0ZXJzLmNvbnRhaW5zKG5vZGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQobm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCktPmxvY2FsKSA9IG5vZGU7CkBAIC0zODIsMTcgKzM5MywyMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3Vt
ZW50c0ZvckNoZWNraW5nLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3Jh
cGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBu
b2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJn
dW1lbnRzRm9yQ2hlY2tpbmdbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5mb3JtYXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJl
Z2lzdGVyKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgIGZvcm1hdCA9IHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAg
ICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2Fz
ZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMyLDcg
KzkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CisgICAgaW5mby0+c2V0VXBDYWxs
KGNhbGxUeXBlLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9h
ZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZdICgpIHsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTEw
ODEsNyArMTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICB9CiAKLSAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihp
bmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC01NjE0
LDYgKzU2MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0Ogog
ICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDUyKEdQ
UlJlZyBzb3UKICAgICB1bmxvY2soZnByKTsKIH0KIAotR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZShFZGdlIGVkZ2UpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgZWRnZSwgR1BSUmVnIGdwclRvVXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKGdwclRvVXNlKTsKIAogICAgICAgICBpZiAoZWRn
ZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+
YXNKU1ZhbHVlKCk7CkBAIC0xMjAsNyArMTIwLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgdGhlIHJlZ2lzdGVyIGhhcyBhbHJlYWR5
IGJlZW4gbG9ja2VkIHdlIG5lZWQgdG8gdGFrZSBhIGNvcHkuCiAgICAgICAgIC8vIElmIG5vdCwg
d2UnbGwgemVybyBleHRlbmQgaW4gcGxhY2UsIHNvIG1hcmsgb24gdGhlIGluZm8gdGhhdCB0aGlz
IGlzIG5vdyB0eXBlIERhdGFGb3JtYXRJbnQzMiwgbm90IERhdGFGb3JtYXRKU0ludDMyLgogICAg
ICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1
bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdw
clRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBncHIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJU
b1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsK
ICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBn
cHIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC0x
MzgsNiArMTQzLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBpZiAoZ3ByVG9V
c2UgIT0gSW52YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC02
MzIsNiArNjQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKICAgICBDYWxsTGlu
a0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50
c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogICAgIGJvb2wgaXNWYXJhcmdzID0gZmFsc2U7CiAgICAg
Ym9vbCBpc0ZvcndhcmRWYXJhcmdzID0gZmFsc2U7CiAgICAgYm9vbCBpc1RhaWwgPSBmYWxzZTsK
QEAgLTcxNCw3ICs3MjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7Ci0gICAgCisgICAgc3RkOjpvcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4gdGFpbENhbGxlZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
Y2FsbGVlR1BSVGVtcG9yYXJ5OworCisgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpE
RkdDYWxsZXIpOworCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKICAg
ICBpZiAoaXNEaXJlY3QpIHsKQEAgLTczMyw2ICs3NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7CiAgICAgICAg
IHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gbV9qaXQuZ3JhcGgoKS5tX25leHRNYWNoaW5l
TG9jYWw7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkNh
bGxWYXJhcmdzKTsKICAgICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCkBAIC04
NDEsMTUgKzg1NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNUYWlsKSB7CisgICAgICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVl
RWRnZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7Ci0gICAgICAgICAgICBjYWxsZWVHUFIg
PSBjYWxsZWUuZ3ByKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBnZXQgdGhlIGEgc3BlY2lm
aWMgcmVnaXN0ZXIgZm9yIHRoZSBjYWxsZWUsIHNpbmNlIHRoYXQgd2lsbCBqdXN0IG1vdmUKKyAg
ICAgICAgICAgIC8vIGZyb20gYW55IGN1cnJlbnQgcmVnaXN0ZXIuICBXaGVuIHdlIHNpbGVudCBm
aWxsIGluIHRoZSBzbG93IHBhdGggd2UnbGwgZmlsbAorICAgICAgICAgICAgLy8gdGhlIG9yaWdp
bmFsIHJlZ2lzdGVyIGFuZCB3b24ndCBoYXZlIHRoZSBjYWxsZWUgaW4gdGhlIHJpZ2h0IHJlZ2lz
dGVyLgorICAgICAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGFsbG9jYXRlIGEgdGVtcCByZWdpc3Rl
ciBmb3IgdGhlIGNhbGxlZSBhbmQgbW92ZSBvdXJzZWx2ZXMuCisgICAgICAgICAgICB0YWlsQ2Fs
bGVlLmVtcGxhY2UodGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgdGFpbENh
bGxlZUdQUiA9IHRhaWxDYWxsZWUtPmdwcigpOworICAgICAgICAgICAgY2FsbGVlR1BSID0gYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsZWVHUFIg
IT0gY2FsbGVlR1BSKQorICAgICAgICAgICAgICAgIGNhbGxlZUdQUlRlbXBvcmFyeSA9IEdQUlRl
bXBvcmFyeSh0aGlzLCBjYWxsZWVHUFIpOwogICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKLSAg
ICAgICAgICAgICAgICBjYWxsZWUudXNlKCk7CisgICAgICAgICAgICAgICAgdGFpbENhbGxlZS0+
dXNlKCk7CiAKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRp
b25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVu
dHNJblJlZ2lzdGVycyA9IGFyZ3VtZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKICAgICAgICAg
ICAgIHNodWZmbGVEYXRhLnRhZ1R5cGVOdW1iZXIgPSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2ppdC5ncmFwaCgp
LmZyYW1lUmVnaXN0ZXJDb3VudCgpOwotICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0g
VmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIodGFpbENhbGxlZUdQ
UiwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MucmVzaXplKG51
bUFsbG9jYXRlZEFyZ3MpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC04NjQsNyArODkwLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFy
Z3NbaV0gPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKTsKIAogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1faml0LmNvZGVCbG9j
aygpKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5vcCgpID09
IENhbGxFdmFsKSB7CisgICAgICAgICAgICAvLyBDYWxsRXZhbCBpcyBoYW5kbGVkIHdpdGggdGhl
IGFyZ3VtZW50cyBpbiB0aGUgc3RhY2sKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxl
ZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CkBA
IC04NzgsMTUgKzkwNSw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3Nl
ZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpKSk7CisKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
Q2FsbEV2YWwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxh
dGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAg
ICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRy
ZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSArIGldOworICAgICAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGFyZyh0aGlzLCBhcmdFZGdlLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGFyZ0dQUiA9IGFyZy5ncHIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYXJn
R1BSID09IHBsYXRmb3JtQXJnR1BSIHx8IHBsYXRmb3JtQXJnR1BSID09IEludmFsaWRHUFJSZWcp
OworCisgICAgICAgICAgICAgICAgLy8gT25seSBmcmVlIHRoZSBub24tYXJndW1lbnQgcmVnaXN0
ZXJzIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09
IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgdXNlKGFyZ0VkZ2UpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxl
ZUFyZ3VtZW50U2xvdChpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBVc2UgdGhlIGFyZ3VtZW50IGVkZ2VzIGZvciBhcmd1bWVudHMgcGFzc2Vk
IGluIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFy
Z3M7IGktLSA+IDA7KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGFyZ0dQUiA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIGlmIChhcmdH
UFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSAr
IGldOworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgYXJnQ291bnQodGhp
cywgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICBHUFJS
ZWcgYXJnQ291bnRHUFIgPSBhcmdDb3VudC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBhcmdDb3VudEdQUik7CisjaWYgRU5BQkxFKENB
TExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50
R1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0g
YXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxhdGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKworICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9y
bUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRT
bG90KGkpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFy
YXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxl
ZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMs
IGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxl
ZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVlLnVzZSgpOwotICAgICAgICBtX2pp
dC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAg
ICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKQorI2VuZGlmCisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xv
dChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIH0KQEAgLTkxMyw3ICs5ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAgICAgfTsKICAgICAKICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbChjYWxsVHlwZSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
ZWVHUFIpOworICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNM
b2NhdGlvbiwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVHUFIpOwogCiAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBj
YWxsIG9wZXJhdGlvbkNhbGxFdmFsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSB0aGUg
cGFyYW1ldGVyIGFyZWEgaW4KQEAgLTk1NCw4ICsxMDI4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgaWYgKGlzVGFpbCkgewogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBEaXJlY3RUYWlsQ2FsbCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxsb3B0
KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxlZUdQ
UlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVKdW1wID0gbV9qaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKKworICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRpcmVjdENhbGwpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAg
ICAgICAgIApAQCAtOTcxLDYgKzEwNTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxpbmtEaXJl
Y3RDYWxsLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxs
b3B0KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxl
ZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOwogICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyht
YWluUGF0aCwgJm1faml0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CkBAIC05ODEsNiArMTA2Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBtYWluUGF0
aCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZt
X2ppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRl
SW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bCA9IG1faml0Lm5lYXJDYWxsKCk7CkBAIC05ODgsMjIgKzEwNzIsMjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGls
ZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgaWYgKGlzWDg2KCkp
Ci0gICAgICAgICAgICBtX2ppdC5wb3AoSklUQ29tcGlsZXI6OnNlbGVjdFNjcmF0Y2hHUFIoY2Fs
bGVlR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5wb3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGlu
IG5vbkFyZ0dQUjAKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5u
ZWFyQ2FsbCgpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENh
bGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAg
ICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2V0
UmVzdWx0QW5kUmVzZXRTdGFjaygpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkSlNEaXJl
Y3RDYWxsKGNhbGwsIHNsb3dQYXRoLCBjYWxsTGlua0luZm8pOworCisgICAgICAgIG1faml0LmFk
ZEpTRGlyZWN0Q2FsbChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoaXNUYWlsICYmIGNhbGxlZUdQ
UlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxl
ZS0+Z3ByKCksIGNhbGxlZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgbV9qaXQuZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7Ci0gICAgCisKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxs
ZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsK
IApAQCAtMTAyNSwyMyArMTExNCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgewogICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1ZmZsZURhdGEpOwot
ICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3Rh
Y2tBcmdzKQorICAgICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJl
Z3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7CiAgICAgICAgIGNh
bGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMAotCi0gICAgICAgIGlmIChpc1RhaWwpCi0gICAgICAgICAgICBtX2pp
dC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVy
IHdlIG1vdmVkIGNhbGxlZUdQUiB0byByZWdUMAotICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVGFp
bCkKKyAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZv
OjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgorICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIwCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAKLSAgICBpZiAoaXNUYWlsKQorICAgIGlmIChpc1RhaWwpIHsKKyAg
ICAgICAgdGFpbENhbGxlZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FsbGVlR1BSVGVtcG9y
YXJ5ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oSklURGlk
UmV0dXJuRnJvbVRhaWxDYWxsKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHNldFJl
c3VsdEFuZFJlc2V0U3RhY2soKTsKIAogICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xv
d0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5rSW5mbyk7CkBAIC00MTU0LDE4ICs0MjQyLDYx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2Ug
R2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgRU5B
QkxFKFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIEdQUlJlZyBjYWxsZWVS
ZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Js
b2NrLT5pbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZpcnR1YWxS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAg
ICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChjYWxsZWVSZWcpICYm
IG1fZ3Bycy5uYW1lKGNhbGxlZVJlZykgPT0gY2FsbGVlVmlydHVhbFJlZ2lzdGVyKQorICAgICAg
ICAgICAgICAgIGNhbGxlZVJlZ1dpdGhWYWx1ZSA9IGNhbGxlZVJlZzsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGNhbGxlZVJlZ1dpdGhWYWx1ZSA9PSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlUmVnV2l0aFZhbHVlLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgbV9ncHJzLnVubG9jayhjYWxsZWVSZWdXaXRoVmFsdWUpOworICAgICAgICAgICAgbV9n
cHJzLnJlbGVhc2UoY2FsbGVlUmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCByZXN1bHQuZ3ByKCkpOworI2VuZGlmCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRykK
KyAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgeworICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBHUFJSZWcg
YXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoYXJndW1lbnRDb3Vu
dFJlZykgJiYgbV9ncHJzLm5hbWUoYXJndW1lbnRDb3VudFJlZykgPT0gYXJndW1lbnRDb3VudFZp
cnR1YWxSZWdpc3RlcikKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
ID0gYXJndW1lbnRDb3VudFJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUp
OworICAgICAgICB9CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7Cisj
ZW5kaWYKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewogICAgICAgICBj
b21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1
bGF0aXZlSklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5
cGUpCiAgICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2pp
dC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQorICAgICwgbV9hcmd1bWVudEdlbmVyYXRp
b25JbmZvKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMpCiAgICAgLCBtX3N0YXRlKG1faml0LmdyYXBoKCkpCiAgICAgLCBtX2ludGVycHJl
dGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAgLCBtX3N0cmVhbSgmaml0LmppdENvZGUo
KS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZ2VuZXJhdGlvbklu
Zm9baV0gPSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2FyZ3VtZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYXJndW1lbnRH
ZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CiAgICAgbV9ncHJzID0gUmVnaXN0
ZXJCYW5rPEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7
CiB9CkBAIC0xMTk5LDYgKzEyMDIsMjYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRT
dHJpbmcoRGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zvcm1hdF07CiB9CiAKK3N0YXRpYyB2b2lk
IGR1bXBSZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8mIGluZm8sIHVuc2lnbmVkIGluZGV4KQor
eworICAgIGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDolcyVz
IiwgaW5kZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZv
cm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFM
b2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsKKyAgICBpZiAoaW5mby5yZWdpc3RlckZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIs
IGluZm8uZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICYmICEoaW5mby5yZWdp
c3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2VuZGlmCisgICAgICAgICkgeworICAgICAg
ICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZGF0YUxvZ0Yo
Ijolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7CisgICAgCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1
bXAoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVsKQpAQCAtMTIwOCwyNSArMTIz
MSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhCiAgICAgbV9n
cHJzLmR1bXAoKTsKICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7CiAgICAgbV9mcHJzLmR1bXAo
KTsKLSAgICBkYXRhTG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2ldOwotICAgICAgICBpZiAo
aW5mby5hbGl2ZSgpKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpLCBk
YXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmco
aW5mby5zcGlsbEZvcm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dG
KCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwotICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBkYXRhTG9nRigiOmZwciVkXG4i
LCBpbmZvLmZwcigpKTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9
IERhdGFGb3JtYXROb25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICYmICEo
aW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQotI2VuZGlmCi0gICAgICAgICAg
ICApIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3By
KCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICB9
CisKKyAgICBkYXRhTG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7
ICsraSkKKyAgICAgICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm9b
aV0sIGkpOworCisgICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lzdGVyczpcbiIpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytp
KQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9baV0sIGkpOworCiAg
ICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVsKTsKIH0KQEAg
LTE2NzcsNiArMTY5MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50Qmxv
Y2sKICAgICAKICAgICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9jay0+aW5kZXhdID0gbV9qaXQu
bGFiZWwoKTsKIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIGNoZWNrQXJndW1l
bnRUeXBlcygpOworCiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpIHsKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2tzIHRo
YXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAgICAgIC8vIEJ1dCB0byBi
ZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRoaXMgYmxvY2ssIGRy
b3AgaW4gYQpAQCAtMTY4NywxNSArMTcwMywzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3VycmVudEJsb2NrCiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZl
bnQ6OnJlc2V0KCkpOwogICAgIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIHNl
dHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworICAgIAogICAgIG1faml0LmppdEFzc2Vy
dEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgbV9qaXQuaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsK
ICAgICBtX2ppdC5qaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpOwogCiAgICAgbV9zdGF0ZS5y
ZXNldCgpOwogICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKG1fYmxvY2spOwotICAgIAorCiAg
ICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFu
ZEZvckluZGV4KGkpOworICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4ICYmIG9wZXJhbmRJc0Fy
Z3VtZW50KG9wZXJhbmQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG1fYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOworICAgICAgICAgICAgTm9k
ZSogYXJndW1lbnROb2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2Fy
Z3VtZW50XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFyZ3VtZW50Tm9kZSAmJiBh
cmd1bWVudE5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlLT5yZWZDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1bWVudFJlZ2lzdGVycydz
LgorICAgICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICAg
ICAgICAgIFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBN
aW5pZmllZElEKGFyZ3VtZW50Tm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dE5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNB
dEhlYWRbaV07CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBO
byBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzY0LDcgKzE3OTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBhYnN0cmFjdCBzdGF0ZSBpcyByZW1hdGVyaWFsaXplZCBmb3IgdGhlIG5l
eHQgbm9kZS4KICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhtX2luZGV4SW5C
bG9jayk7CiAgICAgfQotICAgIAorCiAgICAgLy8gUGVyZm9ybSB0aGUgbW9zdCBiYXNpYyB2ZXJp
ZmljYXRpb24gdGhhdCBjaGlsZHJlbiBoYXZlIGJlZW4gdXNlZCBjb3JyZWN0bHkuCiAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTE3ODIsMTMgKzE4
MTYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1f
b3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1l
bnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0Zv
ckNoZWNraW5nW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBh
cmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50
cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5v
cCgpID09IFNldEFyZ3VtZW50CisgICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2Nh
bCAmJiBub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAg
ICAgICAgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNT
RVJUKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0x
Nzk5LDIzICsxODM1LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBl
cygKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1
ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSk7Ci0gICAgICAgIAorICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlOwor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXIgPSBJ
bnZhbGlkR1BSUmVnOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgYXJndW1lbnRSZWdp
c3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKGFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAg
ICB9IGVsc2UKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgICBjYXNl
IEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBh
cmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGbHVzaGVkQm9vbGVhbjogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdp
c3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoYXJndW1l
bnRSZWdpc3RlciwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOiB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGFyZ3VtZW50UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTg0NiwxMCArMTkwMyw2MyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2lu
KCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JF
bnRyeSgpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIEJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKDApOworCisg
ICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgZmlyc3RCbG9j
ay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICBOb2RlKiBub2RlID0gZmlyc3RC
bG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnID0gR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50UmVnICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3Bycy5pc0xvY2tlZChhcmd1bWVudFJl
ZykpOworICAgICAgICAgICAgbV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoYXJndW1lbnRSZWcpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudFJlZywgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1lbnRSZWdpc3RlclZhbHVl
KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGFyZ3VtZW50UmVnLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdp
c3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdpc3RlcnMgbG9j
a2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudFJlZyk7CisjaWYgRU5BQkxF
KFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBHZXRDYWxsZWUpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3By
cy5pc0xvY2tlZChjYWxsZWVSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNp
ZmljKGNhbGxlZVJlZyk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGNhbGxlZVJlZywgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1l
bnRSZWdpc3RlclZhbHVlKG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGNhbGxlZVJlZywgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgIGluZm8ubm90aWNlT1NSQmlydGgoKm1fc3RyZWFtLCBub2Rl
LCB2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gRG9uJ3QgbGVhdmUgYXJndW1lbnQg
cmVnaXN0ZXJzIGxvY2tlZC4KKyAgICAgICAgICAgIG1fZ3Bycy51bmxvY2soY2FsbGVlUmVnKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19BUkdDT1VOVF9SRUcpCisgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpKTsKKyAgICAgICAg
ICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50Q291bnRSZWcpOworICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihhcmd1bWVudENvdW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJJbnRlZ2VyKTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1
ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVudENvdW50UmVnLCBEYXRhRm9ybWF0SW50
MzIpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdp
c3RlcnMgbG9ja2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVn
KTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoKQogewotICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOwotICAgIAogICAg
IEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSAwOyBibG9ja0luZGV4IDwgbV9qaXQuZ3JhcGgoKS5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7CiAgICAgICAgIG1faml0LnNldEZvckJsb2NrSW5kZXgoYmxvY2tJbmRleCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSUmVnIGZpbGxKU1ZhbHVlKEVkZ2UpOworICAg
IEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlLCBHUFJSZWcgZ3ByVG9Vc2UgPSBJbnZhbGlkR1BSUmVn
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYm9vbCBmaWxsSlNWYWx1ZShFZGdlLCBH
UFJSZWcmLCBHUFJSZWcmLCBGUFJSZWcmKTsKICNlbmRpZgpAQCAtMjAwLDYgKzIwMCw5IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKICAg
ICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZz
ZXQoKSk7CiAjZW5kaWYKKyAgICAgICAgaWYgKHNwZWNpZmljID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNwZWNpZmljKTsKICAgICAgICAgaWYg
KHNwaWxsTWUuaXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTMxNSw2ICsz
MTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQXJndW1lbnRUeXBlcygpOwogCisgICAg
dm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIHZvaWQgY2xlYXJH
ZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3aGVuIGdl
bmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUsNiArNDkwLDkgQEAgcHVibGljOgogICAgIC8v
IFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwo
VmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAgeworICAgICAgICBpZiAoc3BpbGxNZS5pc0Fy
Z3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAwKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI4NzIsNyArMjg4
MCwxMCBAQCBwdWJsaWM6CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm9Gcm9t
VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgp
XTsKKyAgICAgICAgaWYgKHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKV07CiAgICAg
fQogICAgIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQpA
QCAtMjg5NSw2ICsyOTA2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2Nr
OwogICAgIC8vIFZpcnR1YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1hcHMuCiAgICAgVmVjdG9y
PEdlbmVyYXRpb25JbmZvLCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAgICBWZWN0b3I8R2VuZXJh
dGlvbkluZm8sIDg+IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAgICBSZWdpc3RlckJhbms8
R1BSSW5mbz4gbV9ncHJzOwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZvPiBtX2ZwcnM7CiAKQEAg
LTI5OTMsNiArMzAwNSwyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgR1BSUmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAg
ICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVn
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpIHx8IHJl
Z1RvVXNlICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBncHJVc2VTcGVjaWZpYyhyZWdU
b1VzZSk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVPcGVyYW5kKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9lZGdlKQpAQCAtMzAyOSw2ICszMDU1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSk7CiAg
ICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CisgICAgR1BSUmVnIGdwclVzZVNw
ZWNpZmljKEdQUlJlZyByZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxp
ZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+
ZmlsbEpTVmFsdWUobV9lZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52
YWxpZDsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChsb2NhbC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5tX3N0cmVuZ3RoUmVkdWNl
QXJndW1lbnRzICE9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsgaS0tOykg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09IGxv
Y2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCwxNSArMTMwLDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMywgTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHNpemVvZihSZWdpc3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihpbnQz
Ml90KSkpKTsKICAgICBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgR1BS
SW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oLXN0YXRpY19jYXN0PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycykpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAotICAgIGppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BS
SW5mbzo6cmVnVDEpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Pigx
MDAwKSkpKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwogICAgIGpp
dC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24p
OwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50
IHJlZ2lzdGVycworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3Vu
dCgpOworICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmdDb3VudFJlZyk7CisgICAgCisgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAg
CisgICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsoJmppdCk7CisjZW5kaWYKKyAgICAKICAgICBqaXQu
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAg
ICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKLSAgICBqaXQuanVt
cChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5
IHRodW5rIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
cnVuKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUg
PT0gREZHTW9kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRMSklU
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICht
X2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDcgKzQ4OCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJs
b2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
OwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
LCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDEzIEBAIHZvaWQgVmFyaWFibGVFdmVu
dFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgaWYgKCFpbmRleCkgewogICAgICAgICB2YWx1ZVJl
Y292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tp
XSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIodmFsdWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFG
b3JtYXRKUyk7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUigKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6
OmRpc3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
KHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjEsNiAr
MTY2LDEzIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAg
ICAgICBNaW5pZmllZEdlbmVyYXRpb25JbmZvIGluZm87CiAgICAgICAgICAgICBpbmZvLnVwZGF0
ZShldmVudCk7CiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb3MuYWRkKGV2ZW50LmlkKCksIGlu
Zm8pOworICAgICAgICAgICAgTWluaWZpZWROb2RlKiBub2RlID0gZ3JhcGguYXQoZXZlbnQuaWQo
KSk7CisgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVn
aXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIg
PSBldmVudC5ncHIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IGpzRnVu
Y3Rpb25Bcmd1bWVudEZvckFyZ3VtZW50UmVnaXN0ZXIoZ3ByKTsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudCk7CisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChhcmd1
bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWxsOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24iKQogICAgIHsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoU2NvcmVCb2FyZCYgc2NvcmVCb2FyZCwgTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0LCBjYWxsIHVzZSBvbiBhbGwgb2YgdGhlIGN1
cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVuCisgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVh
bFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKKyAgICAgICAgLy8gb3Jk
ZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwgYW5kIGEKKyAgICAgICAg
Ly8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBiZSByZXVzZWQgZm9yIG5v
ZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
SWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgr
KykKKyAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNj
b3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gc2NvcmVCb2FyZC5hbGxvY2F0
ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
KyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRp
ZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZv
ciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9CisKICAgICBib29sIHJ1bigpCiAgICAgewogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFRocmVh
ZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBG
b3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJlcmVkIHZpcnR1YWwgcmVnaXN0ZXJzLgogICAgICAg
ICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZyZWUoKTsKICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgTm9kZXMgZmlyc3QgYXMgdGhlIHJl
Z2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5CisgICAgICAgICAgICAvLyB0byB0aGUgZnVuY3Rpb24g
YW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQgYmVmb3JlIGFueSB1c2UuCisgICAgICAgICAgICBp
ZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleEluQmxv
Y2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQs
IG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtNzMsMzIgKzExMCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJl
biwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZv
ciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKLSAgICAgICAgICAgICAgICAvLyBvcmRlciBz
byB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQgYQotICAgICAgICAgICAg
ICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZv
ciBub2RlLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1D
aGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVC
b2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAg
ICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVzZUNvdW50IGFydGlmaWNp
YWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAgICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3Vu
dCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG5vZGUpOworICAgICAgICAgICAgICAg
IGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRT
Y29wZToKICAgICBjYXNlIEdldENhbGxlZToKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBjYXNlIFRvTnVt
YmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAgSklU
Q29kZTo6fkpJVENvZGUoKQogICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29k
ZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAgIGRhdGFMb2coY29tbWEsIG1fcmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KIH0K
QEAgLTYwLDMxICs2MSwzMCBAQCB2b2lkIEpJVENvZGU6OmluaXRpYWxpemVCM0J5cHJvZHVjdHMo
c3RkCiAgICAgbV9iM0J5cHJvZHVjdHMgPSBXVEZNb3ZlKGJ5cHJvZHVjdHMpOwogfQogCi12b2lk
IEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyIGFkZHJlc3MpCit2b2lk
IEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoQ29kZVJlZiBlbnRyeXBvaW50VGh1
bmspCiB7Ci0gICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7CisgICAgbV9lbnRyeXBvaW50
VGh1bmsgPSBlbnRyeXBvaW50VGh1bms7CiB9CiAKLXZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFy
aXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkKK3ZvaWQgSklUQ29kZTo6c2V0
RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKIHsKLSAgICBtX2Fy
aXR5Q2hlY2tFbnRyeXBvaW50ID0gZW50cnlwb2ludDsKKyAgICBtX2VudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKHR5cGUsIGVudHJ5KTsKIH0KLQotSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrKQorICAgIAorSklUQ29kZTo6Q29k
ZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUpCiB7
Ci0gICAgc3dpdGNoIChhcml0eUNoZWNrKSB7Ci0gICAgY2FzZSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ6Ci0gICAgICAgIHJldHVybiBtX2FkZHJlc3NGb3JDYWxsOwotICAgIGNhc2UgTXVzdENoZWNr
QXJpdHk6Ci0gICAgICAgIHJldHVybiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50LmNvZGUoKTsKLSAg
ICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29kZVB0
cigpOworICAgIENvZGVQdHIgZW50cnkgPSBtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKGVudHJ5VHlw
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkpOworICAgIHJldHVybiBlbnRyeTsKIH0KIAog
dm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KQog
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2FkZHJlc3NGb3JDYWxsLmV4
ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRk
cmVzc0ZvckNhbGwoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxl
QWRkcmVzcygpKSArIG9mZnNldDsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZW5kaWYKIH0KIAogdm9pZCogSklUQ29kZTo6
ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIEpJVENvZGUoKTsKICAgICB+SklUQ29kZSgpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNz
Rm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9y
Q2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVz
c0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9m
KHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkBAIC01Myw5ICs1Myw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUIzQ29kZShDb2RlUmVmKTsKICAgICB2b2lkIGluaXRp
YWxpemVCM0J5cHJvZHVjdHMoc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVCeXByb2R1Y3RzPik7
Ci0gICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0cik7Ci0gICAgdm9pZCBp
bml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7Ci0gICAgCisgICAgdm9pZCBp
bml0aWFsaXplRW50cnlwb2ludFRodW5rKENvZGVSZWYpOworICAgIHZvaWQgc2V0RW50cnlGb3Io
RW50cnlQb2ludFR5cGUsIENvZGVQdHIpOworCiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMo
Y29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBvdmVycmlkZTsKIAogICAgIFJlZ2lzdGVyU2V0IGxp
dmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9j
ayosIENhbGxTaXRlSW5kZXgpIG92ZXJyaWRlOwpAQCAtNzcsNyArNzcsMTIgQEAgcHJpdmF0ZToK
ICAgICBDb2RlUHRyIG1fYWRkcmVzc0ZvckNhbGw7CiAgICAgQ29kZVJlZiBtX2IzQ29kZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IG1fYjNCeXByb2R1Y3RzOwot
ICAgIENvZGVSZWYgbV9hcml0eUNoZWNrRW50cnlwb2ludDsKKyAgICBDb2RlUmVmIG1fZW50cnlw
b2ludFRodW5rOworICAgIEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2ludHM7CisgICAgQ29kZVB0
ciBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludDsKKyAgICBDb2RlUHRy
IG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3N0YWNr
QXJnc0FyaXR5T0tFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NDaGVja0FyaXR5
RW50cnlwb2ludDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxp
emVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICpiM0NvZGVMaW5rQnVm
ZmVyLAogICAgICAgICAgICAgKCJGVEwgQjMgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgp
KSkpOwogCi0gICAgaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KAorICAg
IGppdENvZGUtPmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoCiAgICAgICAgIEZJTkFMSVpFX0NP
REVfSUYoCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZl
ciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggQjMgZ2Vu
ZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFu
LmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDE0ICsxMjcsMTEwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAgc3dp
dGNoIChncmFwaC5tX3BsYW4ubW9kZSkgewogICAgIGNhc2UgRlRMTW9kZTogewotICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7Ci0gICAgCi0gICAgICAgIGppdC5s
b2FkMzIoCi0gICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmlsbFJlZ2lzdGVyc0FuZENvbnRp
bnVlTWFpblBhdGg7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgdG9NYWluUGF0aDsK
KworICAgICAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4UmVnaXN0
ZXJBcmd1bWVudENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycywgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVn
ID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKworICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDFdOworCisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVu
Y3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7IGFyZ0luZGV4
ID49IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4LS0pIHsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4ICsgMV0gPSBqaXQubGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJl
Z0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29udGludWVUb0Fy
aXR5Rml4dXA7CisgICAgICAgIAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJn
c0NoZWNrQXJpdHlFbnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisgICAgICAgIGppdC5sb2FkMzIoZnJhbWUud2l0
aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgY29udGludWVUb0FyaXR5Rml4dXAuYXBwZW5kKGpp
dC5icmFuY2gzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJl
Z1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGNvbnRpbnVlVG9TdGFja0FyaXR5T2sgPSBqaXQuanVtcCgpOworI2VuZGlmCisgICAgICAg
IAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGpp
dC5sYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlN0YWNrQXJn
c0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVUb1N0
YWNrQXJpdHlPay5saW5rKCZqaXQpOworI2VuZGlmCisKKyAgICAgICAgLy8gTG9hZCBhcmd1bWVu
dCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAgICAgLy8gUmVnQ0MgVG9kbzog
V291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UsIGJ1dCB3ZSBjdXJyZW50bHkgY2FuJ3QganVt
cCBpbnRvIHRoZSBCMworICAgICAgICAvLyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBw
b2ludCBhZnRlciB3aGVyZSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgdG8gdGhlIHN0YWNrLgor
I2lmIDEKKyAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwor
ICAgICAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKSk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgr
KykKKyAgICAgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJv
bG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0lu
ZGV4KSk7CisgICAgICAgIAorICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmdzQ2hlY2tB
cml0eUVudHJ5ID0gaml0LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwg
Vk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGNo
ZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50czsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVy
cyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bnVtUGFyYW1ldGVycykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4
dXAuYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJl
bG93LCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKyAgICAgICAgICAgIC8vICBGYWxsIHRocm91Z2ggdG8gdGhlICJleHRyYSByZWdpc3Rl
ciBhcml0eSIgY2FzZS4KKworICAgICAgICAgICAgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1l
bnRzID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0
ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleCA8IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAg
ICAgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
cmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJh
bWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJ
bmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0V4dHJhKTsKKyAgICAgICAgICAg
IHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAg
ICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAuYXBwZW5kKGppdC5qdW1wKCkpOworI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgICAgICAvLyAg
VGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDE7IGFyZ0luZGV4IDwgbnVtUGFyYW1ldGVycyAmJiBhcmdJbmRleCA8PSBtYXhSZWdpc3Rl
ckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeXBvaW50c1thcmdJbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZp
eHVwOworICAgICAgICB9CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NBcml0eSk7CisjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAg
ICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShtYXhSZWdp
c3RlckFyZ3VtZW50Q291bnQpOworCisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmxpbmso
JmppdCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6QXJpdHlGaXh1cFJl
cXVpcmVkKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LnRvcENhbGxGcmFtZSk7CkBAIC0xNTUsMTEgKzI1MSwyMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogCiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6
Olplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5k
Q29udGludWVNYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUZpeHVwID0gaml0
LmNhbGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1h
aW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNB
bmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVn
aXN0ZXJzQW5kQ29udGludWVNYWluUGF0aC5saW5rVG8oc3RhY2tBcmdzQXJpdHlPS0VudHJ5LCAm
aml0KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCByZWdpc3RlckVudHJ5Tm9Bcml0eSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisgICAgICAgIHRvTWFpblBhdGgu
YXBwZW5kKGppdC5qdW1wKCkpOworI2VuZGlmCiAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkg
ewpAQCAtMTY5LDkgKzI3NCwzNSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBs
aW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
ayk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwog
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0u
Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRp
b25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwor
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKHRvTWFpblBhdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisKKyAgICAgICAg
c3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KSk7CisgICAgICAgIHN0
YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwg
bGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKIAotICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7Cisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFp
bkVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVudHJ5Tm9Bcml0eSk7Cisj
ZWxzZQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24p
KTsKKyNlbmRpZgorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIG1haW5FbnRyeSk7CisKKyAgICAgICAgaWYgKGNoZWNr
Rm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cy5pc1NldCgpKQorICAgICAgICAgICAgc3RhdGUuaml0
Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJn
c1Bvc3NpYmxlRXh0cmFBcmdzLCBtYWluRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJp
dHksIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KSk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAgICAgICAgICAgIGlmIChhcmdD
b3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbWFpbkVudHJ5
OworICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdD
b3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkpOworICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+
c2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRD
b3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtMTgxLDcgKzMxMiwyMSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgICAgICAvLyBwb2ludCB3ZSd2ZSBldmVuIGRvbmUgdGhlIHN0YWNrIGNoZWNrLiBCYXNpY2Fs
bHkgd2UganVzdCBoYXZlIHRvIG1ha2UgdGhlCiAgICAgICAgIC8vIGNhbGwgdG8gdGhlIEIzLWdl
bmVyYXRlZCBjb2RlLgogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0ID0gaml0Lmxh
YmVsKCk7CisKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyAgICAgICAg
Ly8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAg
ICAvLyBSZWdDQyBUb2RvOiBXb3VsZCBsaWtlIHRvIGVsaW1pbmF0ZSB0aGVzZSwgYnV0IHdlIGN1
cnJlbnRseSBjYW4ndCBqdW1wIGludG8gdGhlIEIzCisgICAgICAgIC8vIGNvbXBpbGVkIGNvZGUg
YXQgYW4gYXJiaXRyYXJ5IHBvaW50IGFmdGVyIHdoZXJlIHRoZSByZWdpc3RlcnMgYXJlIHN0b3Jl
ZCB0byB0aGUgc3RhY2suCisjaWYgMQorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgICAgICBq
aXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
ICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtMTkxLDcgKzMzNiw3IEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIH0KICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhtYWluUGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5p
dGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsx
OTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlw
ZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFz
ay0+a2V5KCkpOwogICAgICAgICAKKyAgICAgICAgLy8gU3RvcmUgb3V0IGNhbGxlZSBhbmQgYXJn
dW1lbnQgY291bnQgZm9yIHBvc3NpYmxlIE9TUiBleGl0LgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQ
SUxMU19DQUxMRUUpCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXJJbnQzMihhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKwogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCkBAIC0yNDcsMjAgKzI1
NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIENoZWNrIEFyZ3VtZW50cy4KICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkuY2xlYXIoKTsKICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2Nh
bHMgPSBPcGVyYW5kczxBdmFpbGFiaWxpdHk+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCks
IDApOworCisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnROb2RlczsKKyAgICAgICAg
VmVjdG9yPExWYWx1ZSwgOD4gYXJndW1lbnRWYWx1ZXM7CisKKyAgICAgICAgYXJndW1lbnROb2Rl
cy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIGFyZ3VtZW50
VmFsdWVzLnJlc2l6ZShjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKKworICAgICAgICBt
X2hpZ2hCbG9jayA9IG1fZ3JhcGguYmxvY2soMCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQotICAgICAgICAgICAgICAgIEF2
YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRy
dWUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50
c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hl
Y2tpbmdbaV07CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUg
anNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAg
IAorICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBudWxscHRyOworCiAgICAgICAgICAgICBp
ZiAobm9kZSkgewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3Bl
cmFuZCA9PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGluZUxvY2FsKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1l
bnQoaSkgPSBBdmFpbGFiaWxpdHkobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUg
PSBtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2Rl
LT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkpOworCisgICAgICAgICAgICAgICAgICAgIHNldEpT
VmFsdWUobm9kZSwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1
ZSwgb3BlcmFuZCkpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlID0gbV9vdXQubG9hZDY0
KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG5vZGUsIG5vZGUtPmhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpIHx8IG9wZXJhbmQgPT0gbm9k
ZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhhY2ssIGJ1dCBpdCdzIGFuIGVmZmVjdGl2ZSBv
bmUuIEl0IGFsbG93cyB1cyB0byBkbyBDU0Ugb24gdGhlCiAgICAgICAgICAgICAgICAgLy8gcHJp
bW9yZGlhbCBsb2FkIG9mIGFyZ3VtZW50cy4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIEdldExvY2Fs
IHRoYXQgZ290IHB1dCBpbgpAQCAtMjY4LDcgKzI5MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgLy8gc2hvdWxkIGhvbGQgdHJ1ZS4KICAgICAgICAgICAgICAgICBtX2xvYWRlZEFyZ3Vt
ZW50VmFsdWVzLmFkZChub2RlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXJndW1lbnROb2Rlc1tpXSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudFZhbHVlc1tp
XSA9IGpzVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBtX25vZGUgPSBudWxscHRyOworICAg
ICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwg
dHJ1ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudE5vZGVzW2ld
OwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gYXJndW1lbnRWYWx1ZXNb
aV07CisKICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSkg
ewogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbm9kZSwgaXNOb3RJbnQzMihqc1Zh
bHVlKSk7CkBAIC04MTAsNiArODQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVy
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRTY29wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDYgKzU0
MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyKHBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjb21waWxlR2V0QXJndW1lbnRSZWdpc3RlcigpCisgICAgeworICAgICAgICAvLyBXZSBtaWdo
dCBoYXZlIGFscmVhZHkgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIG5vZGUuCisgICAgICAgIGlmIChM
VmFsdWUgdmFsdWUgPSBtX2xvYWRlZEFyZ3VtZW50VmFsdWVzLmdldChtX25vZGUpKSB7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKG1fbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKICAgICB7CiAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
RnVuY3Rpb25fc2NvcGUpKTsKQEAgLTU4MDYsOSArNTg1NSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICAvLyB0aGUgY2FsbC4KICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50
czsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBHUFIw
IGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUKLSAg
ICAgICAgLy8gY2FsbGVlIHRvIGJlLgotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKSk7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBw
YXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxl
ZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykp
KTsKIAogICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1
YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNl
dEZyb21TUCA9CkBAIC01ODE2LDEwICs1ODY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgfTsKIAorICAgICAgICBBcmd1bWVudHNM
b2NhdGlvbiBhcmdMb2NhdGlvbiA9IGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpOworICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVw
OjpyZWcoY2FsbGVlUmVnKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAg
ICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExT
X0FSR0NPVU5UKQogICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3Mp
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRP
ZmZzZXQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQot
ICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNW
YWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoYXJndW1l
bnRzKTsKQEAgLTU4NDgsOSArNTkxMCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRM
Q2FsbGVyKTsKKwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRh
cmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRo
ID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVj
aywKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsK
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwpAQCAtNTg1OCwxMyArNTkyMiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgubGluaygmaml0KTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIGRv
bmUubGluaygmaml0KTsKIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXJnTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1wYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpKSwKQEAgLTU4NzMsNyArNTkzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNM
b2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93
Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01
OTE3LDIwICs1OTgxLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q29u
c3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogICAgICAgICAKLSAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUg
c2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVn
IGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKICAgICAgICAgaWYgKCFpc1RhaWwpIHsKICAgICAgICAgICAgIGF1dG8gYWRkQXJn
dW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNl
dCkgewogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9CiAgICAgICAgICAg
ICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3Rl
cnMpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAKKwor
ICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxM
RUUpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOworI2VuZGlmCisgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwg
VmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lm
IEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQogICAgICAgICAgICAgYWRkQXJndW1lbnQo
bV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAg
YWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCi0gICAg
ICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5k
aWYKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBp
KSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0
ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwpAQCAtNTk3Miw2ICs2MDU0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdp
c3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAg
ICAgICAgICAgICAgdG9TYXZlLnNldChjYWxsZWVHUFIpOwogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC01OTkwLDcg
KzYwNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBt
YWluUGF0aCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAg
ICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAg
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDExLDcgKzYwOTgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwg
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6
RGlyZWN0VGFpbENhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBhcmd1
bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVj
dXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3Mp
OwpAQCAtNjAzNCw2ICs2MTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOwor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDQ1LDcgKzYxMzUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29u
c3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4
ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBp
ZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAt
NjA1NiwxMyArNjE0NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQucG9wKENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQ
UihjYWxsZWVHUFIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25MaW5rRGlyZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlk
R1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBp
biBub25BcmdHUFIwCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRM
aW5rVGFzaygKQEAgLTYwNzEsNiArNjE1OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIHNsb3dQYXRoTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
RGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCkBAIC02MTAyLDcg
KzYxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBh
cmd1bWVudHM7CiAKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpz
Q2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICBHUFJSZWcg
Y2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVl
UmVnKSkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kp
IHsKICAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGxldCB0aGUgc2h1ZmZsZXIgZG8gYm94
aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1cGVyIGNsZWFyIHRoYXQgdGhpcwpAQCAtNjEzNiw5
ICs2MjI4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc2h1ZmZsZURhdGE7CisgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRz
SW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2Fs
cyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwotICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86
OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZVJlZywgRGF0YUZvcm1hdEpTKTsKIAogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MuYXBwZW5kKHBhcmFtc1sxICsgaV0ucmVj
b3ZlcnlGb3JKU1ZhbHVlKCkpOwpAQCAtNjE0OSw3ICs2MjQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0
cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
R1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CkBAIC02
MTY3LDIwICs2MjYzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxl
cihqaXQsIHNodWZmbGVEYXRhKTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNl
dENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2Fs
bCgpOwogCiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5G
cm9tVGFpbENhbGwpOwogCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENh
bGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpLCBjb2RlT3JpZ2luLCBjYWxsZWVSZWcp
OwogCiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dENhbGxMb2NhdGlvbnMoCkBAIC02MjcwLDYgKzYzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAg
ICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJn
czsKIAogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTY0MTks
NyArNjUxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCF1c2VkUmVnaXN0ZXJzLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KQpAQCAtNjQyNyw3ICs2NTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5h
bFN0YWNrSGVpZ2h0KSwKQEAgLTY0MzYsNyArNjUzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMo
CkBAIC02NTM3LDExICs2NjMzLDE1IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNh
bGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJn
c0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKIAogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAgLTY3MDIsNyArNjgwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY3MTAsNyArNjgxMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBh
cmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWln
aHQpLApAQCAtNjcxOSw3ICs2ODE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY3ODgs
MTMgKzY4ODgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxFdmFsKTsKKwogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBh
dCBlbnRyeTogIiwgdmFsdWVzLCAiXG4iKTsKICAgICAKLSAgICBmb3IgKGludCBhcmd1bWVudCA9
IHZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTsp
IHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAg
IGlmIChhcmd1bWVudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBKU1ZhbHVlIHZhbHVlT25TdGFj
ayA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgp
KS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHJlY29uc3RydWN0ZWRWYWx1
ZSA9IHZhbHVlcy5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgIGlmICh2YWx1ZU9uU3RhY2sg
PT0gcmVjb25zdHJ1Y3RlZFZhbHVlIHx8ICFhcmd1bWVudCkKQEAgLTk5LDggKzEwMywxMiBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIGV4ZWMtPnNldENvZGVCbG9j
ayhlbnRyeUNvZGVCbG9jayk7Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5h
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdm9p
ZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQorICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwgZ29p
bmcgdG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9j
aykKICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFy
Z3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7Cit9
CisKIExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5v
ZGUqIG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7
IHJldHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVn
KTsKICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1ZSog
bG9ja2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9IGFk
dmFuY2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxG
cmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAgICAgICBib29sIGlzVGFpbERlbGV0ZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChj
b2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkg
JiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMo
SlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOwotICAgICAg
ICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3Bl
LT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmICghc2NvcGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNWYWx1
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRv
ci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAg
ICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFt
ZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBzY29wZSwgY29kZUJsb2NrLCBjYWxsRnJhbWUt
PmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoaW5kZXhJbkxvZyA8IGxvZ0N1
cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMg
ZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMyArNjE2LDEzIEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRE
dW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsKICAg
ICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRo
dW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNs
b3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgbGlua0J1ZmZlci52bSgp
LCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29k
ZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNvZGUoKSkpOworICAgICAgICAgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9y
KCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIGxpbmtCdWZmZXIu
dm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGws
IENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7CiAg
ICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0MTQsOTcgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7IFNw
aWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBT
cGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBkb25l
U3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyAgICAgICAgR1BS
UmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyNp
ZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KTsKKyNlbmRpZgorCisgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAg
ICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3BpbGwg
PSBzdGQ6Om1heChtaW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKworICAgICAgICBmb3IgKDsgYXJn
SW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKworICAgICAgICBpZiAoc3BpbGxU
eXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3Nl
ZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAg
ICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5k
ZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQ
cm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFy
Z0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvbmVTdG9yaW5n
QXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1Bcmdz
VG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAg
fQorCisgICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSh1bnNpZ25lZCBtaW5p
bXVtQXJnc1RvU3BpbGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFs
bCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgICAgICBKdW1wTGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9T
UElMTFNfQ0FMTEVFKQorICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisgICAg
ICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50
KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisgICAgICAgIAorICAgICAgICBm
b3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAg
ICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3Bp
bGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBh
c3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJn
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvbmVTdG9yaW5nQXJn
cy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9T
cGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAgfQor
ICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9n
dWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKworICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdEdldFBheWxv
YWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgaWYgKGFyZ0luZGV4KSAvLyBBbHdh
eXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBkb25lTG9hZGluZ0FyZ3MuYXBwZW5kKGJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlzKTsKKyNlbmRpZgorICAgIH0KKwogI2lm
IENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiArNzE1LDMxIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVu
dHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50
VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJndW1lbnQp
CisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoR1BS
UmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50
KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkUHRy
KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSksIHRv
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVm
b3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQUlJlZyB0bykKKyAgICB7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkMzIoQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHRvKTsK
KyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJl
Zm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewpAQCAtMTY0Nyw3ICsx
NzYzLDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2
NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAg
ICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICB2b2lkIGluY3JlbWVudENvdW50ZXIo
Vk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mQ291bnRlcihjb3Vu
dGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xNjU2LDYgKzE3NzksMTIgQEAgcHJvdGVj
dGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoaml0KS0+aW5jcmVt
ZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIo
aml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBDYWNoZWRSZWNvdmVyeTo6YWRk
VGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MpCit7CisgICAgQVNTRVJU
KG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOworICAgIHNpemVfdCBleGlzdGluZyA9IG1f
Z3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsKKyAgICBpZiAoZXhpc3RpbmcgPT0gV1RGOjpu
b3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX2dwclRhcmdldHMu
c2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0KCkgJiYgbV9yZWNvdmVyeS5pc0luR1BSKCkp
IHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSByZWNvdmVyaW5nIHRvIHRoZSBzYW1lIEdQUiwg
bWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0LgorICAgICAgICAgICAgR1BSUmVnIHNvdXJj
ZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAgICAgICAgICBpZiAoanNWYWx1ZVJlZ3MuZ3By
KCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50
IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVncyA9IEpTVmFsdWVS
ZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgbV9ncHJUYXJnZXRz
WzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5hcHBlbmQoanNWYWx1ZVJlZ3MpOworICAgIH0K
K30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91YmxlcyBhbmQgdW5kZXRlcm1pbmVkIEpTVmFs
dWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3b3VsZCBvdGhlcndpc2UgdXNlIHVwIEdQUnMu
ICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBDYWNoZWRSZWNvdmVyeTo6bG9hZHNJbnRvRlBS
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3Zlcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5
LmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVk
UmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
Q2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNoZWRSZWNvdmVyeSYmKSA9IGRlbGV0ZTsKIAog
ICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDE+JiB0YXJnZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiYgZ3By
VGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByVGFyZ2V0czsgfQogCiAgICAgdm9pZCBhZGRU
YXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7CkBAIC02OCwxNSArNjksMTEgQEAgcHVi
bGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFdh
bnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOwotICAgICAgICBtX3dhbnRlZEpT
VmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAgfQorICAgIHZvaWQgYWRkVGFyZ2V0SlNWYWx1
ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9pZCBzZXRXYW50ZWRGUFIoRlBSUmVnIGZwcikK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50ZWRKU1ZhbHVlUmVncyk7CisgICAgICAgIEFT
U0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV93YW50ZWRGUFIgPSBmcHI7
CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJl
Y292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpIHsgbV9yZWNvdmVyeSA9IHJlY292ZXJ5OyB9
CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9ncHJUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOworCisgICAgICAgIHJldHVybiBtX2dwclRhcmdl
dHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdhbnRlZEZQUigpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3ZlcnkgbV9yZWNvdmVyeTsKLSAg
ICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVSZWdzOwogICAgIEZQUlJlZyBtX3dhbnRlZEZQ
UiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiBtX3Rh
cmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiBtX2dwclRhcmdldHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWU7CiAgICAgVmVj
dG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBib29sIGFy
Z3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsKICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292
ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVn
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMy
Myw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShDYWMKICAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVn
LmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUo
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmZwcigpKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQgPSBjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwpOwogICAgICAg
ICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVyeSwKICAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRhRm9ybWF0SlMpKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5j
cHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIENhbGxGcmFt
ZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICAgICAgKyByb3VuZEFyZ3VtZW50
Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpKQogICAg
ICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
CiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGRhdGEuYXJncy5zaXpl
KCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKGRh
dGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5kaWYKICAgICAsIG1fZnJhbWVEZWx0YShtX2Fs
aWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCiB7CkBAIC01NCwxMSArNTcs
MjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKENDYQogICAgIG1fbG9j
a2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJbkpTU3RhY2soKSB8fCBkYXRhLmNhbGxl
ZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOwotCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycykKKyAgICAgICAgYWRkTmV3
KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSksIGRhdGEuY2FsbGVlKTsK
KyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgYWRkTmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7CisgICAgCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFkYXRhLmFy
Z3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3NbaV0udmlydHVhbFJlZ2lzdGVyKCkuaXNM
b2NhbCgpKTsKLSAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBk
YXRhLmFyZ3NbaV0pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChkYXRhLmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzICYmIGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgYWRkTmV3KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGkpKSwgZGF0YS5hcmdzW2ldKTsKKyAgICAgICAgZWxzZQorI2Vu
ZGlmCisgICAgICAgICAgICBhZGROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGRh
dGEuYXJnc1tpXSk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE4NSw4ICsxOTgs
MTMgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcChQcmludFN0cmVhbQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAjZWxzZQotICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpCisg
ICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIg
ICAgICAgICAiLCByZWcsICIgPC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOwor
ICAgICAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpID4g
MSkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbmV3Q2FjaGVkUmVj
b3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCksICIg
PC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KQEAgLTQ5Niw3
ICs1MTQsNyBAQCBib29sIENhbGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAg
QVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNJblJlZ2lzdGVycygpCiAgICAgICAg
IHx8IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNDb25zdGFudCgpKTsKIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmICh2ZXJib3NlICYmIGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXpl
KCkpCiAgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyAiLCBjYWNoZWRSZWNvdmVyeS5yZWNv
dmVyeSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlZFJlY292ZXJ5LnRhcmdl
dHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgY2Fj
aGVkUmVjb3ZlcnkudGFyZ2V0cygpW2ldIH07CkBAIC01MDUsOSArNTIzLDkgQEAgYm9vbCBDYWxs
RnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hlZAogICAgICAgICAgICAgZGF0YUxvZyghaSA/
ICIgaW50byAiIDogIiwgYW5kICIsICJORVcgIiwgdGFyZ2V0KTsKICAgICAgICAgZW1pdFN0b3Jl
KGNhY2hlZFJlY292ZXJ5LCBhZGRyZXNzRm9yTmV3KHRhcmdldCkpOwogICAgICAgICBzZXROZXco
dGFyZ2V0LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiXG4i
KTsKICAgICBjYWNoZWRSZWNvdmVyeS5jbGVhclRhcmdldHMoKTsKICAgICBpZiAoIWNhY2hlZFJl
Y292ZXJ5LndhbnRlZEpTVmFsdWVSZWdzKCkgJiYgY2FjaGVkUmVjb3Zlcnkud2FudGVkRlBSKCkg
PT0gSW52YWxpZEZQUlJlZykKICAgICAgICAgY2xlYXJDYWNoZWRSZWNvdmVyeShjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpKTsKQEAgLTYwNiw3ICs2MjQsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KCkKIHsKICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCi0gICAg
dXBkYXRlRGFuZ2VyRnJvbnRpZXIoKTsKKyAgICBpbml0RGFuZ2VyRnJvbnRpZXIoKTsKIAogICAg
IC8vIEZpcnN0LCB3ZSB0cnkgdG8gc3RvcmUgYW55IHZhbHVlIHRoYXQgZ29lcyBhYm92ZSB0aGUg
ZGFuZ2VyCiAgICAgLy8gZnJvbnRpZXIuIFRoaXMgd2lsbCBuZXZlciB1c2UgbW9yZSByZWdpc3Rl
cnMgc2luY2Ugd2UgYXJlIG9ubHkKQEAgLTc0MiwxMiArNzYwLDE5IEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgNCkgZmly
c3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8vIG1fbmV3RnJhbWVCYXNlLCB3
aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KKyAgICAvLyBOb3RlIHRoYXQgd2UgZGVs
YXkgc2V0dGluZyB0aGUgYXJndW1lbnQgY291bnQgcmVnaXN0ZXIgYXMgaXQgbmVlZHMgdG8gYmUg
cmVsZWFzZWQgaW4gc3RlcCAzLgogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIg
ICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9LCAiXG4iKTsKLSAgICBtX2ppdC5zdG9yZTMy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXco
VmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zm
c2V0KFRhZ09mZnNldCkpOwotICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0
ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFtX2FyZ3VtZW50c0luUmVnaXN0
ZXJzKSB7CisjZW5kaWYKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApLAorICAgICAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIg
eyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7
CisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdD
b3VudCgpKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFpc1Nsb3dQYXRo
KCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNlICE9IE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC03NjcsNiArNzkyLDIzIEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgICAgIGVtaXREaXNwbGFjZSgqY2FjaGVkUmVj
b3ZlcnkpOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8gRm9yIHJlY292ZXJp
ZXMgd2l0aCBtdWx0aXBsZSByZWdpc3RlciB0YXJnZXRzLCBjb3B5IHRoZSBjb250ZW50cyBvZiB0
aGUgZmlyc3QgdGFyZ2V0IHRvIHRoZQorICAgIC8vIHJlbWFpbmluZyB0YXJnZXRzLgorICAgIGZv
ciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcu
bmV4dCgpKSB7CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3
UmVnaXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeSB8fCBjYWNoZWRS
ZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA8IDIpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBHUFJSZWcgc291cmNlR1BSID0gY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMo
KVswXS5ncHIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBjYWNoZWRSZWNvdmVy
eS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV9qaXQubW92ZShzb3Vy
Y2VHUFIsIGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCkpOworICAgIH0KKwor
ICAgIGlmIChtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKQorICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCkpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYsMzcgQEAgcHVibGljOgogICAgIC8vIGNv
bnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZQogICAgIC8vIGFyZ3VtZW50cy9jYWxs
ZWUvY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGFyZSBieSB0YWtpbmcgaW50bwogICAgIC8vIGFjY291
bnQgYW55IHNwaWxsaW5nIHRoYXQgYWNxdWlyZUdQUigpIGNvdWxkIGhhdmUgZG9uZS4KLSAgICBD
YWxsRnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdCgpIGNvbnN0CisgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc25hcHNob3QoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVbmRlY2lkZWQoKSk7CiAKICAgICAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgZGF0YTsKICAgICAgICAgZGF0YS5udW1Mb2NhbHMgPSBudW1Mb2NhbHMo
KTsKLSAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFj
a0FyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJn
cykKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1YWxSZWdpc3RlciB7IENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIH07CisgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgp
OworICAgICAgICB9CiAgICAgICAgIGRhdGEuYXJncy5yZXNpemUoYXJnQ291bnQoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQoKTsgKytpKQotICAgICAgICAgICAg
ZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKS0+cmVj
b3ZlcnkoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MgfHwgaSA+
PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAg
ICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkt
PnJlY292ZXJ5KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWcgcmVn
IHsgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkgfTsKKyAgICAgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gY2FjaGVkUmVjb3ZlcnktPnJlY292
ZXJ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZm9yIChSZWcgcmVnID0g
UmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAg
ICAgICAgICAgIGlmIChyZWcuaXNHUFIoKSAmJiBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0Fy
Z3MKKyAgICAgICAgICAgICAgICAmJiBHUFJJbmZvOjp0b0FyZ3VtZW50SW5kZXgocmVnLmdwcigp
KSA8IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmdDb3VudCgp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgQ2FjaGVkUmVjb3Zl
cnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OwogICAgICAgICAgICAg
aWYgKCFjYWNoZWRSZWNvdmVyeSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM3Niw2
ICszOTYsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fYWxpZ25lZE9sZEZyYW1lU2l6ZTsKICAg
ICBpbnQgbV9hbGlnbmVkTmV3RnJhbWVTaXplOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9v
bCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzOworI2VuZGlmCiAKICAgICAvLyBUaGlzIGlzIHRoZSBk
aXN0YW5jZSwgaW4gc2xvdHMsIGJldHdlZW4gdGhlIGJhc2Ugb2YgdGhlIG5ldwogICAgIC8vIGZy
YW1lIGFuZCB0aGUgYmFzZSBvZiB0aGUgb2xkIGZyYW1lLiBJdCBjb3VsZCBiZSBuZWdhdGl2ZSB3
aGVuCkBAIC02NDEsOSArNjY0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChqc1ZhbHVl
UmVncyAmJiAhZ2V0TmV3KGpzVmFsdWVSZWdzKSk7CiAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBj
YWNoZWRSZWNvdmVyeSA9IGFkZENhY2hlZFJlY292ZXJ5KHJlY292ZXJ5KTsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICBpZiAoY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkp
Ci0gICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1
ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOwotICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5
LT53YW50ZWRKU1ZhbHVlUmVncygpKSB7CisgICAgICAgICAgICBpZiAocmVjb3ZlcnkuaXNJbkdQ
UigpICYmIGpzVmFsdWVSZWdzLmdwcigpID09IHJlY292ZXJ5LmdwcigpKSB7CisgICAgICAgICAg
ICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCku
Z3ByKCldID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNo
ZWRSZWNvdmVyeTsKICNlbHNlCiAgICAgICAgIGlmIChKU1ZhbHVlUmVncyBvbGRSZWdzIHsgY2Fj
aGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkgfSkgewogICAgICAgICAgICAgaWYgKG9s
ZFJlZ3MucGF5bG9hZEdQUigpKQpAQCAtNjU2LDggKzY4Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChqc1ZhbHVlUmVncy50YWdHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAg
bV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MudGFnR1BSKCldID0gY2FjaGVkUmVjb3Zlcnk7CiAj
ZW5kaWYKLSAgICAgICAgQVNTRVJUKCFjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3Mo
KSk7Ci0gICAgICAgIGNhY2hlZFJlY292ZXJ5LT5zZXRXYW50ZWRKU1ZhbHVlUmVncyhqc1ZhbHVl
UmVncyk7CisgICAgICAgIGNhY2hlZFJlY292ZXJ5LT5hZGRUYXJnZXRKU1ZhbHVlUmVncyhqc1Zh
bHVlUmVncyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXcoRlBSUmVnIGZwciwgVmFsdWVSZWNv
dmVyeSByZWNvdmVyeSkKQEAgLTc1NSwxMyArNzgxLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiByZWcgPD0gZGFuZ2VyRnJvbnRpZXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGluaXREYW5n
ZXJGcm9udGllcigpCisgICAgeworICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKGxhc3RO
ZXcoKSk7CisgICAgfQorCiAgICAgdm9pZCB1cGRhdGVEYW5nZXJGcm9udGllcigpCiAgICAgewor
ICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKG1fZGFuZ2VyRnJvbnRpZXIgLSAxKTsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmREYW5nZXJGcm9udGllckZyb20oVmlydHVhbFJlZ2lzdGVyIG5l
eHRSZWcpCisgICAgewogICAgICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCiAgICAgICAg
IG1fZGFuZ2VyRnJvbnRpZXIgPSBmaXJzdE5ldygpIC0gMTsKLSAgICAgICAgZm9yIChWaXJ0dWFs
UmVnaXN0ZXIgcmVnID0gbGFzdE5ldygpOyByZWcgPj0gZmlyc3ROZXcoKTsgcmVnIC09IDEpIHsK
LSAgICAgICAgICAgIGlmICghZ2V0TmV3KHJlZykgfHwgIWlzVmFsaWRPbGQobmV3QXNPbGQocmVn
KSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKKyAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gbmV4dFJlZzsgcmVnID49IGZpcnN0TmV3KCk7IHJlZyAtPSAxKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRPbGQobmV3QXNPbGQocmVnKSkgfHwgIWdldE9sZChuZXdBc09sZChy
ZWcpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgbV9kYW5nZXJG
cm9udGllciA9IHJlZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9CiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByICE9IEludmFsaWRHUFJSZWc7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gbV9ncHIg
PT0gb3RoZXIubV9ncHI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIp
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KEpTVmFs
dWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICAKICAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9n
cHI7IH0KICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsg
fQpAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAKICNpZiBDUFUoWDg2KQogI2RlZmluZSBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDUKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6
OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJl
dHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwpAQCAtMzc5LDYgKzM4MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRv
QXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgp
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVy
WzhdID0geyAyLCAwLCAxLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdp
c3RlcltyZWddOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BS
UmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC00MDMsNiArNDEzLDExIEBAIHB1YmxpYzoKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA3dQog
I2VuZGlmCisjaWYgVVNFKFJFR0lTVEVSX0FSR1VNRU5UUykKKyNkZWZpbmUgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyAtIDJ1KQorI2Vsc2UKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyAwdQorI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNDY0LDYg
KzQ3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3Rl
cnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC01MDgsNiArNTI0LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52YWxp
ZEluZGV4LCAzLCAyLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAx
LCAwLCA0LCA1LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZWxzZQorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCB9OworI2VuZGlmCisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
cmVnXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTUzOCw2ICs1NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNKQogI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC02MDEsNiArNjMwLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9B
cmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYp
OworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFIzKQorICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorICAgIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC02MjEsNiArNjU5LDcgQEAgcHVi
bGljOgogCiAjaWYgQ1BVKEFSTTY0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDh1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKIC8vIENhbGxlZSBTYXZlcyBpbmNs
dWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CiAKQEAgLTY5OCw2ICs3MzcsNyBAQCBwdWJsaWM6
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMyA9PSAxMywgcTEzX2lzXzEz
KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTE0ID09IDE0LCBxMTRfaXNf
MTQpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTUgPT0gMTUsIHExNV9p
c18xNSk7CisKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKQEAgLTcxNSw2ICs3NTUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdG9SZWdpc3RlcihpbmRleCk7CiAgICAgfQogCisgICAg
c3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3Vt
ZW50R1BSNykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpcmVnOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CkBAIC03NDYsNiArNzk0LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTc3Myw2ICs4MjIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0
ZXJzOjphMjsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdp
c3RlcnM6OmEzOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CkBAIC04MjUsNiArODc1LDcgQEAgcHVibGlj
OgogCiAjaWYgQ1BVKFNINCkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0
dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAj
ZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUklu
Zm8gewpAQCAtODU1LDYgKzkwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IGFyZ3VtZW50R1BSMiA9IFNINFJlZ2lzdGVyczo6cjY7IC8vIHJlZ1QyCiAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBTSDRSZWdpc3RlcnM6OnI3OyAvLyByZWdUMwogICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDI7CkBAIC04OTEsNiArOTQzLDYxIEBAIHB1YmxpYzoKIAogI2VuZGlmIC8v
IENQVShTSDQpCiAKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvcih1bnNpZ25lZCBh
cmd1bWVudEluZGV4KQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBp
ZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICByZXR1cm4gR1BSSW5mbzo6dG9Bcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50SW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRJ
bmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW52
YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1
cm4gYXJndW1lbnRSZWdpc3RlckZvcigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEdQUkluZm86OnJl
Z1QwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lzdGVyRm9yKDEpOworfQorCitp
bmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50
KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJldHVybiBhcmd1bWVudCArIDI7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lzdGVyKEdQUlJl
ZyBncHIpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+
IDAKKyAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gR1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4
KGdwcik7CisgICAgQVNTRVJUKGFyZ3VtZW50SW5kZXggIT0gR1BSSW5mbzo6SW52YWxpZEluZGV4
ICYmIGFyZ3VtZW50SW5kZXggPj0gMik7CisgICAgcmV0dXJuIGFyZ3VtZW50SW5kZXggLSAyOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcihhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnRJbmRleCkpOworfQorCitpbmxpbmUgdW5zaWduZWQg
bnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQorewor
ICAgIHJldHVybiBzdGQ6Om1pbihhcmd1bWVudENvdW50LCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTKTsKK30KKwogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1
bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQg
cmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVn
aXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4
dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDE0ICs2Niw2IEBAIHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkEKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1KSVQ6OkNvZGVSZWYgSklUOjpj
b21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAg
aWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7Ci0gICAgSklUIGppdCh2bSwg
MCk7Ci0gICAgcmV0dXJuIGppdC5wcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwodm0sIGZ1bmMp
OwotfQotCiBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIDogSlNJ
bnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0ZXIodm0tPmludGVy
cHJldGVyKQpAQCAtNTc5LDYgKzU3MSwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5r
aW5nKEpJVENvbXBpCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkK
ICAgICAgICAgbm9wKCk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwaWxsQXJndW1lbnRS
ZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpSZWdBcmdzTm9Bcml0eSk7CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIEp1bXAgY29u
dGludWVTdGFja0VudHJ5ID0ganVtcCgpOworI2VuZGlmCisjZW5kaWYKKyAgICBtX3N0YWNrQXJn
c0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
U3RhY2tBcmdzTm9Bcml0eSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiBFTkFCTEUoVk1fQ09V
TlRFUlMpCisgICAgY29udGludWVTdGFja0VudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKwogICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1f
Y29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCkBAIC02MzUsNyArNjQxLDIx
IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKIAogICAgIGlmIChtX2NvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwo
KTsKKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisKKyAg
ICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAg
ICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIEp1bXAgY29udGludWVTdGFja0FyaXR5RW50cnkg
PSBqdW1wKCk7CisjZW5kaWYKKworICAgICAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0g
bGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJp
dHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVTdGFja0FyaXR5
RW50cnkubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDAp
LCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKTsKICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29k
ZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwpAQCAtNjQzLDYgKzY2Myw4IEBAIHZv
aWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbG9hZDMyKHBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAg
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKKyAgICAgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgICAgICBt
X2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCkBAIC03NzgsOSArODAwLDE0IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGlu
aygpCiAgICAgfQogICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlTWFwKGppdENvZGVNYXBFbmNv
ZGVyLmZpbmlzaCgpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVj
azsKLSAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAg
ICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9hcml0eUNoZWNr
KTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeUFyaXR5T0tQdHIgPSBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KTsKKyAgICAKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAg
aWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBy
ZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1f
cmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBzdGFja0VudHJ5V2l0aEFyaXR5
Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hl
Y2spOworICAgIH0KIAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkgewogICAg
ICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03OTgsMTQgKzgyNSwy
NiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIENvZGVSZWYgcmVzdWx0ID0g
RklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAgICAgICgiQmFzZWxpbmUg
SklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJs
b2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpLmRhdGEoKSkpOwotICAgIAorCiAgICAgbV92bS0+
bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAgICAgICBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2st
PnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgSklURW50cnlQb2ludHMg
ZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRy
LCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50cnlBcml0eU9LUHRyLCBz
dGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVy
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJh
bWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29kZSgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAg
ICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50
cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisKICAgICBt
X2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihyZXN1
bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQg
WyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3Rh
cnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKICNpbmNsdWRl
ICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIK
IApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5w
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8sIHJldHVybkFkZHJlc3Ms
IGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxl
Q1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgc3RhdGljIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRzKFZNKiB2bSwgTmF0
aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2bS0+Y2FuVXNl
SklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2ZUNhbGxSZWYgPSBDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihuYXRpdmVDYWxsUmVmLCBu
YXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaml0LnBy
aXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7
CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpA
QCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwg
SklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNh
bGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAgICAgICBDb2RlUmVmIHByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSklU
RW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiwg
TmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJh
eUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCiAgICAgICAgIC8vIEFk
ZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpA
QCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9w
dXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Owog
ICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwotICAgICAgICAKLSAgICAgICAg
TGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0Vu
dHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOworICAgICAgICBM
YWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxK
SVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0
VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwg
cmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJn
cywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zm
c2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxG
cmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIG5vbkFy
Z0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVn
VDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKLSAgICBlbWl0TmFr
ZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7Cisg
ICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNv
ZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0TmFrZWRDYWxsKHZpcnR1
YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0
YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9p
bnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAg
IEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4
KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIFN0YWNrQXJncywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9u
SW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1
bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4
XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcsMTMgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jYWxsQ29t
cGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8pLCByZWdUMik7Cisg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQogICAgICAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJ
bmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2Vk
Q2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CiAKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92
YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENh
bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJh
bWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
OwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBy
ZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpDYWxs
VmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJ
bnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBy
ZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3MocmVnVDEsIENh
bGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06
OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0
Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7
CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0
aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAg
ICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2Fs
bCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0
aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxNCArMTU5LDIzIEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX29wY29kZXNfbXVzdF9iZV9z
YW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxscHRyOworICAgIEFy
Z3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOworCiAgICAgaWYg
KG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlv
biwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblsz
XS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQ7CiAKKyNpZiBFTkFCTEUoQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1F
TlRfQ0FMTFMpCisgICAgICAgIGlmIChOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTICYmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVj
dCkpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25G
b3IoYXJnQ291bnQpOworICAgICAgICAgICAgaW5mby0+c2V0UHJvdmlkZXNSZWdpc3RlckFuZFN0
YWNrQXJndW1lbnRzKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBl
bWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKQEAgLTE3MSwxNSArMTg1LDI1IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgfQogICAgIAogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSAr
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3Mp
IHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdp
c3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFy
Z3MgPSBzdGQ6Om1pbihhcmdDb3VudCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lz
dGVyQXJnczsgYXJnKyspCisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSks
IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZykpOworICAgICAgICB9CiAg
ICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KKworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKICAgICAKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChi
eXRlY29kZU9mZnNldCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9u
Qml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7
CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCi0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVS
ZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY2FsbGVlLCBjYWxsZWVSZWdpc3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVS
ZWdpc3RlciwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAg
ICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMTg3LDE2ICsyMTEsMTggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERh
dGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nh
c2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRG
dW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBjYWxsZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2Vk
RnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nh
c2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExp
bmtJbmZvSW5kZXgpOwotICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBl
Rm9yKG9wY29kZUlEKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAg
IGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJn
dW1lbnRzTG9jYXRpb24sIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lz
dGVyKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbklu
Zm8oKSk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQ
YXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRl
cih0aGlzLCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNo
dWZmbGVEYXRhOwogICAgICAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyOwogICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpA
QCAtMjA5LDcgKzIzNSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICAgICAgICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgfQogICAgICAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIo
cmVnVDAsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihj
YWxsZWVSZWdpc3RlciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBD
YWxsZWVTYXZlUmVnaXN0ZXJzKG1fY29kZUJsb2NrKTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVT
aHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlz
LCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CkBAIC0yNDYsOSArMjcyLDEwIEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENv
bXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOwor
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVt
aXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtH
ZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwog
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJv
bVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUo
Vk0qIHZtLCBQcm90b0NhCiAKICAgICBpZiAoIWZ1bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+
bmVlZEFyaXR5Q2hlY2soKSkgewogICAgICAgICBBU1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVk
QXJpdHlDaGVjaygpKTsKLSAgICAgICAgZW50cnlBZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlD
aGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAg
ICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvSmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZt
LCBwcm90b0NhbGxGcmFtZSkpOwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVs
bCgpIDogcmVzdWx0OwogfQpAQCAtMTYyLDkgKzE2Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVj
dEpJVENvZGUoSklUVHlwZSBqaXQKIHsKIH0KIAotRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29k
ZShKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywg
SklUVHlwZSBqaXRUeXBlKQotICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkK
LSAgICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpE
aXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5
cGUpCisgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYoZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUp
CisgICAgLCBtX2VudHJ5UG9pbnRzKGVudHJpZXMpCiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2
IEBAIERpcmVjdEpJVENvZGU6On5EaXJlY3RKSVRDb2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RK
SVRDb2RlOjppbml0aWFsaXplQ29kZVJlZihKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6
Q29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK3ZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVu
dHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX3JlZik7Ci0gICAgbV9yZWYgPSByZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9
IHdpdGhBcml0eUNoZWNrOworICAgIG1fcmVmID0gZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9l
bnRyeVBvaW50cyA9IGVudHJpZXM7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29k
ZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRy
IERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0g
ICAgc3dpdGNoIChhcml0eSkgewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7
Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRo
QXJpdHlDaGVjayk7Ci0gICAgICAgIHJldHVybiBtX3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7Cisg
ICAgcmV0dXJuIG1fZW50cnlQb2ludHMuZW50cnlGb3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENv
ZGU6Ok5hdGl2ZUpJVENvZGUoSklUVHlwZSBqaXRUeXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZv
aWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsK
IH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0
eUNoZWNrTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNh
bGwoRW50cnlQb2ludFR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAg
cmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAi
SklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5
ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNr
TW9kZSkgPSAwOworICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50
VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSA9IDA7Ci0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVy
biBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRh
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsy
MjMsMTUgQEAgcHJvdGVjdGVkOgogY2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2Rl
V2l0aENvZGVSZWYgewogcHVibGljOgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAg
RGlyZWN0SklUQ29kZShDb2RlUmVmLCBDb2RlUHRyIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsK
KyAgICBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAg
dmlydHVhbCB+RGlyZWN0SklUQ29kZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVS
ZWYoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXpl
RW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIENvZGVQdHIg
bV93aXRoQXJpdHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsK
IAogY2xhc3MgTmF0aXZlSklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAt
MjQzLDcgKzI0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVm
KENvZGVSZWYpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkg
b3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86IENv
bnNpZGVyIHVzaW5nIGEgbWFjcm8gYmFzZSBjb250cnVjdGlvbiB0byBnZXQgZW51bSAiaW5oZXJp
dGVuY2UiCitlbnVtIEFyZ3VtZW50c0xvY2F0aW9uIDogdW5zaWduZWQgeworICAgIFN0YWNrQXJn
cyA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0
CisgICAgUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczJJblJlZ2lz
dGVycywKKyAgICBSZWdpc3RlckFyZ3MzSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNElu
UmVnaXN0ZXJzLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
PT0gNgorICAgIFJlZ2lzdGVyQXJnczVJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M2SW5S
ZWdpc3RlcnMsCisjZW5kaWYKKyAgICBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrCisjZW5k
aWYKK307CisKKy8vIFRoaXMgZW51bSBuZWVkcyB0byBoYXZlIHRoZSBzYW1lIGVudW1lcmF0b3Ig
b3JkZXJpbmcgYXMgQXJndW1lbnRzTG9jYXRpb24uCitlbnVtIFRodW5rRW50cnlQb2ludFR5cGUg
OiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzRW50cnkgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyMUFyZ0VudHJ5LAor
ICAgIFJlZ2lzdGVyMkFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjNBcmdzRW50cnksCisgICAgUmVn
aXN0ZXI0QXJnc0VudHJ5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyNUFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjZBcmdzRW50
cnksCisjZW5kaWYKKyNlbmRpZgorICAgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudAorfTsKKwor
ZW51bSBFbnRyeVBvaW50VHlwZSB7CisgICAgU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
LAorICAgIFN0YWNrQXJnc011c3RDaGVja0FyaXR5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWly
ZWQsCisgICAgUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsCisgICAgUmVnaXN0ZXJBcmdz
TXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUyA+PSA0CisgICAgUmVnaXN0ZXJBcmdzMSwKKyAgICBSZWdpc3RlckFyZ3MyLAorICAgIFJl
Z2lzdGVyQXJnczMsCisgICAgUmVnaXN0ZXJBcmdzNCwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAgICBSZWdpc3RlckFyZ3M1LAorICAgIFJlZ2lz
dGVyQXJnczYsCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgTnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXMKK307CisKK2NsYXNzIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBFbnRyeVBvaW50VHlwZTo6TnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXM7CisKKyAgICBKSVRFbnRyeVBvaW50cygpCisgICAgeworICAgICAgICBjbGVhckVudHJp
ZXMoKTsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50cyhDb2RlUHRyIHJlZ2lzdGVyQXJnc05v
Q2hlY2tSZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
RW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBDb2Rl
UHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRy
IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICB7CisgICAgICAgIG1fZW50cnlQb2ludHNb
U3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1N0YWNrQXJnc011c3RDaGVja0Fy
aXR5XSA9IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5
OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzXSA9
IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnk7CisgICAgICAgIG1fZW50cnlQb2lu
dHNbUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHldID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVu
dHJ5OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGkgKyspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRz
W3JlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChpKV0gPSByZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzTm9D
aGVja1JlcXVpcmVkRW50cnkpOworICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzUG9z
c2libGVFeHRyYUFyZ3NFbnRyeSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3ND
aGVja0FyaXR5RW50cnkpOworI2VuZGlmCisKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9y
KEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50
c1t0eXBlXTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5
cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA8IE51bWJlck9m
RW50cnlQb2ludFR5cGVzKTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0eXBlXSA9IGVudHJ5Owor
ICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihFbnRyeVBvaW50
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEVudHJ5UG9pbnRz
LCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5
cGUgcmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KHVuc2lnbmVkIGFyZ0NvdW50KQor
ICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
ICAgIEFTU0VSVChhcmdDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJnQ291bnQg
PSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgaWYgKCFy
ZWdpc3RlckFyZ0NvdW50IHx8IHJlZ2lzdGVyQXJnQ291bnQgIT0gYXJnQ291bnQpCisgICAgICAg
ICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihSZWdpc3RlckFyZ3MxICsgcmVnaXN0ZXJBcmdD
b3VudCAtIDEpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGFyZ0NvdW50KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJn
c011c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRU
eXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRUeXBlKEFyZ3VtZW50c0xvY2F0aW9uIHR5
cGUpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICAgICAgQVNTRVJUKHR5cGUgIT0gU3RhY2tBcmdzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0g
UmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaykKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdzMSArIHR5cGUgLSBSZWdpc3RlckFyZ3MxSW5S
ZWdpc3RlcnMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50cmllcygpCisg
ICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTsp
CisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMmIG9wZXJhdG9yPShjb25zdCBKSVRFbnRyeVBv
aW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVu
dHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9l
bnRyeVBvaW50c1tpXTsKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRl
OgorCisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJlck9mRW50cnlUeXBlc107Cit9Owor
CitjbGFzcyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgOiBwdWJsaWMgSklURW50cnlQb2ludHMgewor
cHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisKKyAg
ICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBv
aW50c1dpdGhSZWYoY29uc3QgSklURW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAg
OiBKSVRFbnRyeVBvaW50cyhvdGhlcikKKyAgICAgICAgLCBtX2NvZGVSZWYob3RoZXIubV9jb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBjb25zdCBKSVRFbnRyeVBvaW50cyYgb3RoZXIpCisgICAgICAgIDogSklURW50cnlQ
b2ludHMob3RoZXIpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmLCBDb2RlUHRy
IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0
YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhDb2RlUHRy
KCksIENvZGVQdHIoKSwgQ29kZVB0cigpLCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihjb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBDb2RlUHRyIHJlZ2lzdGVyQXJnc05vQ2hlY2tzUmVxdWlyZWRFbnRyeSwKKyAgICAg
ICAgQ29kZVB0ciByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LCBDb2RlUHRyIHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkp
CisgICAgICAgIDogSklURW50cnlQb2ludHMocmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVu
dHJ5LCByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LAorICAgICAgICAgICAgcmVn
aXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwKKyAgICAgICAgICAgIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgLCBt
X2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkg
eyByZXR1cm4gbV9jb2RlUmVmOyB9CisKK3ByaXZhdGU6CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7
Cit9OworCitpbmxpbmUgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb25Gb3IodW5z
aWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1bWVudENvdW50KQorICAgICAgICByZXR1cm4gU3Rh
Y2tBcmdzOworICAgIAorICAgIGFyZ3VtZW50Q291bnQgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICsgMSwgYXJndW1lbnRDb3VudCk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50c0xvY2F0aW9uPihBcmd1bWVudHNMb2NhdGlv
bjo6UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnczsK
KyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVBvaW50VHlw
ZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQgfHwgYXJndW1lbnRD
b3VudCA+IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAg
IHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsg
YXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKK30KKworaW5saW5lIEVudHJ5UG9pbnRUeXBlIGVu
dHJ5UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChhcmd1
bWVudExvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnc011c3RD
aGVja0FyaXR5OworICAgIAorICAgIGlmIChhcmd1bWVudExvY2F0aW9uID09IFJlZ2lzdGVyQXJn
c1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgIHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5
UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50
TG9jYXRpb24gLSBSZWdpc3RlckFyZ3MxSW5SZWdpc3RlcnMpKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGFyZ3VtZW50TG9jYXRpb24pOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGh1bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5
UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIHVuc2lnbmVkIGFy
Z3VtZW50TG9jYXRpb25JbmRleCA9IHN0ZDo6bWluKFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3Rh
Y2sgLSAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbikpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihhcmd1bWVudExvY2F0aW9uSW5k
ZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRMb2NhdGlvbik7CisgICAgcmV0
dXJuIFN0YWNrQXJnc0VudHJ5OworI2VuZGlmCit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRU
eXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgYXJndW1lbnRD
b3VudCA9IG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IoYXJndW1lbnRDb3VudCk7CisgICAg
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KFRodW5rRW50cnlQ
b2ludFR5cGU6OlJlZ2lzdGVyMUFyZ0VudHJ5ICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnc0Vu
dHJ5OworI2VuZGlmCit9CisKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwor
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mRW50cnlUeXBlcyA9IFRodW5rRW50cnlQb2ludFR5cGU6OlRo
dW5rRW50cnlQb2ludFR5cGVDb3VudDsKKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmKCkKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYoQ29kZVJlZiBjb2RlUmVmKQorICAgICAgICA6IG1fY29kZVJlZihjb2RlUmVmKQorICAg
IHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb25zdCBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9jb2Rl
UmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkVudHJ5VHlwZXM7IGkrKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNb
aV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlG
b3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50
cnlQb2ludHNbdHlwZV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihBcmd1bWVudHNM
b2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBlbnRyeUZv
cih0aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFyZ3VtZW50c0xvY2F0aW9uKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRFbnRyeUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50
cnkpCisgICAgeworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiwgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgdm9p
ZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVy
T2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0
dXJuIG1fY29kZVJlZjsgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYm
IG9wZXJhdG9yPShjb25zdCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIp
CisgICAgeworICAgICAgICBtX2NvZGVSZWYgPSBvdGhlci5tX2NvZGVSZWY7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJl
ZjsKKyAgICBDb2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jKQorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xv
Z3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTY4OQpAQCAtMTI5LDcgKzEyOSw5IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywg
R0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNoQnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVu
Y3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgSklUOjpDb2RlUmVmIGNvZGVSZWYgPSBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgCisg
ICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwg
Y29kZVJlZi5jb2RlKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLUpJVDo6Q29kZVJlZiBKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uKQorSklURW50cnlQ
b2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbikKIHsKLSAgICByZXR1cm4gdm0tPmdldENUSVN0dWIobmF0aXZlQ2Fs
bEdlbmVyYXRvcik7CisgICAgcmV0dXJuIHZtLT5nZXRKSVRFbnRyeVN0dWIobmF0aXZlQ2FsbEdl
bmVyYXRvcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsMTAgKzg5MCwxNCBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgSlNTY29wZSogc2Nv
cGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyLCBjb2RlUHRyRm9y
TGlua2luZzsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBpZiAo
IWNhbGxMaW5rSW5mby0+cHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCkgJiYgY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgY29kZVB0ckZv
ckxpbmtpbmcgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011
c3RDaGVja0FyaXR5KTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTkxNCwxNyArOTE4LDQ0IEBAIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sg
PSAqY29kZUJsb2NrU2xvdDsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAg
IGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAg
ICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5
KTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgYm9vbCB1c2VTdGFja0VudHJ5ID0g
Y29kZUJsb2NrLT5wcmVmZXJzU3RhY2tBcmd1bWVudHMoKSAmJiBjYWxsTGlua0luZm8tPnByb3Zp
ZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cygpOworI2VuZGlmCisgICAgICAgIHNpemVfdCBj
YWxsZXJBcmd1bWVudENvdW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKTsKKyAgICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFy
Z3VtZW50Q291bnQgPCBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJh
cmdzKCkpIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgICAgICBpZiAoIXVzZVN0YWNrRW50cnkgJiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJ
blJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lz
dGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
Y29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAg
ICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQ
b2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICB9IGVsc2UgaWYg
KCF1c2VTdGFja0VudHJ5ICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkg
eworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVlQXJndW1lbnRD
b3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvZGVQ
dHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJ
VEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJn
dW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtpbmcpCisg
ICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50cnkgcG9pbnRz
IHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsK
KyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5k
LCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkK
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQotICAgICAgICBsaW5r
Rm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRy
KTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ss
IGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2luZyA6IGNvZGVQdHIp
OwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0g
Q2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CkBAIC05
NTksNyArOTkwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2EK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCi0g
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVj
a0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGNhbGxMaW5r
SW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5
IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2RlUHRyID0gZXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5k
aWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApA
QCAtOTcxLDEzICsxMDA2LDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGly
ZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBBcml0eUNoZWNrTW9k
ZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygp
OwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9IE11c3RDaGVj
a0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvZG86IFRo
aXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChh
cmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAg
ICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4g
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0
ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UK
KyAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50
KQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RG
b3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCAr
MTA3MSwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAg
ICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkg
aWYgdGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdp
bGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2
b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
ZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVu
a3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVD
YWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdl
bmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIs
IG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0
aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6
OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1
bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAo
IXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZl
Q29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2
ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1
bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50
cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50
cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRp
b24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZh
bHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBn
ZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRo
cmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9
IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7
Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBu
dWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5l
cmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9y
KHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5
LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2
ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5j
dGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxl
KGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0
aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9u
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51
bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgog
ICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRF
bnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlO
YXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSos
IE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRp
dmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRv
ciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9j
dGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50
cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1f
aml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdl
bmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0Vu
dHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQp
OworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNl
bmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQog
ICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50
MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBG
UFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVu
dFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAg
ICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgp
OworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBz
dGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMg
dXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lz
dGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5
IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzksMjEgKzUzOSwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1
bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJl
Zi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBv
aW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8s
IHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9
CiAKIHZvaWQgbGlua0ZvcigKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAog
ICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZl
cnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2Rl
UmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8uaXNEaXJlY3QoKSkgewogICAgICAgICBjYWxs
TGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIHVubGlu
a0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlu
a0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwogICAgIAotICAgIHJldmVydENhbGwoJnZtLCBj
YWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAg
IHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBA
IC02NTQsOSArNjU0LDkgQEAgdm9pZCBsaW5rVmlydHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtp
bmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVy
RnJhbWUoKS0+Y29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlu
a0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVu
ay5jb2RlUmVmKCksICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAt
NzA1LDYgKzcwNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExp
bmtJbmZvLnNldEhhc1NlZW5DbG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGlj
Q2FsbENhc2U+IGNhbGxDYXNlczsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91
dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlz
dCkgewpAQCAtNzE2LDcgKzcxNyw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRs
ZSBhIGNhbGxlZSwgZWl0aGVyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBi
ZWNhdXNlIGFyaXR5IG1pc21hdGNoLAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBi
ZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAg
ICAgICBpZiAoIWNvZGVCbG9jayB8fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2Fs
bExpbmtJbmZvLmlzVmFyYXJncygpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBj
YWxsZXJBcmd1bWVudENvdW50IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAg
ICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03MzcsNyArNzM4LDEwIEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChj
YWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxl
ZUdQUiA9PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJz
IHN0dWJKaXQodm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93UGF0aDsKQEAgLTc1OSw2ICs3NjMsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwogICAgICAgICBpZiAoZnJhbWVTaHVm
ZmxlcikKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BS
KCk7CisgICAgICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygp
KQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1
bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhlY3V0YWJsZSBpbiBzY3JhdGNoR1BSLgpAQCAtODI0LDEz
ICs4MzAsMjMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIEdQUlJlZyBmYXN0Q291
bnRzQmFzZUdQUjsKICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgZmFzdENvdW50c0Jh
c2VHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgZWxzZSBpZiAoY2FsbExp
bmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisjZWxzZQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOworI2VuZGlmCiAgICAgZWxzZSB7CiAg
ICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0KICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNvbXBhcmlzb25WYWx1ZUdQUiwgR1BSSW5mbzo6
cmVnVDMpOwogICAgIH0KLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBmYXN0Q291bnRzQmFzZUdQUik7CisgICAgaWYgKGZhc3RD
b3VudHMpCisgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
ZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNCYXNlR1BSKTsKICAgICBpZiAoIWZyYW1lU2h1
ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkKICAgICAgICAgc3R1YkppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZzdHViSml0LCBW
TTo6UG9seW1vcnBoaWNDYWxsKTsKKwogICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29t
cGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2
YW5jZShzdHViSml0KSkgewpAQCAtODM5LDggKzg1NSwzMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4
XS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxl
KCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworCisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJn
dW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2Rl
QmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICAg
ICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50ID09IGNhbGxlckFyZ3VtZW50Q291bnQgfHwg
Y2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBSZWdpc3RlckFyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9yQXJnQ291bnQgPSBKSVRFbnRyeVBvaW50czo6
cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpOwor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlGb3JBcmdDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBl
ID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAg
ICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpOworICAgICAgICAgICAgdmFyaWFudC5l
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKGVu
dHJ5VHlwZSk7CisgICAgICAgIEFTU0VSVChjb2RlUHRyKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBzdHViSml0LmFkZDMyKApAQCAtODQ4LDcgKzg4
OCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50
MzJfdCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewotICAgICAg
ICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3Qo
KSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihz
dHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9j
YXRpb24oKSkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKQEAgLTg2OSwxOSArOTA5LDE5IEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbCgKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBmcmFtZVNodWZmbGVyLT5z
ZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDApKTsKICNlbHNlCi0gICAgICAgIGZyYW1lU2h1ZmZsZXItPnNldENhbGxlZUpTVmFsdWVS
ZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uYXJndW1lbnRzTG9jYXRpb24oKSA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBmcmFtZVNo
dWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCkpKTsKICNlbmRpZgogICAgICAgICBmcmFtZVNodWZmbGVyLT5wcmVwYXJlRm9y
U2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3R1Ykpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJ
bmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICB9Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIHN0
dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0g
ICAgCi0gICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZv
OjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAg
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29k
ZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtOTAyLDcgKzk0Miw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxs
TGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKSk7CiAgICAgZWxz
ZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3Ro
ZXIoKS5sYWJlbEF0T2Zmc2V0KDApKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVM
b2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcikuY29kZSgpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25M
YWJlbCh2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVu
a0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7
CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREVfRk9SKApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9u
IDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAg
ICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywgSW5SZWdpc3RlcnMgfTsKKworICAgICAgICBT
cGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5
SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gT25TdGFjaykKICAgICAgICAg
ICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1Jl
Z2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3Rl
ZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oc3Bp
bGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQor
ICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICBm
aWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSA9IGxhYmVsKCk7CisgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5N
YXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAgICAg
IG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9y
QXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7
CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICAg
ICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAg
ICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMK
KyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVj
dGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0pCiAgICAgICAgICAg
ICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsK
KyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNFbnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRo
ZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1l
bnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0
cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJRCBhcmd1bWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkp
OworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJndW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1w
JiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWls
dXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5saW5rKHRoaXMpOworICAgICAgICAgICAgbV9m
YWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJRCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwx
MyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBm
YWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwo
ZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxz
LnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tp
XS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwotICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5k
KSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAg
ICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNFbnRyeS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNF
bnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsK
KyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lz
dGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZv
ciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dp
dGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnks
IHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5j
b2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVu
dHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRh
cmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIwIGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAt
MjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVudHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1fY2FsbHM7CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsK
K2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVyYXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciko
Vk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJv
bQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlv
biBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVS
ZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVudHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5
cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRB
cmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgfQorCisjaWYgIUVOQUJMRShD
QUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNl
bmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0KTsKKyAgICBVTlVTRURfUEFSQU0oZW50
cnlQb2ludHMpOworI2VuZGlmCisgICAgZW50cnlQb2ludHNbU3RhY2tBcmdzXSA9IGppdC5sYWJl
bCgpOworfQorCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0qIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpIHNsb3dQYXRoRnVuY3Rpb24pCiB7CkBA
IC04OCw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICAvLyBNb3Zpbmcg
dGhlIHN0YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMg
dXMgcm9vbSBmb3Igb3VyIDMgYXJndW1lbnRzCiAgICAgLy8gYW5kIHNwYWNlIGZvciB0aGUgMTYg
Ynl0ZSByZXR1cm4gYXJlYS4KICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQUkluZm86Om5vbkFyZ0dQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigzMiksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKQEAgLTEwMCw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICNl
bHNlCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1Bh
dGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlk
YXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpu
b25BcmdHUFIwKTsKQEAgLTEyNyw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigK
ICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVn
aXN0ZXIuIFdlIHdpbGwgaGVuY2UKICAgICAvLyBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0
aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwKQEAgLTEzNSw0
NSArMTU2LDE1MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyCiAg
ICAgLy8gdG8gYmUgaW4gcmVnVDAvcmVnVDEgKHBheWxvYWQvdGFnKSwgdGhlIENhbGxGcmFtZSB0
byBoYXZlIGFscmVhZHkKICAgICAvLyBiZWVuIGFkanVzdGVkLCBhbmQgYWxsIG90aGVyIHJlZ2lz
dGVycyB0byBiZSBhdmFpbGFibGUgZm9yIHVzZS4KICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
LSAgICAKKworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5
KGppdCwgZW50cnlQb2ludHMpOwogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxp
bmtDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxp
bmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNv
ZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRo
dW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBv
aW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAg
Zm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdzOyBlbnRyeUluZGV4IDwgIFRodW5r
RW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7CisgICAgICAgIGNhbGxFbnRyeVBv
aW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUlu
ZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50
cnlJbmRleF0pKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOworfQorCitK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK3sKKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNr
IG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxsIGhlbmNlCisgICAgLy8gc2F2ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5j
dGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9ybSBsaW5raW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9u
IGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRoZSBDYWxsTGlua0luZm8KKyAgICAvLyB0byBiZSBp
biBHUFJJbmZvOjpub25BcmdHUFIwLCB0aGUgY2FsbGVlIHRvIGJlIGluIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSwKKyAgICAvLyB0aGUgQ2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeSBiZWVu
IGFkanVzdGVkLCBhbmQgYXJndW1lbnRzIGluIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIC8vIGFu
ZC9vciBpbiB0aGUgc3RhY2sgYXMgYXBwcm9wcmlhdGUuCisgICAgQ0NhbGxIZWxwZXJzIGppdCh2
bSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50
cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50
cnkoaml0LCBlbnRyeVBvaW50cyk7CisKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7IC8vIFNhdmUgY2FsbGVlJ3MgZnJhbWUgcG9p
bnRlcgorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOworCisgICAgaWYg
KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50
cyhHUFJJbmZvOjpub25BcmdHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwLCBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGlmICht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBH
UFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOwor
ICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmdDb3VudFJlZyk7CisKKyAgICAvLyBsb2Fk
ICJ0aGlzIgorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9n
dWUoMCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOworCisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGZpbGxVbmRlZmluZWRbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSU107CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykgeworICAgICAgICBmaWxsVW5kZWZpbmVkW2FyZ0luZGV4XSA9IGppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpOworICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJh
bWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKworICAgIENDYWxsSGVscGVyczo6SnVt
cCBkb25lRmlsbGluZyA9IGppdC5qdW1wKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gMTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdLmxpbmsoJmpp
dCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgZG9uZUZpbGxpbmcubGluaygmaml0KTsKKyNl
bmRpZgorCisKKyAgICBqaXQucmV0KCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBkaXJlY3QgY2FsbCB0aHVuayIp
KTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMg
PSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtF
bnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9p
bnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5k
ZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRy
eUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQog
CiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25zLCB3ZSBvbmx5IGluY2x1ZGUgY2FsbHMsIHNp
bmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBmb3IKIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24g
dGhlbiB5b3UncmUgZ29pbmcgdG8gbG9zZSBiaWcgdGltZSBhbnl3YXkuCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CiAgICAgCisgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07
CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50
cyk7CisKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWND
YWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsg
cG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3Jw
aGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNr
QXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgr
KykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1
bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzdGluZ3Vp
c2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwgY2FsbCB2cy4gYSBzbG93CiAvLyBwYXRo
IHZpcnR1YWwgY2FsbCBzbyB0aGF0IHdlIGNhbiBlbmFibGUgZmFzdCB0YWlsIGNhbGxzIGZvciBt
ZWdhbW9ycGhpYwogLy8gdmlydHVhbCBjYWxscyBieSB1c2luZyB0aGUgc2h1ZmZsZXIuCiAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODMxCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3Io
Vk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICAvLyBUaGUgY2FsbGVl
IGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0LCB0aGUgdGFnIGlzIGluIHJlZ1QxKS4KLSAg
ICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayBy
ZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQotICAgIC8vIGp1bXAgdG8gdGhlIGNhbGxlZSwgb3Igc2F2
ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UKLSAgICAvLyBt
YWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24u
CisgICAgLy8gVGhlIGNhbGxlZSBpcyBpbiBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgKGZv
ciBKU1ZBTFVFMzJfNjQsIGl0IGlzIGluIHJlZ1QxOnJlZ1QwKS4KKyAgICAvLyBUaGUgQ2FsbExp
bmtJbmZvIGlzIGluIEdQUkluZm86Om5vbkFyZ0dQUjAuCisgICAgLy8gVGhlIHJldHVybiBhZGRy
ZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuCisgICAgLy8vIFdl
IHdpbGwgaGVuY2UganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVz
cyB0byB0aGUgY2FsbAorICAgIC8vIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24g
Y2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KIAogICAgIENDYWxsSGVscGVy
cyBqaXQodm0pOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0g
ICAgCi0gICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0aCBleGVjdXRpb24sIGFuZCByZWdUMiBjb250
YWlucyB0aGUgQ2FsbExpbmtJbmZvLiBDb3VudCB0aGUKLSAgICAvLyBzbG93IHBhdGggZXhlY3V0
aW9uIGZvciB0aGUgcHJvZmlsZXIuCisKKyAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgR1BSUmVnIGNh
bGxlZVRhZ1JlZyA9IEdQUkluZm86OnJlZ1QxOworI2VuZGlmCisgICAgR1BSUmVnIHRhcmdldFJl
ZyA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisgICAgLy8gVGhpcyBpcyB0aGUgQ2FsbExpbmtJbmZv
KiBvbiBlbnRyeSBhbmQgdXNlZCBsYXRlciBhcyBhIHRlbXAuCisgICAgR1BSUmVnIGNhbGxMaW5r
SW5mb0FuZFRlbXBSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIwOworCisgICAgaml0LmZpbGxBcmd1
bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHJlZ2lzdGVyRW50cnkgPSBqaXQubGFiZWwoKTsKKyNlbmRpZgorCisgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6VmlydHVhbENhbGwpOworCisgICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0
aCBleGVjdXRpb24uIENvdW50IHRoZSBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmls
ZXIuCiAgICAgaml0LmFkZDMyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBDYWxsTGlu
a0luZm86Om9mZnNldE9mU2xvd1BhdGhDb3VudCgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhjYWxsTGlua0luZm9BbmRUZW1wUmVnLCBDYWxsTGlua0luZm86Om9mZnNldE9mU2xv
d1BhdGhDb3VudCgpKSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBm
b3IgZWxpbWluYXRpbmcgdGhlc2UgY2hlY2tzLiBJbiBtYW55IGNhc2VzLAogICAgIC8vIHRoZSBE
Rkcga25vd3MgdGhhdCB0aGUgdmFsdWUgaXMgZGVmaW5pdGVseSBhIGNlbGwsIG9yIGRlZmluaXRl
bHkgYSBmdW5jdGlvbi4KQEAgLTE4MSw1NCArMzEwLDY5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsVGh1bmtGb3IoVk0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHNsb3dDYXNlLmFw
cGVuZCgKICAgICAgICAgaml0LmJyYW5jaFRlc3Q2NCgKLSAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBjYWxsZWVSZWcsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwogI2Vsc2UKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGpp
dC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86
OnJlZ1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlVGFnUmVn
LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKICNlbmRpZgotICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQ
UkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uVHlwZSkpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQu
YnJhbmNoSWZOb3RUeXBlKGNhbGxlZVJlZywgSlNGdW5jdGlvblR5cGUpKTsKICAgICAKICAgICAv
LyBOb3cgd2Uga25vdyB3ZSBoYXZlIGEgSlNGdW5jdGlvbi4KICAgICAKICAgICBqaXQubG9hZFB0
cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKKyAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICB0YXJnZXRSZWcpOwogICAgIGppdC5sb2FkUHRyKAog
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdU
NCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSkpLAotICAgICAg
ICBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDQpKTsKKyAgICAgICAgICAgIHRhcmdl
dFJlZywgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoCisgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpLAorICAgICAgICAgICAgICAgIGVudHJ5
UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby5hcmd1bWVudHNMb2NhdGlvbigpKSkpLAorICAgICAg
ICB0YXJnZXRSZWcpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIHRhcmdldFJlZykpOwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHRo
YXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBm
YXN0CiAgICAgLy8gY2FsbC4KICAgICAKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdp
bGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGpp
dCwgR1BSSW5mbzo6cmVnVDQpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIHRhcmdl
dFJlZyk7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAgaml0
LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
IGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKKyAgICAgICAgaml0
LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAg
aml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChjYWxsTGlua0luZm9BbmRUZW1wUmVn
KTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3codGFyZ2V0UmVnKTsKICAgICB9
Ci0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDQpOwotCisgICAgaml0Lmp1bXAodGFyZ2V0UmVn
KTsKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwotICAgIAorCisgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VmlydHVhbFNsb3dDYWxsKTsKKwogICAgIC8vIEhlcmUgd2UgZG9uJ3Qga25v
dyBhbnl0aGluZywgc28gcmV2ZXJ0IHRvIHRoZSBmdWxsIHNsb3cgcGF0aC4KKyAgICBqaXQuc3Bp
bGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwogICAgIAogICAgIHNs
b3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZpcnR1YWxDYWxsKTsKICAgICAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKAotICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZp
cnR1YWwgJXMgc2xvdyBwYXRoIHRodW5rIiwKICAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxNb2Rl
KCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBjYWxsTGlua0luZm8uY2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6VGFpbCA/ICJ0YWlsIGNhbGwiIDogImNvbnN0cnVjdCIpKTsKKyAgICBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0Nh
bGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKworICAgIGNhbGxFbnRyeVBvaW50
cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NFbnRyeSwgY29kZVJlZi5jb2RlKCkpOworCisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZWdpc3RlckVudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihyZWdpc3Rl
ckVudHJ5KTsKKworICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFJlZ2lzdGVyMUFyZ0Vu
dHJ5OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsr
KQorICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtF
bnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksIHJlZ2lzdGVyRW50cnlQdHIpOworI2VuZGlmCisK
KyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQogCiBlbnVtIFRodW5rRW50cnlUeXBlIHsg
RW50ZXJWaWFDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzLCBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzIH07CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9y
R2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5
VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCitzdGF0aWMgSklURW50cnlQb2ludHNXaXRo
UmVmIG5hdGl2ZUZvckdlbmVyYXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFDYWxsKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBh
Y2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4OQpAQCAtMjM3LDggKzM4MSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZUZvckdlCiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBzdGFja0FyZ3NFbnRyeTsKKwogICAgIHN3aXRjaCAoZW50cnlUeXBl
KSB7CiAgICAgY2FzZSBFbnRlclZpYUNhbGw6CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyAgICAgICAgc3RhY2tBcmdzRW50cnkg
PSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzOgpAQCAtMzc5
LDI1ICs1MjksMzMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQog
ICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0g
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50
cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNh
dmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUg
JXMlcyB0cmFtcG9saW5lIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3Mg
PyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5n
KGtpbmQpLmRhdGEoKSkpOworICAgIGlmIChlbnRyeVR5cGUgPT0gRW50ZXJWaWFDYWxsKSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVS
ZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2Rl
UmVmLmNvZGUoKSk7CisKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3Io
Vk0qIHZtKQogewogICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxs
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwg
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRv
cih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MpLmNvZGVSZWYoKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
c0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwg
Q29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpOworICAgIHJldHVybiBu
YXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2
ZWRUYWdzKS5jb2RlUmVmKCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2
bSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CkBAIC01MzYsNiArNjk0LDQzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJ1bnJlYWNoYWJsZSB0aHVuayIpKTsKIH0KIAorI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKK3N0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2Fk
UmVnQ2FsbChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKK3sKKyAgICAvLyBsb2Fk
IHN0cmluZworICAgIEdQUlJlZyB0aGlzUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoMCk7CisgICAgR1BSUmVnIGluZGV4UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMik7CisgICAgR1BSUmVnIGxlbmd0aFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpOworICAgIEdQUlJlZyB0ZW1wUmVnID0gU3BlY2lhbGl6
ZWRUaHVua0pJVDo6bm9uQXJnR1BSMDsKKworICAgIGppdC5jaGVja0pTU3RyaW5nQXJndW1lbnQo
KnZtLCB0aGlzUmVnKTsKKworICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5k
IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1Qw
CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzUmVnLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJp
bmdWYWx1ZU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcFJlZykpOworCisgICAgLy8gbG9h
ZCBpbmRleAorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KDEpLCBpbmRleFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJ
bnQzMihpbmRleFJlZykpOworCisgICAgLy8gRG8gYW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11
bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5kaWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBsZW5ndGhSZWcpKTsKKworICAgIC8v
IExvYWQgdGhlIGNoYXJhY3RlcgorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlz
MTZCaXQ7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CisgICAg
Ly8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIGxlbmd0aFJlZyk7
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgbGVuZ3RoUmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzT25lLCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQuYXBwZW5kKGppdC5q
dW1wKCkpOworICAgIGlzMTZCaXQubGluaygmaml0KTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgodGVtcFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c1R3bywgMCksIHRlbXBSZWcpOworICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7Cit9CisjZWxzZQog
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSog
dm0pCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKQEAgLTU2NSw2ICs3NjAsNyBAQCBzdGF0aWMgdm9p
ZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRoCiAgICAgaml0LmxvYWQxNihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwogICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7CiB9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZt
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzcmMsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKQEAgLTU3NCwz
NCArNzcwLDY5IEBAIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhTcGVjaWFsaXplZFRodW4KICAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgZHN0KSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5SZWdpc3RlcnMpOworICAgIHN0
cmluZ0NoYXJMb2FkUmVnQ2FsbChqaXQsIHZtKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOwor
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwg
ImNoYXJDb2RlQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNoYXJDb2RlQXQiKTsKKyNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFs
aXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGpp
dCwgdm0pOworICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpu
b25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhl
cmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlI
ZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkp
OworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJjaGFyQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckF0Iik7CisjZW5kaWYKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGpp
dCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OkluUmVnaXN0ZXJzKTsKKyAgICAvLyBsb2FkIGNoYXIgY29kZQorICAgIGppdC5tb3ZlKGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDEpLCBTcGVjaWFsaXplZFRodW5rSklU
Ojpub25BcmdHUFIwKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdElu
dDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjApKTsKKworICAgIGNoYXJUb1N0cmlu
ZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1
bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CisgICAg
aml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vs
c2UKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEFsbCk7CiAgICAgLy8gbG9hZCBjaGFyIGNvZGUKICAgICBqaXQubG9hZEludDMyQXJndW1l
bnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZW5kaWYK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
SklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub25JbnRBcmdKdW1wOwpAQCAtNjIyLDExICs4NTMsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNsejMyVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjbHozMiIpOwogfQogCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJl
ZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogICAgIGppdC5sb2FkRG91Ymxl
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtNzgyLDEyICsxMDEzLDEy
IEBAIGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKTsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7CiAgICAgCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxv
b3JUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaWYgKCFVbmFyeURv
dWJsZU9wV3JhcHBlcihmbG9vcikgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0t
PmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkSW50MzJBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0
LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1w
LmxpbmsoJmppdCk7CkBAIC04MjUsMTEgKzEwNTYsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmbG9vciIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
ZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZt
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50
MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg0OCwx
MSArMTA3OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yCiAg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImNlaWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVu
YXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgp
KQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVy
biB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC04NzEsMTEgKzExMDIsMTEgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJ0cnVuYyIpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIo
anNSb3VuZCkgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1
bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDApOwpAQCAtOTA1LDM3ICsxMTM2LDM3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBy
b3VuZFRodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicm91bmQiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihl
eHApKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRE
b3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdS
ZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhwKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZXhwIik7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVP
cFdyYXBwZXIobG9nKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQ
cmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1
cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5m
aW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImxvZyIpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50
cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1Bv
aW50QWJzKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAg
ICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgdW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXggPSBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0KDApOwpAQCAtOTg4LDcgKzEyMTksNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImFicyIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAyKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsK
QEAgLTEwMTksMTEgKzEyNTAsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dl
bmVyYXRvcgogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVU
YWlsQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21U
aHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsK
ICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRF
bnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqaXQuZW1pdFJh
bmRvbVRodW5rKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QzLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKQEAgLTEwMzEsMTYgKzEyNjIs
MjIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdAogCiAgICAgcmV0
dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJh
bmRvbSIpOwogI2Vsc2UKLSAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAg
cmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIENDYWxsSGVscGVycyBqaXQodm0pOworICAg
IEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
ZmFpbHVyZXM7CisKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQ
cm9sb2d1ZSgpOwogICAgIAotICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OkxhYmVsIHN0YWNrQXJnc0VudHJ5KCZqaXQpOwogICAgIAorICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZy
YW1lLgogICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsK
ICAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMTExMCwyMCAr
MTM0NywyMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNl
OjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAorICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKENv
ZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpLAogICAgICAgICBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAgIGZhaWx1cmVzLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7
CiAgICAgCiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7Ci0gICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIGxpbmtCdWZmZXIubGluayhub0Nv
ZGUsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRo
b3V0U2F2ZWRUYWdzKHZtKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBs
aW5rQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3
aXRoIG5vIGFyZ3VtZW50cyIpKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlcywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZl
ZFRhZ3Modm0pKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlv
biBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
c3RhY2tFbnRyeVB0ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkpOwor
CisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUo
KSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0Vu
dHJ5UHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5cG9pbnRzLmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zNiwzNCArMzcsMzUgQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcihWTSopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0Nh
bGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNKiwgQ2FsbExpbmtJbmZvJik7CitKSVRKU0NhbGxUaHVua0VudHJ5
UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5y
ZWFjaGFibGVHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2Rl
QXRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRv
cihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
KFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVu
a0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
aGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFy
QXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dl
bmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bG9nVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRodW5r
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKik7CitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3Io
Vk0qKTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDEyICs0NiwyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5
cG9pbnQoVk0mIHZtCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSgKKyAgICAgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lz
dGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAg
ICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdp
c3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciku
Y29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVn
aXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCkBAIC01OSwxMiArNzMsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVu
Y3Rpb25FbnRyeXBvaW50KFZNJiB2bQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAg
ICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVM
TEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjaykpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKQEAgLTcyLDE0ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2V0RXZh
bEVudHJ5cG9pbnQoVk0mIHZtLCBDbwogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
aykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAg
ICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
dm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAg
ICAgICAgICAgICB2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkp
LAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcg
RGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAor
ICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCkp
LAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
QEAgLTg3LDE0ICsxMjksMjggQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0m
IHZtLAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtMTAyLDE0ICsxNTgsMjggQEAg
c3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoVgogI2lmIEVOQUJMRShKSVQp
CiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIo
bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAor
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDkgKzM3Myw5IEBA
IHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgIk9TUiBlbnRyeSIsICgiaW4gcHJvbG9ndWUiKSk7CiAgICAg
CiAgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCi0gICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFT
U0VSVChraW5kID09IEFyaXR5Q2hlY2spOwotICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRk
cmVzcygpLCAwKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5h
ZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgMCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlw
ZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IGNoYXIqLCBFbnRyeUtpbmQpCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJp
dHkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
CiAKQEAgLTEzMDYsMTIgKzEzMDYsMTIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRV
cENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVudHJ5UG9pbnRU
eXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAg
ICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlw
ZSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCEhY29kZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDEwICs1MSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVu
dHJ5CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCitlbnVtIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgeyBDcmVhdGVS
ZWdpc3RlckVudHJ5LCBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSB9OworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZNKiB2bSwgdm9pZCAoKnRh
cmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kLCBTaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5
IHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgPSBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSkKIHsK
ICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9PSBDcmVhdGVSZWdpc3RlckVudHJ5
KQorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7
CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0
byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKQEAgLTYzLDI0ICs3Miw0NCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdl
bmVyYXRlVGh1CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTExJbnQg
JXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihW
TSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgImZ1
bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwiLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dl
bmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZt
LCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwiKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBjb25zdHJ1Y3QiLCBDcmVhdGVSZWdpc3Rl
ckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjb25z
dHJ1Y3QiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIGNhbGwiKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHJlZ2lz
dGVyIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0Iik7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9u
IGZvciBzdGFjayBhcmdzIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENv
ZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
ImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIiwg
Q3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rp
b24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklW
QVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50IHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0q
KTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01v
ZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJpdHlDaGVja01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGVudW0gQXJpdHlDaGVja01vZGUgeworICAgIFJlZ2lzdGVyRW50cnksCiAg
ICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLAogICAgIE11c3RDaGVja0FyaXR5CiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAko
cmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2ppdENvZGVGb3JD
YWxsID0gbnVsbHB0cjsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBudWxscHRyOwotICAg
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKKyAg
ICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAjZW5kaWYKICAgICBt
X251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAg
IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxF
RDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJh
c2UuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbERh
dGEuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgi
CiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNs
dWRlICJKSVRFbnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE0NSw0NyArMTQ1
LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1
Y3QoKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnRG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBBcml0eUNoZWNrTW9kZSBhcml0eSkKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKICAgICB7CiAgICAgICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5
IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAgICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50
IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJl
Y3RseSBpbgogICAgICAgICAvLyBtYWNoaW5lIGNvZGUuCi0gICAgICAgIGlmIChhcml0eSA9PSBN
dXN0Q2hlY2tBcml0eSkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAg
ICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBy
ZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JDYWxsLmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHJlc3VsdCA9IG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5lbnRyeUZvcihlbnRyeVR5cGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAgICAgICAgICAg
IGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGFyaXR5KTsKLSAgICAg
ICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgICAgICAvLyBDYWNoZSB0
aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZpcnR1YWwgY2FsbCBv
cHRpbWl6YXRpb25zLgotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1
Y3RXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NG
b3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMg
bmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlvbnMuCisgICAg
ICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAg
ICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAg
ICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVENvZGVXaXRoQXJp
dHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFz
ZSwgbV9qaXRFbnRyaWVzRm9yQ2FsbCkgKyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZv
cihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNvbnN0cnVjdCkgKyBKSVRFbnRy
eVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yMzMsOCArMjI4LDggQEAgcHJvdGVjdGVkOgogICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsK
ICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRzIG1f
aml0RW50cmllc0ZvckNhbGw7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRyaWVzRm9yQ29u
c3RydWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZFRoaXNObwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGFyZ2V0
RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZv
ckNhbGwoKSkgewogICAgICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMg
YXJpdHkgZW50cnlwb2ludC4KLSAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2Rl
Rm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodGFy
Z2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENy
ZWF0aW9uKFZNCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIG1faml0Q29kZUZv
ckNhbGwgPSBjYWxsVGh1bms7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0
VGh1bms7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9y
Q2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwotICAgIG1faml0Q29kZUZvckNv
bnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9y
Q2FsbChNdXN0Q2hlY2tBcml0eSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZv
cihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNh
bGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1
Y3Quc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIG1faml0Q29kZUZvckNvbnN0
cnVjdC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKICAgICBtX25h
bWUgPSBuYW1lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUo
Vk0mIHYKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAg
ICBtX2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2st
PmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX2ppdEVudHJpZXNGb3JD
YWxsLmNsZWFyRW50cmllcygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gZ2Vu
ZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA6IE5VTV9Q
QVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlRm9y
Q29uc3RydWN0OgogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJs
b2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmNsZWFyRW50cmllcygpOwogICAg
ICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2Vu
ZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJ
TEVEOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODIsNiArMjgyLDcgQEAgQ29kZUJsb2Nr
KiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbQogCiBzdGF0aWMgdm9pZCBzZXR1cExMSW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CisgICAgY29kZUJsb2NrLT5zZXRQcmVm
ZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBMTEludDo6c2V0RW50cnlwb2ludCh2bSwgY29kZUJs
b2NrKTsKIH0KIApAQCAtMjg5LDYgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2
bSwgQ29kZUJsb2NrKiAKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIENvbXBpbGF0aW9uUmVzdWx0
IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0
U3VjY2VlZCk7CisgICAgY29kZUJsb2NrLT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSwxMCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNp
emUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9w
KHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjbGVhckNv
dW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2
ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7CiAg
ICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdU
YWJsZSk7CkBAIC00NzMsNyArNDc3LDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06OmVuc3VyZVNh
bXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogI2lmIEVO
QUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5z
aWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRvciB0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIHN3aXRjaCAo
aW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAtOTIwLDQgKzky
NCwzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291bnRlcnMoKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7IGkrKykKKyAg
ICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3VudGVycygpCit7
CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSArIGNv
dW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRhTG9n
KCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRv
dGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQmFzZWxpbmUg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEw
enUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRhdGFMb2dGKCIl
MTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxsKSk7CisgICAg
ZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERpcmVjdENhbGwp
KTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJGb3Io
UG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBz
bG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAgIGRhdGFMb2dG
KCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NOb0Fy
aXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50
ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBh
cmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJlZ0Fy
Z3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNrXG4i
LCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFyaXR5
IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWlyZWQpKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYgKzQyNSwxNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAg
ICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHViKEpJVEVudHJ5
R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0
RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENhbGxUaHVua0Vu
dHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+
aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0czsKICAgICAKQEAgLTU2Miw2ICs1NzIsNTAgQEAgcHVibGljOgogICAgIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJlbnRKU0xvY2sg
bV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAgZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAgICAg
ICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERGR0NhbGxlciwKKyAgICAgICAgRlRMQ2FsbGVy
LAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAgICAgVGFpbENhbGwsCisgICAgICAgIENhbGxF
dmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAgICAgICBQb2x5bW9ycGhpY0NhbGwsCisgICAg
ICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0dWFsU2xvd0NhbGwsCisgICAgICAgIFJlZ0Fy
Z3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NOb0FyaXR5LAorICAgICAgICBSZWdBcmdzRXh0
cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAgICAgICAgU3RhY2tBcmdzQXJpdHksCisgICAg
ICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAgICAgTnVtYmVyVk1Db3VudGVyCisgICAgfTsK
KworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBzaXplX3QgbV9jb3VudGVyc1tOdW1iZXJW
TUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNvdW50ZXJzKCk7CisKKyAgICBzaXplX3QqIGFk
ZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fY291bnRlcnNbY291bnRlclR5cGVdOworICAg
IH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisg
ICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jb3VudGVyc1tjb3Vu
dGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291bnRl
cnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+
IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBBTFdBWVNfSU5MSU5FIEhhc093blByb3BlcnR5
Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5Q2Fj
aGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0
eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsMTcgQEAKICNk
ZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ0FMTEVSX1NQSUxM
U19DQUxMRUUgMAorI2RlZmluZSBFTkFCTEVfQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCAwCisjZGVm
aW5lIEVOQUJMRV9TVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHIDAKKyNkZWZpbmUgRU5BQkxF
X1NUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRyAwCisjZGVmaW5lIEVOQUJMRV9WTV9DT1VO
VEVSUyAwCisjZGVmaW5lIEVOQUJMRV9CQVNFTElORV9SRUdJU1RFUl9BUkdVTUVOVF9DQUxMUyAw
CisKKyNpZiAhZGVmaW5lZChVU0VfUkVHSVNURVJfQVJHVU1FTlRTKSAmJiBFTkFCTEUoSklUKSAm
JiBVU0UoSlNWQUxVRTY0KSAmJiAoT1MoREFSV0lOKSB8fCBPUyhVTklYKSkKKyNkZWZpbmUgVVNF
X1JFR0lTVEVSX0FSR1VNRU5UUyAxCisjZW5kaWYKKwogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdv
cmsgb24gMzItYml0IHBsYXRmb3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQg
dXMgdG8gZW5hYmxlIGl0LiAqLwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjdW5kZWYgRU5BQkxF
X0ZUTF9KSVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296614</attachid>
            <date>2016-12-08 19:12:38 -0800</date>
            <delta_ts>2016-12-08 19:43:09 -0800</delta_ts>
            <desc>Fix remaining include typos</desc>
            <filename>reg-calls-wip185.patch</filename>
            <type>text/plain</type>
            <size>340869</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQ3LDYgKzEzNDcsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeVBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MTIsNiArMzcxMyw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5UG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU1Myw2ICs1NTU1LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03Njk2LDYgKzc2OTksNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5UG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAg
ICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgICAg
IGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4
IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFzU2VlbkNsb3N1cmUo
ZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9hbGxvd1N0dWJzKHRy
dWUpCisgICAgLCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cyhmYWxzZSkKKyAg
ICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFyZ3VtZW50c0xv
Y2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKICAgICAsIG1fY2Fs
bFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2lu
Y2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
TGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxvY2s7IH0KICAgICB2
b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHZvaWQgc2V0
VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewor
ICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8fCAoYXJndW1lbnRz
TG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBl
OworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFy
Z3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKICAg
ICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1LDYgKzI3OSwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlw
ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRQcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMoKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMg
PSB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50
c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIGFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4TnVt
QXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1bWVudHM7CkBA
IC0zMzksNiArMzYzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNsb3N1cmUgOiAx
OwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAx
OworICAgIGJvb2wgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMgOiAxOworICAg
IHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWdu
ZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4
MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBt
X2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3Ro
ZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9pc1N0cmljdE1vZGUob3RoZXIubV9pc1N0cmlj
dE1vZGUpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fY29k
ZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci5tX3Zt
LCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1faGFzRGVidWdnZXJT
dGF0ZW1lbnQoZmFsc2UpCkBAIC0xOTAyLDYgKzE5MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFs
c2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0
b3IoKSkKICAgICAsIG1faXNTdHJpY3RNb2RlKHVubGlua2VkQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNlKQogICAgICwgbV9jb2Rl
VHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
KG1fZ2xvYmFsT2JqZWN0LT52bSgpLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jaykKICAgICAsIG1f
aGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICsz
NjksMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpCisgICAg
eworICAgICAgICBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAg
Ym9vbCBwcmVmZXJzU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzOworICAgIH0KKwogICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb2RlVHlwZT4obV9j
b2RlVHlwZSk7CkBAIC04NDUsNiArODU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNCZWVu
Q29tcGlsZWRXaXRoRlRMIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7IC8vIENvZGVUeXBlCiAKICAgICAv
LyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBi
ZSBwcml2YXRlIGlmIGl0IHdhc24ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8t
PmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpD
YWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxv
YWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25l
OwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRoYXQgdGhlIGdldHRl
ci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVn
VDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fcmFyZURh
dGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldEpJ
VENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFj
a0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0
b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBl
ID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVh
ciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9k
ZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBj
YXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBz
aG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBp
dCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5k
aWYKICAgICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlz
OwogICAgIFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2ODcsMjAgKzM2ODcsNjggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9m
IGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAg
Ly8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkg
ewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0g
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0
LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0
T0sgPSB0cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9u
dW1Bcmd1bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVz
aXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9k
ZXMsCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5v
ZGVzIGFuZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhl
IHJlbWFpbmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUg
ZXhpdCBwcm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNp
bmNlCisgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4g
dGhvdWdoIHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAg
ICAgLy8gZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9y
ZSB3ZSB3YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBT
ZXRMb2NhbCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAg
ICAvLyBXZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50
IHRvIHRoZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAg
IHVuc2lnbmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMs
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZl
Y3RvcjxOb2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0
QXJndW1lbnRSZWdpc3Rlck5vZGVzOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1
bWVudFJlZ2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAg
ICAgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1
bWVudCkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50
J3MgZm9yIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRB
cmd1bWVudFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQs
IE9wSW5mbyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3Vt
ZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAg
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQg
aXMgbm93IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisg
ICAgICAgIC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRS
ZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzW2ld
OworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9
IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0
ZXItPnNldFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3Vt
ZW50UmVnaXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkg
U2V0QXJndW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwg
T3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3Vt
ZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3Rh
Y2tbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEwLDggKzQ4NTgsMTAgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhl
cmUgc2luY2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1l
bnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAg
ICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdz
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2Rl
OjpUYWlsKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZv
ciBvdXIgYXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAg
ICAgICAvLyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFu
ZCBrZXB0IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3Ry
dWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNh
bGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYg
dGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVy
IGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAg
ICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3
YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQg
Y2xlYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDE0ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3Ig
dGhyZWFkZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQg
dmFyaWFibGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2lj
IGJsb2NrLgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8v
IFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAg
ICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9j
YWwsIFBoaSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1l
bnQuCisgICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBt
YXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgLy8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0
aGUgdmFyaWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1
c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhp
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2Nh
bHMgYW5kCi0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRo
ZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQg
bWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1
bWVudFJlZ2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJn
dW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAg
ICAvLyBpbiB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dl
ZCBieSBQaGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisg
ICAgICAgICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAg
ICAgICAgICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRo
YXQgdGhlIHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRv
bUxvY2FsIGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlm
CiAgICAgICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9s
bG93ZWQgYnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAg
ICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUg
bWFjaGluZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxk
IGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhl
IGFyZ3VtZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIg
Zm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTsp
Ci0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1l
bnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1h
bGx5LCBhIFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRo
ZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVu
dCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LAorICAgICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNl
ZW1lZCBsaWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5k
S2luZCBvcGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAg
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFy
Z3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgpAQCAtNDcwLDcgKzQ3MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAg
IC8vIERGRyBiYWNrZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvY2FscyB0aGF0IHRoaXMgcmVhZHMg
YXJlIGZsdXNoZWQuIEZUTCBiYWNrZW5kIGNhbiBoYW5kbGUgdGhvc2UKICAgICAgICAgLy8gbG9j
YWxzIGJlaW5nIHByb21vdGVkLgotICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSkKKyAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkgJiYgIW5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZWFkKFN0YWNrKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGl0J3MgcGhhbnRvbSwgaXQgc3RpbGwgaGFz
IHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4ndCBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIuCkBA
IC01NTksMTEgKzU2MCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgogICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAg
ICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAg
ICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGFy
ZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRl
KFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0R2V0dGVyOgogICAg
ICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVyZVJlZ2lzdHJhdGlv
blJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSB7IEJlZm9y
ZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252ZXJnZWQgfTsKIAor
ZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRpbWl6ZUFyZ3VtZW50
Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVzY3JpYmVzIHRoZSBm
b3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4uCiBlbnVtIEdyYXBo
Rm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNpYyBibG9ja3MgbWF5
IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAg
ICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2spOworICAgICAgICBj
bGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpOwogCiAgICAgICAg
IC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjoKICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblBy
b2xvZ3VlOgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblRhaWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDgg
KzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIC8vIG1h
a2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9y
KTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkK
ICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0
ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzg2LDYgKzE3ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIEdldENhbGxlZToK
KyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3JtYXQpOwogICAgIH0K
KworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJf
dCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9ICBEYXRh
Rm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAgICBtX3VzZUNv
dW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1h
dDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOworICAgICAgICBtX2Nh
bkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAgIG1fYm9ybkZvck9T
UiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJU
KG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBp
bml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk0LDcgKzI5NCw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFu
dHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChk
YXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQotICAgIEFTU0VSVChub2RlLT5oYXNW
YXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpID09IG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpKTsK
ICAgICBpZiAobm9kZS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkgewogICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnRyeUdldFZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhKSB7CkBAIC0z
NzMsNiArMzcyLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS0+Y2FzZXNbaV0udmFs
dWUsIGNvbnRleHQpLCAiOiIsIGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgImRlZmF1bHQ6IiwgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgIH0KKyAgICBp
ZiAobm9kZS0+aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCksICIoIiwgR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSwgIikiKTsKICAgICBD
bG9iYmVyU2V0IHJlYWRzOwogICAgIENsb2JiZXJTZXQgd3JpdGVzOwogICAgIGFkZFJlYWRzQW5k
V3JpdGVzKCp0aGlzLCBub2RlLCByZWFkcywgd3JpdGVzKTsKQEAgLTM5Niw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIldhc0hvaXN0ZWQiKTsKICAgICBvdXQucHJpbnQoIikiKTsKIAotICAgIGlmIChu
b2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKKyAgICBpZiAoKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9wKCkg
PT0gR2V0QXJndW1lbnRSZWdpc3RlcikgJiYgbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRh
KCkpCiAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChu
b2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAgICAgZWxz
ZSBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgb3V0LnByaW50KCIgIHBy
ZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpKTsK
QEAgLTUwNiw4ICs1MDcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBE
dW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRl
LCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0
aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsK
ICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZv
cm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQot
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyks
ICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBj
aGVja2luZzogIiwgbGlzdER1bXAobV9hcmd1bWVudHNGb3JDaGVja2luZyksICJcbiIpOworICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIG9uIHN0YWNrOiAiLCBsaXN0RHVtcChtX2FyZ3Vt
ZW50c09uU3RhY2spLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAog
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTE2MjAsMTMgKzE2MjMsMTQgQEAgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICBpZiAoIWN1cnJl
bnROb2RlIHx8IG5vZGUtPm9yaWdpbiAhPSBjdXJyZW50Tm9kZS0+b3JpZ2luKSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFj
aygqdGhpcykpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvRG86IE5lZWQgYSBiZXR0ZXIgdGVz
dAorICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJvZmlsZSogewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5N
YWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFu
ZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxv
Y2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhp
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51
c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC04Nzgs
OSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9z
dG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRo
ZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2Rl
IGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXli
ZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBu
b2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lz
dGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRo
ZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2Vw
dCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBG
bHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdl
dFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sg
dGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFu
ZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMs
MTEgKzkwMywxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRo
QWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8g
dGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVu
dHM7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c09uU3RhY2s7CisgICAgVmVjdG9y
PE5vZGUqLCA4PiBtX2FyZ3VtZW50c0ZvckNoZWNraW5nOwogICAgIAogICAgIC8vIEluIENQUywg
dGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxh
dGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJn
dW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNz
RGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1
bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKQEAgLTk1NCw2ICs5NTUsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5p
ZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6Oklu
aXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVk
dWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGlt
aXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAg
ICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07
CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTks
MTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAK
LXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1
cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5l
ZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUg
cHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSds
bCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZp
Y2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9u
IHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8g
Ym90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24g
aGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0K
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAg
ICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQg
PSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5m
bzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBG
dW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93
Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlv
bk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVj
b3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBp
bmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGws
IGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJl
Y29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5z
bG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtE
aXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24o
KSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3Nw
ZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAg
ICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGlu
IHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2Rl
QmxvY2spOwogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOworCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCBy
ZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwg
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpKTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAg
ICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93
UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCks
IFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYs
MjQgKzQxNiw5MSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxvY2so
KS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxl
KCpsaW5rQnVmZmVyKTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOwor
I2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBv
aW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlG
b3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRp
b25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxh
biwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50
cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRD
b3VudCgpOworICAgIEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCBy
ZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgKyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0
cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAgZXh0
cmFSZWdpc3RlckFyZ3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFy
Z3VtZW50SW5kZXgtLSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50
c1tleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJl
Z2lzdGVyQXJndW1lbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRy
eS5hcHBlbmQoanVtcCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBs
YWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisK
KyAgICBMYWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCByZWdp
c3RlckNoZWNrQXJpdHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIo
QmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgICAg
ICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQor
ICAgIAorICAgIExhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51
bVBhcmFtZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJl
Z2lzdGVyRW50cnlOb0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVn
QXJnc05vQXJpdHkpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7Cisj
ZW5kaWYKKworICAgIExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKworICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlvbiA9
PT0KICAgICAvLyBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCB3aXRob3V0IHBlcmZvcm1p
bmcgYW4gYXJpdHkgY2hlY2suCiAgICAgLy8gSWYgd2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4gYXJp
dHkgY2hlY2sgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgbW92ZWQgdGhlIHJldHVybiBhZGRyZXNzLAog
ICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhp
cyk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisjaWYg
IUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBzdG9yZVB0cihhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjZW5k
aWYKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgc3RvcmUzMihhcmdD
b3VudFJlZywgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisjZW5k
aWYKKworICAgIExhYmVsIGZyb21TdGFja0VudHJ5KHRoaXMpOworI2VuZGlmCisgICAgCisgICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRp
b25BbmRFeGl0KCkgLSAxKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwotICAgIEp1bXAgc3RhY2tPdmVyZmxv
dyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRT
dGFja0xpbWl0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4
ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBKdW1wIHN0
YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRy
ZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAKICAgICAvLyBN
b3ZlIHRoZSBzdGFjayBwb2ludGVyIGRvd24gdG8gYWNjb21tb2RhdGUgbG9jYWxzCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CkBAIC00NTIsMjggKzUyOSwxMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICBtX3NwZWN1bGF0aXZlLT5j
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKworICAgIEp1bXBMaXN0IGFyaXR5
T0s7CiAgICAgCi0gICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRv
ZXMgbm90IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAvLyBoYXZl
IGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2lu
dCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQotICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVj
a2VkKS4KLSAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nhcnks
IHdlIGVudGVyIGhlcmUuCi0gICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGZyb20gYSBjdGkgY2Fs
bCB0byBhIERGRyBzdHlsZSBvcGVyYXRpb24gKG5vcm1hbCBDIGNhbGxpbmcgY29udmVudGlvbnMp
LgotICAgIG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGp1bXAocmVnaXN0
ZXJBcmdzQ2hlY2tBcml0eSk7CisKKyAgICBKdW1wTGlzdCByZWdpc3RlckFyaXR5TmVlZHNGaXh1
cDsKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMpIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7Cisg
ICAgICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmFwcGVuZChicmFuY2gzMihCZWxvdywgYXJn
Q291bnRSZWcsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOwor
CisgICAgICAgIC8vIFdlIGhhdmUgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzLgorCisgICAgICAg
IC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0
aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgLy8gaGF2ZSBiZWVu
IHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hl
cmUgd2UgY2FuIHN0YXRpY2FsbHkKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG51
bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQpLgorICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nh
cnksIHdlIGVudGVyIGhlcmUuCisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0
cmFBcmdzID0gbGFiZWwoKTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpS
ZWdBcmdzRXh0cmEpOworCisgICAgICAgIC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1
bmN0aW9uCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKS5saW5rVG8obWFpbkVudHJ5LCB0
aGlzKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgICAgIH0KKyAgICAgICAganVtcChtYWluRW50cnkpOworICAgIH0KKworICAgIC8v
IEZhbGwgdGhyb3VnaAorICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAvLyBU
aGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRlci4KKyAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQgPSBzdGQ6Om1pbihudW1QYXJhbWV0ZXJzIC0g
MSwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisgICAgICAgIExh
YmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBsYWJlbCgpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8PSByZWdpc3RlckFyZ3VtZW50
Rml4dXBDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50
cnlwb2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAg
ICB9CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzQXJpdHkpOworCisg
ICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAubGluayh0aGlzKTsKKworICAgIGlmIChudW1QYXJh
bWV0ZXJzID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAg
ICAgIHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworCisgICAgc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJT
KQorICAgIEp1bXAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cCA9IGp1bXAoKTsKKyNlbmRpZgor
I2VuZGlmCisKKyAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICBp
bmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUo
Vk1fQ09VTlRFUlMpCisgICAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cC5saW5rKHRoaXMpOwor
I2VuZGlmCisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgbG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgYnJhbmNoMzIoQWJvdmVPckVxdWFs
LCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9y
aWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
aywgR1BSSW5mbzo6cmVnVDApOwogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBicmFuY2hUZXN0MzIoWmVybywgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAg
YXJpdHlPSy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIG1vdmUo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9j
YWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICBKdW1wIHRvRmlsbFJlZ2lzdGVycyA9IGp1bXAoKTsKKworICAg
IG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisKKyAgICBhcml0eU9LLmxpbmsodGhpcyk7CisgICAgdG9GaWxsUmVnaXN0ZXJzLmxpbmso
dGhpcyk7CisKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lz
dGVycworI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHKQorICAgIGxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lzdGVyRm9y
Q2FsbGVlKCkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5U
X1JFRykKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKKworICAgIGZv
ciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgIGxvYWQ2
NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKKyAg
ICBqdW1wKGZyb21TdGFja0VudHJ5KTsKKyNlbHNlCisgICAgYXJpdHlPSy5saW5rVG8oZnJvbUFy
aXR5Q2hlY2ssIHRoaXMpOwogICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOworI2VuZGlmCiAgICAg
CiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVu
U2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKQEAgLTUwMiwx
MCArNjYzLDM1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAg
ICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOwor
ICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRyeSk7Cisj
ZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNr
Tm90UmVxdWlyZWQsIG1haW5FbnRyeUNvZGVQdHIpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzKSk7CisgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjaykpOworCisgICAgZm9yICh1bnNpZ25l
ZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGVudHJ5OworICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAg
ICAgIGVudHJ5ID0gbWFpbkVudHJ5Q29kZVB0cjsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJB
cmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgIGVudHJ5
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2Fy
Z0NvdW50XSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgZW50cnlw
b2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJn
dW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisgICAgZW50cnlwb2ludHMuc2V0
RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRz
LnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3Rh
Y2tBcmdzV2l0aEFyaXR5Q2hlY2spKTsKIAogICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2sp
OworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2Vt
YmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsy
MTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0
Q2FsbFJlY29yZChjYWxsLCBzbG93UGF0aCwgaW5mbykpOwogICAgIH0KICAgICAKKyAgICB2b2lk
IGFkZEpTRGlyZWN0Q2FsbChDYWxsIGNhbGwsIENhbGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRo
LCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgeworICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBw
ZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGluZm8pKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0RpcmVjdFRhaWxDYWxsKFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlSnVtcCwgQ2FsbCBjYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBp
bmZvKQogICAgIHsKICAgICAgICAgbV9qc0RpcmVjdFRhaWxDYWxscy5hcHBlbmQoSlNEaXJlY3RU
YWlsQ2FsbFJlY29yZChwYXRjaGFibGVKdW1wLCBjYWxsLCBzbG93UGF0aCwgaW5mbykpOwpAQCAt
MjY3LDcgKzI3Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRKdW1wUGxh
Y2Vob2xkZXI7CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KLSAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZVNldHVwUmVnaXN0
ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKICAg
ICB2b2lkIGNvbXBpbGVCb2R5KCk7CkBAIC0zMTgsNyArMzIyLDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgSlNEaXJlY3RDYWxsUmVjb3JkKENh
bGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5m
bykKKyAgICAgICAgICAgIDogY2FsbChjYWxsKQorICAgICAgICAgICAgLCBzbG93Q2FsbChzbG93
Q2FsbCkKKyAgICAgICAgICAgICwgc2xvd1BhdGgoc2xvd1BhdGgpCisgICAgICAgICAgICAsIGlu
Zm8oaW5mbykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNTbG93Q2Fs
bCgpIHsgcmV0dXJuIHNsb3dDYWxsLm1fbGFiZWwuaXNTZXQoKTsgfQorCiAgICAgICAgIENhbGwg
Y2FsbDsKKyAgICAgICAgQ2FsbCBzbG93Q2FsbDsKICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CiAg
ICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwpAQCAtMzMxLDcgKzM0Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAsIGluZm8oaW5mbykKICAgICAgICAgewogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcDsKICAgICAgICAg
Q2FsbCBjYWxsOwogICAgICAgICBMYWJlbCBzbG93UGF0aDsKQEAgLTM1NSw3ICszNzAsMTIgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SW5mbz4gbV9leGNl
cHRpb25IYW5kbGVyT1NSRXhpdENhbGxTaXRlczsKICAgICAKICAgICBDYWxsIG1fY2FsbEFyaXR5
Rml4dXA7Ci0gICAgTGFiZWwgbV9hcml0eUNoZWNrOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJs
ZUV4dHJhQXJnczsKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOworICAg
IExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworI2VuZGlmCisgICAgTGFiZWwgbV9zdGFj
a0FyZ3NXaXRoQXJpdHlDaGVjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVKSVQ+
IG1fc3BlY3VsYXRpdmU7CiAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotSklURmluYWxp
emVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYg
cGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxM
aW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBKSVRFbnRyeVBvaW50cyYgZW50cnlwb2ludHMpCiAgICAg
OiBGaW5hbGl6ZXIocGxhbikKICAgICAsIG1faml0Q29kZShqaXRDb2RlKQogICAgICwgbV9saW5r
QnVmZmVyKFdURk1vdmUobGlua0J1ZmZlcikpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhB
cml0eUNoZWNrKQorICAgICwgbV9lbnRyeXBvaW50cyhlbnRyeXBvaW50cykKIHsKIH0KIApAQCAt
NTYsOSArNTcsOCBAQCBzaXplX3QgSklURmluYWxpemVyOjpjb2RlU2l6ZSgpCiAKIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiB7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJl
ZigKLSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNv
ZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxv
Y2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9E
RkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmco
Q29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSku
ZGF0YSgpKSk7CisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklURW50cnlQ
b2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKICAgICAKICAgICBtX3BsYW4u
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAgICAgCkBAIC02OSwxMCArNjksMTEg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplRnVuY3Rpb24oKQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dpdGhBcml0eUNoZWNr
LmlzRW1wdHlWYWx1ZSgpKTsKLSAgICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAotICAg
ICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIG1fd2l0aEFyaXR5Q2hlY2spOworICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVj
a0FyaXR5KS5pc0VtcHR5VmFsdWUoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVS
ZWYgPSBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSk7CisKKyAgICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRy
eVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwor
CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIAogICAg
IGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBw
dWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NS
ZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBKSVRFbnRyeVBv
aW50cyYpOwogICAgIHZpcnR1YWwgfkpJVEZpbmFsaXplcigpOwogICAgIAogICAgIHNpemVfdCBj
b2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7Ci0gICAgCisKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZm
ZXI7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklU
RW50cnlQb2ludHMgbV9lbnRyeXBvaW50czsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkg
JiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2Rl
ID09IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFt
ZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgcHVi
bGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxv
Y2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBu
b2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBT
ZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSB8fCBub2RlICE9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmbHVzaEFjY2Vzc0RhdGEpCkBAIC0x
MTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGluaXRpYWxBY2Nlc3NEYXRh
Lm9wZXJhbmQob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+b3AoKSAhPSBTZXRMb2NhbCk7IC8v
IFdlIHNob3VsZCBoYXZlIGluc2VydGVkIGEgRmx1c2ggYmVmb3JlIHRoaXMhCiAgICAgICAgICAg
ICBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgICAgICBpbml0aWFsQWNjZXNzTm9kZXMub3BlcmFuZChvcGVyYW5k
KSA9IG5vZGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDggQEAgTWluaWZpZWROb2RlIE1pbmlmaWVkTm9k
ZTo6ZnJvbU5vZGUoTm9kZQogICAgIHJlc3VsdC5tX29wID0gbm9kZS0+b3AoKTsKICAgICBpZiAo
aGFzQ29uc3RhbnQobm9kZS0+b3AoKSkpCiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBKU1ZhbHVl
OjplbmNvZGUobm9kZS0+YXNKU1ZhbHVlKCkpOworICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgcmVzdWx0Lm1faW5mbyA9IDA7CiAgICAgZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMg
fHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKICAgICAgICAgcmVzdWx0
Lm1faW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01p
bmlmaWVkTm9kZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQz
LDYgKzQzLDcgQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAogICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNz
RGF0YShHcmFwaCYgCiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAg
IGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNh
c2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIwOTUwMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MjgsNiArODI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdy
YXBoJik7CiAgICAgYm9vbCBhY2Nlc3Nlc1N0YWNrKEdyYXBoJiBncmFwaCkKICAgICB7CisgICAg
ICAgIGlmIChvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgcmV0dXJuIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShncmFwaCk7CiAg
ICAgfQogICAgIApAQCAtODQ2LDYgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxWYXJpYWJsZUFjY2Vzc0RhdGEqPigpLT5maW5kKCk7CiAgICAgfQogICAgIAor
ICAgIHZvaWQgc2V0VmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUpCisgICAgeworICAgICAgICBtX29wSW5mbyA9IHZhcmlhYmxlOworICAgIH0KKyAgICAKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5sb2NhbCgpOwpAQCAtMTIxNCw2ICsxMjIyLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8
dW5zaWduZWQ+KCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAhIXJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVz
dWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVy
bmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50
MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudFJlZ2lzdGVyLCBOb2RlUmVzdWx0SlMgLyogfCBO
b2RlTXVzdEdlbmVyYXRlICovKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJp
YWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5v
ZGVzLiAqL1wKICAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUg
UGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw2ICsxNDQsMTEgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsK
KyAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT5sb2NhbCgpKS5z
ZXROb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE1vdkhpbnQ6
IHsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT51bmxpbmtl
ZExvY2FsKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlw
ZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2lu
OwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJh
c2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhc2Vs
aW5lLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBv
bGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAg
ICAgICAgICAgaWYgKCFvbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2Fu
aXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgot
ICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsK
KyAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGFuIGFyZ3Vt
ZW50IG5vZGUgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgb2xkTm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF07CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKLSAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGU7CisgICAgICAgICAgICBOb2RlKiBzdGFja05vZGU7CisgICAgICAgICAgICBp
ZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBHZXRBcmd1bWVudFJlZ2lzdGVyLCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2Rl
ID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3Bl
Y05vbmUsIFNldExvY2FsLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGRO
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9k
ZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV3Um9v
dC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNl
dEFyZ3VtZW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5vZGU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZ1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09u
U3RhY2tbYXJndW1lbnRdID0gc3RhY2tOb2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChp
bnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2Nh
bCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTQsNyArMzE0LDkgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocgogICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICBwZXJmb3JtQ29uc3RhbnRGb2xk
aW5nKGRmZyk7CiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZGZnLm1fc3RyZW5ndGhS
ZWR1Y2VBcmd1bWVudHMgPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlczsKICAgICBjaGFuZ2VkIHw9
IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOworICAgIGNoYW5nZWQgfD0gcGVyZm9ybVN0
cmVuZ3RoUmVkdWN0aW9uKGRmZyk7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtTG9jYWxDU0UoZGZn
KTsKICAgICAKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VM
b2NhbENsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAvLyBB
bGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVs
eSByZWFkLgorICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3Qgc3RhY2sgYXJndW1l
bnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4g
MTspCiAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNGb3JDaGVja2luZ1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1f
Z3JhcGgpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1
ZXNbaV0pKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3Bl
Y0ludDUyT25seSkpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwg
U3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHBy
ZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJl
ZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5T
cGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtOTY4LDYgKzk3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgog
ICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAg
ICAgICAKLSAgICAgICAgLy8gQWxsIG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQg
aGVhZCBvZiByb290LiBOb3RlIHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCisgICAgICAgIC8v
IEFsbCBvZiB0aGUgc3RhY2sgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9v
dC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQogICAgICAgICAvLyBsb2NhbHMgYXJl
IGxpdmUgYXQgaGVhZCBvZiByb290LiBUaGlzIHNlZW1zIHdyb25nIGJ1dCBpc24ndC4gVGhpcyB3
aWxsIGhhcHBlbiBmb3IgZXhhbXBsZQogICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gYWNjZXNz
ZXMgY2xvc3VyZSB2YXJpYWJsZSAjNDIgZm9yIHNvbWUgb3RoZXIgZnVuY3Rpb24gYW5kIHdlIGVp
dGhlciBkb24ndAogICAgICAgICAvLyBoYXZlIHZhcmlhYmxlICM0MiBhdCBhbGwgb3Igd2UgaGF2
ZW4ndCBzZXQgaXQgYXQgcm9vdCwgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFzaWNhbGx5IHRoaXMK
QEAgLTE1Nyw4ICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyBGb3Ig
b3VyIHB1cnBvc2VzIGhlcmUsIHRoZSBpbXByZWNpc2lvbiBpbiB0aGUgYWxpYXNpbmcgaXMgaGFy
bWxlc3MuIEl0IGp1c3QgbWVhbnMgdGhhdCB3ZQogICAgICAgICAvLyBtYXkgbm90IGRvIGFzIG11
Y2ggUGhpIHBydW5pbmcgYXMgd2Ugd2FudGVkLgotICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2
ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1
bWVudChpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0SW5kZXgoMCku
bnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGkgPj0gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIC8v
IFN0YWNrIGFyZ3VtZW50cyBhcmUgbGl2ZSBhdCB0aGUgaGVhZCBvZiByb290LgorICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4KDAp
LmFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgLy8gTmV4dCBpZGVudGlmeSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIHNpbmsgUHV0U3RhY2tz
IHRvLiBXZSBzYXkgdGhhdCB0aGVyZSBpcyBhIGRlZmVycmVkCiAgICAgICAgIC8vIGZsdXNoIGlm
IHdlIGhhZCBhIFB1dFN0YWNrIHdpdGggYSBnaXZlbiBGbHVzaEZvcm1hdCBidXQgaXQgaGFzbid0
IGJlZW4gbWF0ZXJpYWxpemVkIHlldC4KQEAgLTM1OCw3ICszNjIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgotICAgICAg
ICAgICAgICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKG5vZGUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgc3NhQ2FsY3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYW5kVG9WYXJpYWJsZS5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2Nh
bCksCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKQEAgLTQ4MywxMSArNDg4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9w
ZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24n
dCBkZWxldGUgYXJndW1lbnQgUHV0U3RhY2tzLCBubyBuZWVkIHRvIGFkZCBvbmUgYmFjay4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250
YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0YWNrIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIs
IG5vZGUsICJcbiIpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9
IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbm9kZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtNTM4LDYg
KzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmc7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbmNyZXRlKGRlZmVycmVkLm9wZXJhbmQob3BlcmFu
ZCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFu
ZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1l
bnRzT25TdGFjay5jb250YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IHBoaU5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgR2V0U3RhY2sgdG8gZ2V0IHRoZSB2YWx1ZS4g
VGhpcyBtaWdodCBpbnRyb2R1Y2Ugc29tZSByZWR1bmRhbmN5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9
IG5hbWU7CiAgICAgICAgIG1fZGF0YVtpbmRleF0uc3BpbGxPcmRlciA9IHNwaWxsT3JkZXI7CiAg
ICAgfQorCiAgICAgdm9pZCByZWxlYXNlKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHJlbGVh
c2VBdEluZGV4KEJhbmtJbmZvOjp0b0luZGV4KHJlZykpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgKyttX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJU
KG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKICAgICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJ
RCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4
KHJlZyk7CkBAIC0yMzYsNiArMjM4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBt
X2JhbmstPmlzTG9ja2VkQXRJbmRleChtX2luZGV4KTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdW5sb2NrKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+
dW5sb2NrQXRJbmRleChtX2luZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9p
ZCByZWxlYXNlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNl
QXRJbmRleChtX2luZGV4KTsKQEAgLTI5OCw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2Nr
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5V
TV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAg
ICAgLS1tX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKKyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbmFtZUF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoaW5kZXggPCBOVU1fUkVHUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMgYW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBX
ZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRpbmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwg
YW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5k
IHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LiBXZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBieSBkaXJlY3RseQorICAgICAgICAvLyBhZGRpbmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1h
cHBpbmcgaGFzaCBtYXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFi
bG9jaykKQEAgLTgzLDE0ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25t
ZW50IGZvciBldmVyeSBsb2NhbC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5v
cCgpICE9IFNldEFyZ3VtZW50ICYmIG5vZGUtPm9wKCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxk
Tm9kZTsKKyAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKQEAgLTEwMSw5ICsxMDQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hcmd1bWVudEdldHRlcnMuYWRkKGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3
RGVmKAotICAgICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZh
cmlhYmxlKSwgYmxvY2ssIGNoaWxkTm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5uZXdEZWYoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZhcmlhYmxlKSwg
YmxvY2ssIGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKQEAg
LTI5NCw3ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9w
ZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBjaGlsZDsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSA9IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRHZXR0ZXJzLmNvbnRhaW5zKG5vZGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQobm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCktPmxvY2FsKSA9IG5vZGU7CkBAIC0zODIsMTcgKzM5MywyMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3Vt
ZW50c0ZvckNoZWNraW5nLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3Jh
cGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBu
b2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJn
dW1lbnRzRm9yQ2hlY2tpbmdbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5mb3JtYXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJl
Z2lzdGVyKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgIGZvcm1hdCA9IHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAg
ICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2Fz
ZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMyLDcg
KzkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CisgICAgaW5mby0+c2V0VXBDYWxs
KGNhbGxUeXBlLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9h
ZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZdICgpIHsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTEw
ODEsNyArMTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICB9CiAKLSAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihp
bmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC01NjE0
LDYgKzU2MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0Ogog
ICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDUyKEdQ
UlJlZyBzb3UKICAgICB1bmxvY2soZnByKTsKIH0KIAotR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZShFZGdlIGVkZ2UpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgZWRnZSwgR1BSUmVnIGdwclRvVXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKGdwclRvVXNlKTsKIAogICAgICAgICBpZiAoZWRn
ZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+
YXNKU1ZhbHVlKCk7CkBAIC0xMjAsNyArMTIwLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgdGhlIHJlZ2lzdGVyIGhhcyBhbHJlYWR5
IGJlZW4gbG9ja2VkIHdlIG5lZWQgdG8gdGFrZSBhIGNvcHkuCiAgICAgICAgIC8vIElmIG5vdCwg
d2UnbGwgemVybyBleHRlbmQgaW4gcGxhY2UsIHNvIG1hcmsgb24gdGhlIGluZm8gdGhhdCB0aGlz
IGlzIG5vdyB0eXBlIERhdGFGb3JtYXRJbnQzMiwgbm90IERhdGFGb3JtYXRKU0ludDMyLgogICAg
ICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1
bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdw
clRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBncHIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJU
b1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsK
ICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBn
cHIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC0x
MzgsNiArMTQzLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBpZiAoZ3ByVG9V
c2UgIT0gSW52YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC02
MzIsNiArNjQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKICAgICBDYWxsTGlu
a0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50
c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogICAgIGJvb2wgaXNWYXJhcmdzID0gZmFsc2U7CiAgICAg
Ym9vbCBpc0ZvcndhcmRWYXJhcmdzID0gZmFsc2U7CiAgICAgYm9vbCBpc1RhaWwgPSBmYWxzZTsK
QEAgLTcxNCw3ICs3MjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7Ci0gICAgCisgICAgc3RkOjpvcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4gdGFpbENhbGxlZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
Y2FsbGVlR1BSVGVtcG9yYXJ5OworCisgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpE
RkdDYWxsZXIpOworCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKICAg
ICBpZiAoaXNEaXJlY3QpIHsKQEAgLTczMyw2ICs3NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7CiAgICAgICAg
IHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gbV9qaXQuZ3JhcGgoKS5tX25leHRNYWNoaW5l
TG9jYWw7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkNh
bGxWYXJhcmdzKTsKICAgICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCkBAIC04
NDEsMTUgKzg1NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNUYWlsKSB7CisgICAgICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVl
RWRnZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7Ci0gICAgICAgICAgICBjYWxsZWVHUFIg
PSBjYWxsZWUuZ3ByKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBnZXQgdGhlIGEgc3BlY2lm
aWMgcmVnaXN0ZXIgZm9yIHRoZSBjYWxsZWUsIHNpbmNlIHRoYXQgd2lsbCBqdXN0IG1vdmUKKyAg
ICAgICAgICAgIC8vIGZyb20gYW55IGN1cnJlbnQgcmVnaXN0ZXIuICBXaGVuIHdlIHNpbGVudCBm
aWxsIGluIHRoZSBzbG93IHBhdGggd2UnbGwgZmlsbAorICAgICAgICAgICAgLy8gdGhlIG9yaWdp
bmFsIHJlZ2lzdGVyIGFuZCB3b24ndCBoYXZlIHRoZSBjYWxsZWUgaW4gdGhlIHJpZ2h0IHJlZ2lz
dGVyLgorICAgICAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGFsbG9jYXRlIGEgdGVtcCByZWdpc3Rl
ciBmb3IgdGhlIGNhbGxlZSBhbmQgbW92ZSBvdXJzZWx2ZXMuCisgICAgICAgICAgICB0YWlsQ2Fs
bGVlLmVtcGxhY2UodGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgdGFpbENh
bGxlZUdQUiA9IHRhaWxDYWxsZWUtPmdwcigpOworICAgICAgICAgICAgY2FsbGVlR1BSID0gYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsZWVHUFIg
IT0gY2FsbGVlR1BSKQorICAgICAgICAgICAgICAgIGNhbGxlZUdQUlRlbXBvcmFyeSA9IEdQUlRl
bXBvcmFyeSh0aGlzLCBjYWxsZWVHUFIpOwogICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKLSAg
ICAgICAgICAgICAgICBjYWxsZWUudXNlKCk7CisgICAgICAgICAgICAgICAgdGFpbENhbGxlZS0+
dXNlKCk7CiAKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRp
b25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVu
dHNJblJlZ2lzdGVycyA9IGFyZ3VtZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKICAgICAgICAg
ICAgIHNodWZmbGVEYXRhLnRhZ1R5cGVOdW1iZXIgPSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2ppdC5ncmFwaCgp
LmZyYW1lUmVnaXN0ZXJDb3VudCgpOwotICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0g
VmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIodGFpbENhbGxlZUdQ
UiwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MucmVzaXplKG51
bUFsbG9jYXRlZEFyZ3MpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC04NjQsNyArODkwLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFy
Z3NbaV0gPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKTsKIAogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1faml0LmNvZGVCbG9j
aygpKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5vcCgpID09
IENhbGxFdmFsKSB7CisgICAgICAgICAgICAvLyBDYWxsRXZhbCBpcyBoYW5kbGVkIHdpdGggdGhl
IGFyZ3VtZW50cyBpbiB0aGUgc3RhY2sKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxl
ZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CkBA
IC04NzgsMTUgKzkwNSw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3Nl
ZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpKSk7CisKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
Q2FsbEV2YWwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxh
dGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAg
ICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRy
ZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSArIGldOworICAgICAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGFyZyh0aGlzLCBhcmdFZGdlLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGFyZ0dQUiA9IGFyZy5ncHIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYXJn
R1BSID09IHBsYXRmb3JtQXJnR1BSIHx8IHBsYXRmb3JtQXJnR1BSID09IEludmFsaWRHUFJSZWcp
OworCisgICAgICAgICAgICAgICAgLy8gT25seSBmcmVlIHRoZSBub24tYXJndW1lbnQgcmVnaXN0
ZXJzIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09
IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgdXNlKGFyZ0VkZ2UpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxl
ZUFyZ3VtZW50U2xvdChpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBVc2UgdGhlIGFyZ3VtZW50IGVkZ2VzIGZvciBhcmd1bWVudHMgcGFzc2Vk
IGluIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFy
Z3M7IGktLSA+IDA7KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGFyZ0dQUiA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIGlmIChhcmdH
UFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSAr
IGldOworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgYXJnQ291bnQodGhp
cywgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICBHUFJS
ZWcgYXJnQ291bnRHUFIgPSBhcmdDb3VudC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBhcmdDb3VudEdQUik7CisjaWYgRU5BQkxFKENB
TExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50
R1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0g
YXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxhdGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKworICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9y
bUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRT
bG90KGkpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFy
YXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxl
ZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMs
IGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxl
ZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVlLnVzZSgpOwotICAgICAgICBtX2pp
dC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAg
ICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKQorI2VuZGlmCisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xv
dChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIH0KQEAgLTkxMyw3ICs5ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAgICAgfTsKICAgICAKICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbChjYWxsVHlwZSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
ZWVHUFIpOworICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNM
b2NhdGlvbiwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVHUFIpOwogCiAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBj
YWxsIG9wZXJhdGlvbkNhbGxFdmFsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSB0aGUg
cGFyYW1ldGVyIGFyZWEgaW4KQEAgLTk1NCw4ICsxMDI4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgaWYgKGlzVGFpbCkgewogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBEaXJlY3RUYWlsQ2FsbCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxsb3B0
KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxlZUdQ
UlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVKdW1wID0gbV9qaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKKworICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRpcmVjdENhbGwpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAg
ICAgICAgIApAQCAtOTcxLDYgKzEwNTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxpbmtEaXJl
Y3RDYWxsLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxs
b3B0KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxl
ZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOwogICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyht
YWluUGF0aCwgJm1faml0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CkBAIC05ODEsNiArMTA2Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBtYWluUGF0
aCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZt
X2ppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRl
SW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bCA9IG1faml0Lm5lYXJDYWxsKCk7CkBAIC05ODgsMjIgKzEwNzIsMjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGls
ZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgaWYgKGlzWDg2KCkp
Ci0gICAgICAgICAgICBtX2ppdC5wb3AoSklUQ29tcGlsZXI6OnNlbGVjdFNjcmF0Y2hHUFIoY2Fs
bGVlR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5wb3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGlu
IG5vbkFyZ0dQUjAKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5u
ZWFyQ2FsbCgpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENh
bGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAg
ICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2V0
UmVzdWx0QW5kUmVzZXRTdGFjaygpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkSlNEaXJl
Y3RDYWxsKGNhbGwsIHNsb3dQYXRoLCBjYWxsTGlua0luZm8pOworCisgICAgICAgIG1faml0LmFk
ZEpTRGlyZWN0Q2FsbChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoaXNUYWlsICYmIGNhbGxlZUdQ
UlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxl
ZS0+Z3ByKCksIGNhbGxlZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgbV9qaXQuZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7Ci0gICAgCisKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxs
ZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsK
IApAQCAtMTAyNSwyMyArMTExNCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgewogICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1ZmZsZURhdGEpOwot
ICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3Rh
Y2tBcmdzKQorICAgICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJl
Z3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7CiAgICAgICAgIGNh
bGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMAotCi0gICAgICAgIGlmIChpc1RhaWwpCi0gICAgICAgICAgICBtX2pp
dC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVy
IHdlIG1vdmVkIGNhbGxlZUdQUiB0byByZWdUMAotICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVGFp
bCkKKyAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZv
OjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgorICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIwCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAKLSAgICBpZiAoaXNUYWlsKQorICAgIGlmIChpc1RhaWwpIHsKKyAg
ICAgICAgdGFpbENhbGxlZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FsbGVlR1BSVGVtcG9y
YXJ5ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oSklURGlk
UmV0dXJuRnJvbVRhaWxDYWxsKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHNldFJl
c3VsdEFuZFJlc2V0U3RhY2soKTsKIAogICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xv
d0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5rSW5mbyk7CkBAIC00MTU0LDE4ICs0MjQyLDYx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2Ug
R2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgRU5B
QkxFKFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIEdQUlJlZyBjYWxsZWVS
ZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Js
b2NrLT5pbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZpcnR1YWxS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAg
ICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChjYWxsZWVSZWcpICYm
IG1fZ3Bycy5uYW1lKGNhbGxlZVJlZykgPT0gY2FsbGVlVmlydHVhbFJlZ2lzdGVyKQorICAgICAg
ICAgICAgICAgIGNhbGxlZVJlZ1dpdGhWYWx1ZSA9IGNhbGxlZVJlZzsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGNhbGxlZVJlZ1dpdGhWYWx1ZSA9PSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlUmVnV2l0aFZhbHVlLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgbV9ncHJzLnVubG9jayhjYWxsZWVSZWdXaXRoVmFsdWUpOworICAgICAgICAgICAgbV9n
cHJzLnJlbGVhc2UoY2FsbGVlUmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCByZXN1bHQuZ3ByKCkpOworI2VuZGlmCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRykK
KyAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgeworICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBHUFJSZWcg
YXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoYXJndW1lbnRDb3Vu
dFJlZykgJiYgbV9ncHJzLm5hbWUoYXJndW1lbnRDb3VudFJlZykgPT0gYXJndW1lbnRDb3VudFZp
cnR1YWxSZWdpc3RlcikKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
ID0gYXJndW1lbnRDb3VudFJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUp
OworICAgICAgICB9CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7Cisj
ZW5kaWYKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewogICAgICAgICBj
b21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1
bGF0aXZlSklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5
cGUpCiAgICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2pp
dC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQorICAgICwgbV9hcmd1bWVudEdlbmVyYXRp
b25JbmZvKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMpCiAgICAgLCBtX3N0YXRlKG1faml0LmdyYXBoKCkpCiAgICAgLCBtX2ludGVycHJl
dGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAgLCBtX3N0cmVhbSgmaml0LmppdENvZGUo
KS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZ2VuZXJhdGlvbklu
Zm9baV0gPSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2FyZ3VtZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYXJndW1lbnRH
ZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CiAgICAgbV9ncHJzID0gUmVnaXN0
ZXJCYW5rPEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7
CiB9CkBAIC0xMTk5LDYgKzEyMDIsMjYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRT
dHJpbmcoRGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zvcm1hdF07CiB9CiAKK3N0YXRpYyB2b2lk
IGR1bXBSZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8mIGluZm8sIHVuc2lnbmVkIGluZGV4KQor
eworICAgIGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDolcyVz
IiwgaW5kZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZv
cm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFM
b2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsKKyAgICBpZiAoaW5mby5yZWdpc3RlckZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIs
IGluZm8uZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICYmICEoaW5mby5yZWdp
c3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2VuZGlmCisgICAgICAgICkgeworICAgICAg
ICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZGF0YUxvZ0Yo
Ijolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7CisgICAgCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1
bXAoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVsKQpAQCAtMTIwOCwyNSArMTIz
MSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhCiAgICAgbV9n
cHJzLmR1bXAoKTsKICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7CiAgICAgbV9mcHJzLmR1bXAo
KTsKLSAgICBkYXRhTG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2ldOwotICAgICAgICBpZiAo
aW5mby5hbGl2ZSgpKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpLCBk
YXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmco
aW5mby5zcGlsbEZvcm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dG
KCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwotICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBkYXRhTG9nRigiOmZwciVkXG4i
LCBpbmZvLmZwcigpKTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9
IERhdGFGb3JtYXROb25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICYmICEo
aW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQotI2VuZGlmCi0gICAgICAgICAg
ICApIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3By
KCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICB9
CisKKyAgICBkYXRhTG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7
ICsraSkKKyAgICAgICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm9b
aV0sIGkpOworCisgICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lzdGVyczpcbiIpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytp
KQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9baV0sIGkpOworCiAg
ICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVsKTsKIH0KQEAg
LTE2NzcsNiArMTY5MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50Qmxv
Y2sKICAgICAKICAgICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9jay0+aW5kZXhdID0gbV9qaXQu
bGFiZWwoKTsKIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIGNoZWNrQXJndW1l
bnRUeXBlcygpOworCiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpIHsKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2tzIHRo
YXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAgICAgIC8vIEJ1dCB0byBi
ZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRoaXMgYmxvY2ssIGRy
b3AgaW4gYQpAQCAtMTY4NywxNSArMTcwMywzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3VycmVudEJsb2NrCiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZl
bnQ6OnJlc2V0KCkpOwogICAgIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIHNl
dHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworICAgIAogICAgIG1faml0LmppdEFzc2Vy
dEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgbV9qaXQuaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsK
ICAgICBtX2ppdC5qaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpOwogCiAgICAgbV9zdGF0ZS5y
ZXNldCgpOwogICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKG1fYmxvY2spOwotICAgIAorCiAg
ICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFu
ZEZvckluZGV4KGkpOworICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4ICYmIG9wZXJhbmRJc0Fy
Z3VtZW50KG9wZXJhbmQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG1fYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOworICAgICAgICAgICAgTm9k
ZSogYXJndW1lbnROb2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2Fy
Z3VtZW50XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFyZ3VtZW50Tm9kZSAmJiBh
cmd1bWVudE5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlLT5yZWZDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1bWVudFJlZ2lzdGVycydz
LgorICAgICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICAg
ICAgICAgIFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBN
aW5pZmllZElEKGFyZ3VtZW50Tm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dE5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNB
dEhlYWRbaV07CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBO
byBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzY0LDcgKzE3OTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBhYnN0cmFjdCBzdGF0ZSBpcyByZW1hdGVyaWFsaXplZCBmb3IgdGhlIG5l
eHQgbm9kZS4KICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhtX2luZGV4SW5C
bG9jayk7CiAgICAgfQotICAgIAorCiAgICAgLy8gUGVyZm9ybSB0aGUgbW9zdCBiYXNpYyB2ZXJp
ZmljYXRpb24gdGhhdCBjaGlsZHJlbiBoYXZlIGJlZW4gdXNlZCBjb3JyZWN0bHkuCiAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTE3ODIsMTMgKzE4
MTYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1f
b3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1l
bnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0Zv
ckNoZWNraW5nW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBh
cmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50
cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5v
cCgpID09IFNldEFyZ3VtZW50CisgICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2Nh
bCAmJiBub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAg
ICAgICAgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNT
RVJUKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0x
Nzk5LDIzICsxODM1LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBl
cygKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1
ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSk7Ci0gICAgICAgIAorICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlOwor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXIgPSBJ
bnZhbGlkR1BSUmVnOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgYXJndW1lbnRSZWdp
c3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKGFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAg
ICB9IGVsc2UKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgICBjYXNl
IEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBh
cmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGbHVzaGVkQm9vbGVhbjogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdp
c3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoYXJndW1l
bnRSZWdpc3RlciwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOiB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGFyZ3VtZW50UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTg0NiwxMCArMTkwMyw2MyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2lu
KCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JF
bnRyeSgpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIEJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKDApOworCisg
ICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgZmlyc3RCbG9j
ay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICBOb2RlKiBub2RlID0gZmlyc3RC
bG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnID0gR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50UmVnICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3Bycy5pc0xvY2tlZChhcmd1bWVudFJl
ZykpOworICAgICAgICAgICAgbV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoYXJndW1lbnRSZWcpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudFJlZywgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1lbnRSZWdpc3RlclZhbHVl
KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGFyZ3VtZW50UmVnLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdp
c3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdpc3RlcnMgbG9j
a2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudFJlZyk7CisjaWYgRU5BQkxF
KFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBHZXRDYWxsZWUpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3By
cy5pc0xvY2tlZChjYWxsZWVSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNp
ZmljKGNhbGxlZVJlZyk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGNhbGxlZVJlZywgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1l
bnRSZWdpc3RlclZhbHVlKG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGNhbGxlZVJlZywgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgIGluZm8ubm90aWNlT1NSQmlydGgoKm1fc3RyZWFtLCBub2Rl
LCB2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gRG9uJ3QgbGVhdmUgYXJndW1lbnQg
cmVnaXN0ZXJzIGxvY2tlZC4KKyAgICAgICAgICAgIG1fZ3Bycy51bmxvY2soY2FsbGVlUmVnKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19BUkdDT1VOVF9SRUcpCisgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpKTsKKyAgICAgICAg
ICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50Q291bnRSZWcpOworICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihhcmd1bWVudENvdW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJJbnRlZ2VyKTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1
ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVudENvdW50UmVnLCBEYXRhRm9ybWF0SW50
MzIpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdp
c3RlcnMgbG9ja2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVn
KTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoKQogewotICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOwotICAgIAogICAg
IEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSAwOyBibG9ja0luZGV4IDwgbV9qaXQuZ3JhcGgoKS5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7CiAgICAgICAgIG1faml0LnNldEZvckJsb2NrSW5kZXgoYmxvY2tJbmRleCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSUmVnIGZpbGxKU1ZhbHVlKEVkZ2UpOworICAg
IEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlLCBHUFJSZWcgZ3ByVG9Vc2UgPSBJbnZhbGlkR1BSUmVn
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYm9vbCBmaWxsSlNWYWx1ZShFZGdlLCBH
UFJSZWcmLCBHUFJSZWcmLCBGUFJSZWcmKTsKICNlbmRpZgpAQCAtMjAwLDYgKzIwMCw5IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKICAg
ICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZz
ZXQoKSk7CiAjZW5kaWYKKyAgICAgICAgaWYgKHNwZWNpZmljID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNwZWNpZmljKTsKICAgICAgICAgaWYg
KHNwaWxsTWUuaXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTMxNSw2ICsz
MTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQXJndW1lbnRUeXBlcygpOwogCisgICAg
dm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIHZvaWQgY2xlYXJH
ZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3aGVuIGdl
bmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUsNiArNDkwLDkgQEAgcHVibGljOgogICAgIC8v
IFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwo
VmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAgeworICAgICAgICBpZiAoc3BpbGxNZS5pc0Fy
Z3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAwKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI4NzIsNyArMjg4
MCwxMCBAQCBwdWJsaWM6CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm9Gcm9t
VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgp
XTsKKyAgICAgICAgaWYgKHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKV07CiAgICAg
fQogICAgIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQpA
QCAtMjg5NSw2ICsyOTA2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2Nr
OwogICAgIC8vIFZpcnR1YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1hcHMuCiAgICAgVmVjdG9y
PEdlbmVyYXRpb25JbmZvLCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAgICBWZWN0b3I8R2VuZXJh
dGlvbkluZm8sIDg+IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAgICBSZWdpc3RlckJhbms8
R1BSSW5mbz4gbV9ncHJzOwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZvPiBtX2ZwcnM7CiAKQEAg
LTI5OTMsNiArMzAwNSwyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgR1BSUmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAg
ICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVn
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpIHx8IHJl
Z1RvVXNlICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBncHJVc2VTcGVjaWZpYyhyZWdU
b1VzZSk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVPcGVyYW5kKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9lZGdlKQpAQCAtMzAyOSw2ICszMDU1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSk7CiAg
ICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CisgICAgR1BSUmVnIGdwclVzZVNw
ZWNpZmljKEdQUlJlZyByZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxp
ZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+
ZmlsbEpTVmFsdWUobV9lZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52
YWxpZDsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChsb2NhbC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5tX3N0cmVuZ3RoUmVkdWNl
QXJndW1lbnRzICE9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsgaS0tOykg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09IGxv
Y2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCwxNSArMTMwLDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMywgTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHNpemVvZihSZWdpc3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihpbnQz
Ml90KSkpKTsKICAgICBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgR1BS
SW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oLXN0YXRpY19jYXN0PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycykpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAotICAgIGppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BS
SW5mbzo6cmVnVDEpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Pigx
MDAwKSkpKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwogICAgIGpp
dC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24p
OwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50
IHJlZ2lzdGVycworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3Vu
dCgpOworICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmdDb3VudFJlZyk7CisgICAgCisgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAg
CisgICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsoJmppdCk7CisjZW5kaWYKKyAgICAKICAgICBqaXQu
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAg
ICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKLSAgICBqaXQuanVt
cChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5
IHRodW5rIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
cnVuKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUg
PT0gREZHTW9kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRMSklU
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICht
X2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDcgKzQ4OCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJs
b2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
OwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
LCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDEzIEBAIHZvaWQgVmFyaWFibGVFdmVu
dFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgaWYgKCFpbmRleCkgewogICAgICAgICB2YWx1ZVJl
Y292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tp
XSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIodmFsdWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFG
b3JtYXRKUyk7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUigKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6
OmRpc3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
KHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjEsNiAr
MTY2LDEzIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAg
ICAgICBNaW5pZmllZEdlbmVyYXRpb25JbmZvIGluZm87CiAgICAgICAgICAgICBpbmZvLnVwZGF0
ZShldmVudCk7CiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb3MuYWRkKGV2ZW50LmlkKCksIGlu
Zm8pOworICAgICAgICAgICAgTWluaWZpZWROb2RlKiBub2RlID0gZ3JhcGguYXQoZXZlbnQuaWQo
KSk7CisgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVn
aXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIg
PSBldmVudC5ncHIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IGpzRnVu
Y3Rpb25Bcmd1bWVudEZvckFyZ3VtZW50UmVnaXN0ZXIoZ3ByKTsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudCk7CisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChhcmd1
bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWxsOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24iKQogICAgIHsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoU2NvcmVCb2FyZCYgc2NvcmVCb2FyZCwgTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0LCBjYWxsIHVzZSBvbiBhbGwgb2YgdGhlIGN1
cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVuCisgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVh
bFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKKyAgICAgICAgLy8gb3Jk
ZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwgYW5kIGEKKyAgICAgICAg
Ly8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBiZSByZXVzZWQgZm9yIG5v
ZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
SWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgr
KykKKyAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNj
b3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gc2NvcmVCb2FyZC5hbGxvY2F0
ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
KyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRp
ZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZv
ciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9CisKICAgICBib29sIHJ1bigpCiAgICAgewogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFRocmVh
ZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBG
b3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJlcmVkIHZpcnR1YWwgcmVnaXN0ZXJzLgogICAgICAg
ICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZyZWUoKTsKICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgTm9kZXMgZmlyc3QgYXMgdGhlIHJl
Z2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5CisgICAgICAgICAgICAvLyB0byB0aGUgZnVuY3Rpb24g
YW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQgYmVmb3JlIGFueSB1c2UuCisgICAgICAgICAgICBp
ZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleEluQmxv
Y2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQs
IG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtNzMsMzIgKzExMCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJl
biwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZv
ciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKLSAgICAgICAgICAgICAgICAvLyBvcmRlciBz
byB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQgYQotICAgICAgICAgICAg
ICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZv
ciBub2RlLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1D
aGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVC
b2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAg
ICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVzZUNvdW50IGFydGlmaWNp
YWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAgICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3Vu
dCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG5vZGUpOworICAgICAgICAgICAgICAg
IGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRT
Y29wZToKICAgICBjYXNlIEdldENhbGxlZToKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBjYXNlIFRvTnVt
YmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAgSklU
Q29kZTo6fkpJVENvZGUoKQogICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29k
ZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAgIGRhdGFMb2coY29tbWEsIG1fcmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KIH0K
QEAgLTYwLDMxICs2MSwzMCBAQCB2b2lkIEpJVENvZGU6OmluaXRpYWxpemVCM0J5cHJvZHVjdHMo
c3RkCiAgICAgbV9iM0J5cHJvZHVjdHMgPSBXVEZNb3ZlKGJ5cHJvZHVjdHMpOwogfQogCi12b2lk
IEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyIGFkZHJlc3MpCit2b2lk
IEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoQ29kZVJlZiBlbnRyeXBvaW50VGh1
bmspCiB7Ci0gICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7CisgICAgbV9lbnRyeXBvaW50
VGh1bmsgPSBlbnRyeXBvaW50VGh1bms7CiB9CiAKLXZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFy
aXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkKK3ZvaWQgSklUQ29kZTo6c2V0
RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKIHsKLSAgICBtX2Fy
aXR5Q2hlY2tFbnRyeXBvaW50ID0gZW50cnlwb2ludDsKKyAgICBtX2VudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKHR5cGUsIGVudHJ5KTsKIH0KLQotSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrKQorICAgIAorSklUQ29kZTo6Q29k
ZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUpCiB7
Ci0gICAgc3dpdGNoIChhcml0eUNoZWNrKSB7Ci0gICAgY2FzZSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ6Ci0gICAgICAgIHJldHVybiBtX2FkZHJlc3NGb3JDYWxsOwotICAgIGNhc2UgTXVzdENoZWNr
QXJpdHk6Ci0gICAgICAgIHJldHVybiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50LmNvZGUoKTsKLSAg
ICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29kZVB0
cigpOworICAgIENvZGVQdHIgZW50cnkgPSBtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKGVudHJ5VHlw
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkpOworICAgIHJldHVybiBlbnRyeTsKIH0KIAog
dm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KQog
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2FkZHJlc3NGb3JDYWxsLmV4
ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRk
cmVzc0ZvckNhbGwoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxl
QWRkcmVzcygpKSArIG9mZnNldDsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZW5kaWYKIH0KIAogdm9pZCogSklUQ29kZTo6
ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIEpJVENvZGUoKTsKICAgICB+SklUQ29kZSgpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNz
Rm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9y
Q2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVz
c0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9m
KHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkBAIC01Myw5ICs1Myw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUIzQ29kZShDb2RlUmVmKTsKICAgICB2b2lkIGluaXRp
YWxpemVCM0J5cHJvZHVjdHMoc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVCeXByb2R1Y3RzPik7
Ci0gICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0cik7Ci0gICAgdm9pZCBp
bml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7Ci0gICAgCisgICAgdm9pZCBp
bml0aWFsaXplRW50cnlwb2ludFRodW5rKENvZGVSZWYpOworICAgIHZvaWQgc2V0RW50cnlGb3Io
RW50cnlQb2ludFR5cGUsIENvZGVQdHIpOworCiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMo
Y29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBvdmVycmlkZTsKIAogICAgIFJlZ2lzdGVyU2V0IGxp
dmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9j
ayosIENhbGxTaXRlSW5kZXgpIG92ZXJyaWRlOwpAQCAtNzcsNyArNzcsMTIgQEAgcHJpdmF0ZToK
ICAgICBDb2RlUHRyIG1fYWRkcmVzc0ZvckNhbGw7CiAgICAgQ29kZVJlZiBtX2IzQ29kZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IG1fYjNCeXByb2R1Y3RzOwot
ICAgIENvZGVSZWYgbV9hcml0eUNoZWNrRW50cnlwb2ludDsKKyAgICBDb2RlUmVmIG1fZW50cnlw
b2ludFRodW5rOworICAgIEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2ludHM7CisgICAgQ29kZVB0
ciBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludDsKKyAgICBDb2RlUHRy
IG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3N0YWNr
QXJnc0FyaXR5T0tFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NDaGVja0FyaXR5
RW50cnlwb2ludDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxp
emVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICpiM0NvZGVMaW5rQnVm
ZmVyLAogICAgICAgICAgICAgKCJGVEwgQjMgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgp
KSkpOwogCi0gICAgaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KAorICAg
IGppdENvZGUtPmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoCiAgICAgICAgIEZJTkFMSVpFX0NP
REVfSUYoCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZl
ciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggQjMgZ2Vu
ZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFu
LmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDE0ICsxMjcsMTEwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAgc3dp
dGNoIChncmFwaC5tX3BsYW4ubW9kZSkgewogICAgIGNhc2UgRlRMTW9kZTogewotICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7Ci0gICAgCi0gICAgICAgIGppdC5s
b2FkMzIoCi0gICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmlsbFJlZ2lzdGVyc0FuZENvbnRp
bnVlTWFpblBhdGg7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgdG9NYWluUGF0aDsK
KworICAgICAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4UmVnaXN0
ZXJBcmd1bWVudENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycywgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVn
ID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKworICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDFdOworCisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVu
Y3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7IGFyZ0luZGV4
ID49IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4LS0pIHsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4ICsgMV0gPSBqaXQubGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJl
Z0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29udGludWVUb0Fy
aXR5Rml4dXA7CisgICAgICAgIAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJn
c0NoZWNrQXJpdHlFbnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisgICAgICAgIGppdC5sb2FkMzIoZnJhbWUud2l0
aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgY29udGludWVUb0FyaXR5Rml4dXAuYXBwZW5kKGpp
dC5icmFuY2gzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJl
Z1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGNvbnRpbnVlVG9TdGFja0FyaXR5T2sgPSBqaXQuanVtcCgpOworI2VuZGlmCisgICAgICAg
IAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGpp
dC5sYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlN0YWNrQXJn
c0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVUb1N0
YWNrQXJpdHlPay5saW5rKCZqaXQpOworI2VuZGlmCisKKyAgICAgICAgLy8gTG9hZCBhcmd1bWVu
dCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAgICAgLy8gUmVnQ0MgVG9kbzog
V291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UsIGJ1dCB3ZSBjdXJyZW50bHkgY2FuJ3QganVt
cCBpbnRvIHRoZSBCMworICAgICAgICAvLyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBw
b2ludCBhZnRlciB3aGVyZSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgdG8gdGhlIHN0YWNrLgor
I2lmIDEKKyAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwor
ICAgICAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKSk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgr
KykKKyAgICAgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJv
bG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0lu
ZGV4KSk7CisgICAgICAgIAorICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmdzQ2hlY2tB
cml0eUVudHJ5ID0gaml0LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwg
Vk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGNo
ZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50czsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVy
cyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bnVtUGFyYW1ldGVycykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4
dXAuYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJl
bG93LCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKyAgICAgICAgICAgIC8vICBGYWxsIHRocm91Z2ggdG8gdGhlICJleHRyYSByZWdpc3Rl
ciBhcml0eSIgY2FzZS4KKworICAgICAgICAgICAgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1l
bnRzID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0
ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleCA8IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAg
ICAgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
cmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJh
bWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJ
bmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0V4dHJhKTsKKyAgICAgICAgICAg
IHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAg
ICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAuYXBwZW5kKGppdC5qdW1wKCkpOworI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgICAgICAvLyAg
VGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDE7IGFyZ0luZGV4IDwgbnVtUGFyYW1ldGVycyAmJiBhcmdJbmRleCA8PSBtYXhSZWdpc3Rl
ckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeXBvaW50c1thcmdJbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZp
eHVwOworICAgICAgICB9CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NBcml0eSk7CisjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAg
ICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShtYXhSZWdp
c3RlckFyZ3VtZW50Q291bnQpOworCisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmxpbmso
JmppdCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6QXJpdHlGaXh1cFJl
cXVpcmVkKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LnRvcENhbGxGcmFtZSk7CkBAIC0xNTUsMTEgKzI1MSwyMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogCiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6
Olplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5k
Q29udGludWVNYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUZpeHVwID0gaml0
LmNhbGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1h
aW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNB
bmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVn
aXN0ZXJzQW5kQ29udGludWVNYWluUGF0aC5saW5rVG8oc3RhY2tBcmdzQXJpdHlPS0VudHJ5LCAm
aml0KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCByZWdpc3RlckVudHJ5Tm9Bcml0eSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisgICAgICAgIHRvTWFpblBhdGgu
YXBwZW5kKGppdC5qdW1wKCkpOworI2VuZGlmCiAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkg
ewpAQCAtMTY5LDkgKzI3NCwzNSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBs
aW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
ayk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwog
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0u
Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRp
b25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwor
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKHRvTWFpblBhdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisKKyAgICAgICAg
c3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KSk7CisgICAgICAgIHN0
YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwg
bGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKIAotICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7Cisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFp
bkVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVudHJ5Tm9Bcml0eSk7Cisj
ZWxzZQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24p
KTsKKyNlbmRpZgorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIG1haW5FbnRyeSk7CisKKyAgICAgICAgaWYgKGNoZWNr
Rm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cy5pc1NldCgpKQorICAgICAgICAgICAgc3RhdGUuaml0
Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJn
c1Bvc3NpYmxlRXh0cmFBcmdzLCBtYWluRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJp
dHksIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KSk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAgICAgICAgICAgIGlmIChhcmdD
b3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbWFpbkVudHJ5
OworICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdD
b3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkpOworICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+
c2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRD
b3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtMTgxLDcgKzMxMiwyMSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgICAgICAvLyBwb2ludCB3ZSd2ZSBldmVuIGRvbmUgdGhlIHN0YWNrIGNoZWNrLiBCYXNpY2Fs
bHkgd2UganVzdCBoYXZlIHRvIG1ha2UgdGhlCiAgICAgICAgIC8vIGNhbGwgdG8gdGhlIEIzLWdl
bmVyYXRlZCBjb2RlLgogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0ID0gaml0Lmxh
YmVsKCk7CisKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyAgICAgICAg
Ly8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAg
ICAvLyBSZWdDQyBUb2RvOiBXb3VsZCBsaWtlIHRvIGVsaW1pbmF0ZSB0aGVzZSwgYnV0IHdlIGN1
cnJlbnRseSBjYW4ndCBqdW1wIGludG8gdGhlIEIzCisgICAgICAgIC8vIGNvbXBpbGVkIGNvZGUg
YXQgYW4gYXJiaXRyYXJ5IHBvaW50IGFmdGVyIHdoZXJlIHRoZSByZWdpc3RlcnMgYXJlIHN0b3Jl
ZCB0byB0aGUgc3RhY2suCisjaWYgMQorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgICAgICBq
aXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
ICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtMTkxLDcgKzMzNiw3IEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIH0KICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhtYWluUGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5p
dGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsx
OTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlw
ZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFz
ay0+a2V5KCkpOwogICAgICAgICAKKyAgICAgICAgLy8gU3RvcmUgb3V0IGNhbGxlZSBhbmQgYXJn
dW1lbnQgY291bnQgZm9yIHBvc3NpYmxlIE9TUiBleGl0LgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQ
SUxMU19DQUxMRUUpCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXJJbnQzMihhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKwogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCkBAIC0yNDcsMjAgKzI1
NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIENoZWNrIEFyZ3VtZW50cy4KICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkuY2xlYXIoKTsKICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2Nh
bHMgPSBPcGVyYW5kczxBdmFpbGFiaWxpdHk+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCks
IDApOworCisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnROb2RlczsKKyAgICAgICAg
VmVjdG9yPExWYWx1ZSwgOD4gYXJndW1lbnRWYWx1ZXM7CisKKyAgICAgICAgYXJndW1lbnROb2Rl
cy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIGFyZ3VtZW50
VmFsdWVzLnJlc2l6ZShjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKKworICAgICAgICBt
X2hpZ2hCbG9jayA9IG1fZ3JhcGguYmxvY2soMCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQotICAgICAgICAgICAgICAgIEF2
YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRy
dWUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50
c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hl
Y2tpbmdbaV07CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUg
anNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAg
IAorICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBudWxscHRyOworCiAgICAgICAgICAgICBp
ZiAobm9kZSkgewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3Bl
cmFuZCA9PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGluZUxvY2FsKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1l
bnQoaSkgPSBBdmFpbGFiaWxpdHkobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUg
PSBtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2Rl
LT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkpOworCisgICAgICAgICAgICAgICAgICAgIHNldEpT
VmFsdWUobm9kZSwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1
ZSwgb3BlcmFuZCkpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlID0gbV9vdXQubG9hZDY0
KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG5vZGUsIG5vZGUtPmhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpIHx8IG9wZXJhbmQgPT0gbm9k
ZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhhY2ssIGJ1dCBpdCdzIGFuIGVmZmVjdGl2ZSBv
bmUuIEl0IGFsbG93cyB1cyB0byBkbyBDU0Ugb24gdGhlCiAgICAgICAgICAgICAgICAgLy8gcHJp
bW9yZGlhbCBsb2FkIG9mIGFyZ3VtZW50cy4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIEdldExvY2Fs
IHRoYXQgZ290IHB1dCBpbgpAQCAtMjY4LDcgKzI5MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgLy8gc2hvdWxkIGhvbGQgdHJ1ZS4KICAgICAgICAgICAgICAgICBtX2xvYWRlZEFyZ3Vt
ZW50VmFsdWVzLmFkZChub2RlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXJndW1lbnROb2Rlc1tpXSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudFZhbHVlc1tp
XSA9IGpzVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBtX25vZGUgPSBudWxscHRyOworICAg
ICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwg
dHJ1ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudE5vZGVzW2ld
OwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gYXJndW1lbnRWYWx1ZXNb
aV07CisKICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSkg
ewogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbm9kZSwgaXNOb3RJbnQzMihqc1Zh
bHVlKSk7CkBAIC04MTAsNiArODQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVy
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRTY29wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDYgKzU0
MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyKHBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjb21waWxlR2V0QXJndW1lbnRSZWdpc3RlcigpCisgICAgeworICAgICAgICAvLyBXZSBtaWdo
dCBoYXZlIGFscmVhZHkgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIG5vZGUuCisgICAgICAgIGlmIChM
VmFsdWUgdmFsdWUgPSBtX2xvYWRlZEFyZ3VtZW50VmFsdWVzLmdldChtX25vZGUpKSB7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKG1fbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKICAgICB7CiAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
RnVuY3Rpb25fc2NvcGUpKTsKQEAgLTU4MDYsOSArNTg1NSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICAvLyB0aGUgY2FsbC4KICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50
czsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBHUFIw
IGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUKLSAg
ICAgICAgLy8gY2FsbGVlIHRvIGJlLgotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKSk7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBw
YXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxl
ZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykp
KTsKIAogICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1
YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNl
dEZyb21TUCA9CkBAIC01ODE2LDEwICs1ODY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgfTsKIAorICAgICAgICBBcmd1bWVudHNM
b2NhdGlvbiBhcmdMb2NhdGlvbiA9IGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpOworICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVw
OjpyZWcoY2FsbGVlUmVnKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAg
ICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExT
X0FSR0NPVU5UKQogICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3Mp
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRP
ZmZzZXQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQot
ICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNW
YWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoYXJndW1l
bnRzKTsKQEAgLTU4NDgsOSArNTkxMCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRM
Q2FsbGVyKTsKKwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRh
cmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRo
ID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVj
aywKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsK
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwpAQCAtNTg1OCwxMyArNTkyMiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgubGluaygmaml0KTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIGRv
bmUubGluaygmaml0KTsKIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXJnTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1wYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpKSwKQEAgLTU4NzMsNyArNTkzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNM
b2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93
Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01
OTE3LDIwICs1OTgxLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q29u
c3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogICAgICAgICAKLSAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUg
c2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVn
IGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKICAgICAgICAgaWYgKCFpc1RhaWwpIHsKICAgICAgICAgICAgIGF1dG8gYWRkQXJn
dW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNl
dCkgewogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9CiAgICAgICAgICAg
ICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3Rl
cnMpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAKKwor
ICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxM
RUUpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOworI2VuZGlmCisgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwg
VmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lm
IEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQogICAgICAgICAgICAgYWRkQXJndW1lbnQo
bV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAg
YWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCi0gICAg
ICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5k
aWYKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBp
KSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0
ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwpAQCAtNTk3Miw2ICs2MDU0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdp
c3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAg
ICAgICAgICAgICAgdG9TYXZlLnNldChjYWxsZWVHUFIpOwogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC01OTkwLDcg
KzYwNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBt
YWluUGF0aCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAg
ICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAg
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDExLDcgKzYwOTgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwg
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6
RGlyZWN0VGFpbENhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBhcmd1
bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVj
dXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3Mp
OwpAQCAtNjAzNCw2ICs2MTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOwor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDQ1LDcgKzYxMzUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29u
c3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4
ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBp
ZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAt
NjA1NiwxMyArNjE0NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQucG9wKENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQ
UihjYWxsZWVHUFIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25MaW5rRGlyZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlk
R1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBp
biBub25BcmdHUFIwCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRM
aW5rVGFzaygKQEAgLTYwNzEsNiArNjE1OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIHNsb3dQYXRoTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
RGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCkBAIC02MTAyLDcg
KzYxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBh
cmd1bWVudHM7CiAKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpz
Q2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICBHUFJSZWcg
Y2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVl
UmVnKSkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kp
IHsKICAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGxldCB0aGUgc2h1ZmZsZXIgZG8gYm94
aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1cGVyIGNsZWFyIHRoYXQgdGhpcwpAQCAtNjEzNiw5
ICs2MjI4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc2h1ZmZsZURhdGE7CisgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRz
SW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2Fs
cyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwotICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86
OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZVJlZywgRGF0YUZvcm1hdEpTKTsKIAogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MuYXBwZW5kKHBhcmFtc1sxICsgaV0ucmVj
b3ZlcnlGb3JKU1ZhbHVlKCkpOwpAQCAtNjE0OSw3ICs2MjQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0
cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
R1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CkBAIC02
MTY3LDIwICs2MjYzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxl
cihqaXQsIHNodWZmbGVEYXRhKTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNl
dENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2Fs
bCgpOwogCiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5G
cm9tVGFpbENhbGwpOwogCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENh
bGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpLCBjb2RlT3JpZ2luLCBjYWxsZWVSZWcp
OwogCiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dENhbGxMb2NhdGlvbnMoCkBAIC02MjcwLDYgKzYzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAg
ICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJn
czsKIAogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTY0MTks
NyArNjUxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCF1c2VkUmVnaXN0ZXJzLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KQpAQCAtNjQyNyw3ICs2NTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5h
bFN0YWNrSGVpZ2h0KSwKQEAgLTY0MzYsNyArNjUzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMo
CkBAIC02NTM3LDExICs2NjMzLDE1IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNh
bGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJn
c0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKIAogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAgLTY3MDIsNyArNjgwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY3MTAsNyArNjgxMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBh
cmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWln
aHQpLApAQCAtNjcxOSw3ICs2ODE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY3ODgs
MTMgKzY4ODgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxFdmFsKTsKKwogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBh
dCBlbnRyeTogIiwgdmFsdWVzLCAiXG4iKTsKICAgICAKLSAgICBmb3IgKGludCBhcmd1bWVudCA9
IHZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTsp
IHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAg
IGlmIChhcmd1bWVudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBKU1ZhbHVlIHZhbHVlT25TdGFj
ayA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgp
KS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHJlY29uc3RydWN0ZWRWYWx1
ZSA9IHZhbHVlcy5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgIGlmICh2YWx1ZU9uU3RhY2sg
PT0gcmVjb25zdHJ1Y3RlZFZhbHVlIHx8ICFhcmd1bWVudCkKQEAgLTk5LDggKzEwMywxMiBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIGV4ZWMtPnNldENvZGVCbG9j
ayhlbnRyeUNvZGVCbG9jayk7Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5h
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdm9p
ZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQorICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwgZ29p
bmcgdG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9j
aykKICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFy
Z3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7Cit9
CisKIExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5v
ZGUqIG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7
IHJldHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVn
KTsKICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1ZSog
bG9ja2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9IGFk
dmFuY2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxG
cmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAgICAgICBib29sIGlzVGFpbERlbGV0ZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChj
b2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkg
JiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMo
SlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOwotICAgICAg
ICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3Bl
LT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmICghc2NvcGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNWYWx1
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRv
ci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAg
ICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFt
ZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBzY29wZSwgY29kZUJsb2NrLCBjYWxsRnJhbWUt
PmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoaW5kZXhJbkxvZyA8IGxvZ0N1
cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMg
ZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMyArNjE2LDEzIEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRE
dW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsKICAg
ICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRo
dW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNs
b3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgbGlua0J1ZmZlci52bSgp
LCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29k
ZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNvZGUoKSkpOworICAgICAgICAgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9y
KCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIGxpbmtCdWZmZXIu
dm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGws
IENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7CiAg
ICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0MTQsOTcgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7IFNw
aWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBT
cGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBkb25l
U3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyAgICAgICAgR1BS
UmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyNp
ZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KTsKKyNlbmRpZgorCisgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAg
ICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3BpbGwg
PSBzdGQ6Om1heChtaW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKworICAgICAgICBmb3IgKDsgYXJn
SW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKworICAgICAgICBpZiAoc3BpbGxU
eXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3Nl
ZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAg
ICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5k
ZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQ
cm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFy
Z0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvbmVTdG9yaW5n
QXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1Bcmdz
VG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAg
fQorCisgICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSh1bnNpZ25lZCBtaW5p
bXVtQXJnc1RvU3BpbGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFs
bCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgICAgICBKdW1wTGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9T
UElMTFNfQ0FMTEVFKQorICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisgICAg
ICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50
KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisgICAgICAgIAorICAgICAgICBm
b3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAg
ICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3Bp
bGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBh
c3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJn
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvbmVTdG9yaW5nQXJn
cy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9T
cGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAgfQor
ICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9n
dWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKworICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdEdldFBheWxv
YWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgaWYgKGFyZ0luZGV4KSAvLyBBbHdh
eXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBkb25lTG9hZGluZ0FyZ3MuYXBwZW5kKGJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlzKTsKKyNlbmRpZgorICAgIH0KKwogI2lm
IENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiArNzE1LDMxIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVu
dHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50
VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJndW1lbnQp
CisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoR1BS
UmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50
KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkUHRy
KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSksIHRv
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVm
b3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQUlJlZyB0bykKKyAgICB7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkMzIoQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHRvKTsK
KyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJl
Zm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewpAQCAtMTY0Nyw3ICsx
NzYzLDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2
NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAg
ICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICB2b2lkIGluY3JlbWVudENvdW50ZXIo
Vk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mQ291bnRlcihjb3Vu
dGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xNjU2LDYgKzE3NzksMTIgQEAgcHJvdGVj
dGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoaml0KS0+aW5jcmVt
ZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIo
aml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBDYWNoZWRSZWNvdmVyeTo6YWRk
VGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MpCit7CisgICAgQVNTRVJU
KG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOworICAgIHNpemVfdCBleGlzdGluZyA9IG1f
Z3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsKKyAgICBpZiAoZXhpc3RpbmcgPT0gV1RGOjpu
b3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX2dwclRhcmdldHMu
c2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0KCkgJiYgbV9yZWNvdmVyeS5pc0luR1BSKCkp
IHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSByZWNvdmVyaW5nIHRvIHRoZSBzYW1lIEdQUiwg
bWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0LgorICAgICAgICAgICAgR1BSUmVnIHNvdXJj
ZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAgICAgICAgICBpZiAoanNWYWx1ZVJlZ3MuZ3By
KCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50
IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVncyA9IEpTVmFsdWVS
ZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgbV9ncHJUYXJnZXRz
WzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5hcHBlbmQoanNWYWx1ZVJlZ3MpOworICAgIH0K
K30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91YmxlcyBhbmQgdW5kZXRlcm1pbmVkIEpTVmFs
dWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3b3VsZCBvdGhlcndpc2UgdXNlIHVwIEdQUnMu
ICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBDYWNoZWRSZWNvdmVyeTo6bG9hZHNJbnRvRlBS
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3Zlcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5
LmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVk
UmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
Q2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNoZWRSZWNvdmVyeSYmKSA9IGRlbGV0ZTsKIAog
ICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDE+JiB0YXJnZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiYgZ3By
VGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByVGFyZ2V0czsgfQogCiAgICAgdm9pZCBhZGRU
YXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7CkBAIC02OCwxNSArNjksMTEgQEAgcHVi
bGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFdh
bnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOwotICAgICAgICBtX3dhbnRlZEpT
VmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAgfQorICAgIHZvaWQgYWRkVGFyZ2V0SlNWYWx1
ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9pZCBzZXRXYW50ZWRGUFIoRlBSUmVnIGZwcikK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50ZWRKU1ZhbHVlUmVncyk7CisgICAgICAgIEFT
U0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV93YW50ZWRGUFIgPSBmcHI7
CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJl
Y292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpIHsgbV9yZWNvdmVyeSA9IHJlY292ZXJ5OyB9
CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9ncHJUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOworCisgICAgICAgIHJldHVybiBtX2dwclRhcmdl
dHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdhbnRlZEZQUigpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3ZlcnkgbV9yZWNvdmVyeTsKLSAg
ICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVSZWdzOwogICAgIEZQUlJlZyBtX3dhbnRlZEZQ
UiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiBtX3Rh
cmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiBtX2dwclRhcmdldHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWU7CiAgICAgVmVj
dG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBib29sIGFy
Z3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsKICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292
ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVn
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMy
Myw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShDYWMKICAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVn
LmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUo
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmZwcigpKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQgPSBjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwpOwogICAgICAg
ICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVyeSwKICAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRhRm9ybWF0SlMpKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5j
cHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIENhbGxGcmFt
ZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICAgICAgKyByb3VuZEFyZ3VtZW50
Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpKQogICAg
ICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
CiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGRhdGEuYXJncy5zaXpl
KCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKGRh
dGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5kaWYKICAgICAsIG1fZnJhbWVEZWx0YShtX2Fs
aWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCiB7CkBAIC01NCwxMSArNTcs
MjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKENDYQogICAgIG1fbG9j
a2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJbkpTU3RhY2soKSB8fCBkYXRhLmNhbGxl
ZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOwotCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycykKKyAgICAgICAgYWRkTmV3
KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSksIGRhdGEuY2FsbGVlKTsK
KyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgYWRkTmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7CisgICAgCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFkYXRhLmFy
Z3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3NbaV0udmlydHVhbFJlZ2lzdGVyKCkuaXNM
b2NhbCgpKTsKLSAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBk
YXRhLmFyZ3NbaV0pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChkYXRhLmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzICYmIGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgYWRkTmV3KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGkpKSwgZGF0YS5hcmdzW2ldKTsKKyAgICAgICAgZWxzZQorI2Vu
ZGlmCisgICAgICAgICAgICBhZGROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGRh
dGEuYXJnc1tpXSk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE4NSw4ICsxOTgs
MTMgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcChQcmludFN0cmVhbQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAjZWxzZQotICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpCisg
ICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIg
ICAgICAgICAiLCByZWcsICIgPC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOwor
ICAgICAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpID4g
MSkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbmV3Q2FjaGVkUmVj
b3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCksICIg
PC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KQEAgLTQ5Niw3
ICs1MTQsNyBAQCBib29sIENhbGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAg
QVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNJblJlZ2lzdGVycygpCiAgICAgICAg
IHx8IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNDb25zdGFudCgpKTsKIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmICh2ZXJib3NlICYmIGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXpl
KCkpCiAgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyAiLCBjYWNoZWRSZWNvdmVyeS5yZWNv
dmVyeSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlZFJlY292ZXJ5LnRhcmdl
dHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgY2Fj
aGVkUmVjb3ZlcnkudGFyZ2V0cygpW2ldIH07CkBAIC01MDUsOSArNTIzLDkgQEAgYm9vbCBDYWxs
RnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hlZAogICAgICAgICAgICAgZGF0YUxvZyghaSA/
ICIgaW50byAiIDogIiwgYW5kICIsICJORVcgIiwgdGFyZ2V0KTsKICAgICAgICAgZW1pdFN0b3Jl
KGNhY2hlZFJlY292ZXJ5LCBhZGRyZXNzRm9yTmV3KHRhcmdldCkpOwogICAgICAgICBzZXROZXco
dGFyZ2V0LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiXG4i
KTsKICAgICBjYWNoZWRSZWNvdmVyeS5jbGVhclRhcmdldHMoKTsKICAgICBpZiAoIWNhY2hlZFJl
Y292ZXJ5LndhbnRlZEpTVmFsdWVSZWdzKCkgJiYgY2FjaGVkUmVjb3Zlcnkud2FudGVkRlBSKCkg
PT0gSW52YWxpZEZQUlJlZykKICAgICAgICAgY2xlYXJDYWNoZWRSZWNvdmVyeShjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpKTsKQEAgLTYwNiw3ICs2MjQsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KCkKIHsKICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCi0gICAg
dXBkYXRlRGFuZ2VyRnJvbnRpZXIoKTsKKyAgICBpbml0RGFuZ2VyRnJvbnRpZXIoKTsKIAogICAg
IC8vIEZpcnN0LCB3ZSB0cnkgdG8gc3RvcmUgYW55IHZhbHVlIHRoYXQgZ29lcyBhYm92ZSB0aGUg
ZGFuZ2VyCiAgICAgLy8gZnJvbnRpZXIuIFRoaXMgd2lsbCBuZXZlciB1c2UgbW9yZSByZWdpc3Rl
cnMgc2luY2Ugd2UgYXJlIG9ubHkKQEAgLTc0MiwxMiArNzYwLDE5IEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgNCkgZmly
c3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8vIG1fbmV3RnJhbWVCYXNlLCB3
aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KKyAgICAvLyBOb3RlIHRoYXQgd2UgZGVs
YXkgc2V0dGluZyB0aGUgYXJndW1lbnQgY291bnQgcmVnaXN0ZXIgYXMgaXQgbmVlZHMgdG8gYmUg
cmVsZWFzZWQgaW4gc3RlcCAzLgogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIg
ICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9LCAiXG4iKTsKLSAgICBtX2ppdC5zdG9yZTMy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXco
VmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zm
c2V0KFRhZ09mZnNldCkpOwotICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0
ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFtX2FyZ3VtZW50c0luUmVnaXN0
ZXJzKSB7CisjZW5kaWYKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApLAorICAgICAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIg
eyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7
CisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdD
b3VudCgpKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFpc1Nsb3dQYXRo
KCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNlICE9IE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC03NjcsNiArNzkyLDIzIEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgICAgIGVtaXREaXNwbGFjZSgqY2FjaGVkUmVj
b3ZlcnkpOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8gRm9yIHJlY292ZXJp
ZXMgd2l0aCBtdWx0aXBsZSByZWdpc3RlciB0YXJnZXRzLCBjb3B5IHRoZSBjb250ZW50cyBvZiB0
aGUgZmlyc3QgdGFyZ2V0IHRvIHRoZQorICAgIC8vIHJlbWFpbmluZyB0YXJnZXRzLgorICAgIGZv
ciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcu
bmV4dCgpKSB7CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3
UmVnaXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeSB8fCBjYWNoZWRS
ZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA8IDIpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBHUFJSZWcgc291cmNlR1BSID0gY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMo
KVswXS5ncHIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBjYWNoZWRSZWNvdmVy
eS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV9qaXQubW92ZShzb3Vy
Y2VHUFIsIGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCkpOworICAgIH0KKwor
ICAgIGlmIChtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKQorICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCkpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNp
b24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYsMzcgQEAgcHVibGljOgogICAgIC8vIGNv
bnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZQogICAgIC8vIGFyZ3VtZW50cy9jYWxs
ZWUvY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGFyZSBieSB0YWtpbmcgaW50bwogICAgIC8vIGFjY291
bnQgYW55IHNwaWxsaW5nIHRoYXQgYWNxdWlyZUdQUigpIGNvdWxkIGhhdmUgZG9uZS4KLSAgICBD
YWxsRnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdCgpIGNvbnN0CisgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc25hcHNob3QoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVbmRlY2lkZWQoKSk7CiAKICAgICAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgZGF0YTsKICAgICAgICAgZGF0YS5udW1Mb2NhbHMgPSBudW1Mb2NhbHMo
KTsKLSAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFj
a0FyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJn
cykKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1YWxSZWdpc3RlciB7IENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIH07CisgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgp
OworICAgICAgICB9CiAgICAgICAgIGRhdGEuYXJncy5yZXNpemUoYXJnQ291bnQoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQoKTsgKytpKQotICAgICAgICAgICAg
ZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKS0+cmVj
b3ZlcnkoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MgfHwgaSA+
PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAg
ICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkt
PnJlY292ZXJ5KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWcgcmVn
IHsgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkgfTsKKyAgICAgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gY2FjaGVkUmVjb3ZlcnktPnJlY292
ZXJ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZm9yIChSZWcgcmVnID0g
UmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAg
ICAgICAgICAgIGlmIChyZWcuaXNHUFIoKSAmJiBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0Fy
Z3MKKyAgICAgICAgICAgICAgICAmJiBHUFJJbmZvOjp0b0FyZ3VtZW50SW5kZXgocmVnLmdwcigp
KSA8IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmdDb3VudCgp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgQ2FjaGVkUmVjb3Zl
cnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OwogICAgICAgICAgICAg
aWYgKCFjYWNoZWRSZWNvdmVyeSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM3Niw2
ICszOTYsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fYWxpZ25lZE9sZEZyYW1lU2l6ZTsKICAg
ICBpbnQgbV9hbGlnbmVkTmV3RnJhbWVTaXplOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9v
bCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzOworI2VuZGlmCiAKICAgICAvLyBUaGlzIGlzIHRoZSBk
aXN0YW5jZSwgaW4gc2xvdHMsIGJldHdlZW4gdGhlIGJhc2Ugb2YgdGhlIG5ldwogICAgIC8vIGZy
YW1lIGFuZCB0aGUgYmFzZSBvZiB0aGUgb2xkIGZyYW1lLiBJdCBjb3VsZCBiZSBuZWdhdGl2ZSB3
aGVuCkBAIC02NDEsOSArNjY0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChqc1ZhbHVl
UmVncyAmJiAhZ2V0TmV3KGpzVmFsdWVSZWdzKSk7CiAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBj
YWNoZWRSZWNvdmVyeSA9IGFkZENhY2hlZFJlY292ZXJ5KHJlY292ZXJ5KTsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICBpZiAoY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkp
Ci0gICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1
ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOwotICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5
LT53YW50ZWRKU1ZhbHVlUmVncygpKSB7CisgICAgICAgICAgICBpZiAocmVjb3ZlcnkuaXNJbkdQ
UigpICYmIGpzVmFsdWVSZWdzLmdwcigpID09IHJlY292ZXJ5LmdwcigpKSB7CisgICAgICAgICAg
ICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCku
Z3ByKCldID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNo
ZWRSZWNvdmVyeTsKICNlbHNlCiAgICAgICAgIGlmIChKU1ZhbHVlUmVncyBvbGRSZWdzIHsgY2Fj
aGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkgfSkgewogICAgICAgICAgICAgaWYgKG9s
ZFJlZ3MucGF5bG9hZEdQUigpKQpAQCAtNjU2LDggKzY4Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChqc1ZhbHVlUmVncy50YWdHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAg
bV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MudGFnR1BSKCldID0gY2FjaGVkUmVjb3Zlcnk7CiAj
ZW5kaWYKLSAgICAgICAgQVNTRVJUKCFjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3Mo
KSk7Ci0gICAgICAgIGNhY2hlZFJlY292ZXJ5LT5zZXRXYW50ZWRKU1ZhbHVlUmVncyhqc1ZhbHVl
UmVncyk7CisgICAgICAgIGNhY2hlZFJlY292ZXJ5LT5hZGRUYXJnZXRKU1ZhbHVlUmVncyhqc1Zh
bHVlUmVncyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXcoRlBSUmVnIGZwciwgVmFsdWVSZWNv
dmVyeSByZWNvdmVyeSkKQEAgLTc1NSwxMyArNzgxLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiByZWcgPD0gZGFuZ2VyRnJvbnRpZXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGluaXREYW5n
ZXJGcm9udGllcigpCisgICAgeworICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKGxhc3RO
ZXcoKSk7CisgICAgfQorCiAgICAgdm9pZCB1cGRhdGVEYW5nZXJGcm9udGllcigpCiAgICAgewor
ICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKG1fZGFuZ2VyRnJvbnRpZXIgLSAxKTsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmREYW5nZXJGcm9udGllckZyb20oVmlydHVhbFJlZ2lzdGVyIG5l
eHRSZWcpCisgICAgewogICAgICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCiAgICAgICAg
IG1fZGFuZ2VyRnJvbnRpZXIgPSBmaXJzdE5ldygpIC0gMTsKLSAgICAgICAgZm9yIChWaXJ0dWFs
UmVnaXN0ZXIgcmVnID0gbGFzdE5ldygpOyByZWcgPj0gZmlyc3ROZXcoKTsgcmVnIC09IDEpIHsK
LSAgICAgICAgICAgIGlmICghZ2V0TmV3KHJlZykgfHwgIWlzVmFsaWRPbGQobmV3QXNPbGQocmVn
KSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKKyAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gbmV4dFJlZzsgcmVnID49IGZpcnN0TmV3KCk7IHJlZyAtPSAxKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRPbGQobmV3QXNPbGQocmVnKSkgfHwgIWdldE9sZChuZXdBc09sZChy
ZWcpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgbV9kYW5nZXJG
cm9udGllciA9IHJlZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9CiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByICE9IEludmFsaWRHUFJSZWc7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gbV9ncHIg
PT0gb3RoZXIubV9ncHI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIp
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KEpTVmFs
dWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICAKICAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9n
cHI7IH0KICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsg
fQpAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAKICNpZiBDUFUoWDg2KQogI2RlZmluZSBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDUKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6
OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJl
dHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwpAQCAtMzc5LDYgKzM4MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRv
QXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgp
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVy
WzhdID0geyAyLCAwLCAxLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdp
c3RlcltyZWddOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BS
UmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC00MDMsNiArNDEzLDExIEBAIHB1YmxpYzoKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA3dQog
I2VuZGlmCisjaWYgVVNFKFJFR0lTVEVSX0FSR1VNRU5UUykKKyNkZWZpbmUgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyAtIDJ1KQorI2Vsc2UKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyAwdQorI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNDY0LDYg
KzQ3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3Rl
cnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC01MDgsNiArNTI0LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52YWxp
ZEluZGV4LCAzLCAyLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAx
LCAwLCA0LCA1LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZWxzZQorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCB9OworI2VuZGlmCisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
cmVnXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTUzOCw2ICs1NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNKQogI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC02MDEsNiArNjMwLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9B
cmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYp
OworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFIzKQorICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorICAgIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC02MjEsNiArNjU5LDcgQEAgcHVi
bGljOgogCiAjaWYgQ1BVKEFSTTY0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDh1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKIC8vIENhbGxlZSBTYXZlcyBpbmNs
dWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CiAKQEAgLTY5OCw2ICs3MzcsNyBAQCBwdWJsaWM6
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMyA9PSAxMywgcTEzX2lzXzEz
KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTE0ID09IDE0LCBxMTRfaXNf
MTQpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTUgPT0gMTUsIHExNV9p
c18xNSk7CisKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKQEAgLTcxNSw2ICs3NTUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdG9SZWdpc3RlcihpbmRleCk7CiAgICAgfQogCisgICAg
c3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3Vt
ZW50R1BSNykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpcmVnOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CkBAIC03NDYsNiArNzk0LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTc3Myw2ICs4MjIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0
ZXJzOjphMjsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdp
c3RlcnM6OmEzOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CkBAIC04MjUsNiArODc1LDcgQEAgcHVibGlj
OgogCiAjaWYgQ1BVKFNINCkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0
dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAj
ZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUklu
Zm8gewpAQCAtODU1LDYgKzkwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IGFyZ3VtZW50R1BSMiA9IFNINFJlZ2lzdGVyczo6cjY7IC8vIHJlZ1QyCiAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBTSDRSZWdpc3RlcnM6OnI3OyAvLyByZWdUMwogICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDI7CkBAIC04OTEsNiArOTQzLDYxIEBAIHB1YmxpYzoKIAogI2VuZGlmIC8v
IENQVShTSDQpCiAKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvcih1bnNpZ25lZCBh
cmd1bWVudEluZGV4KQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBp
ZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICByZXR1cm4gR1BSSW5mbzo6dG9Bcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50SW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRJ
bmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW52
YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1
cm4gYXJndW1lbnRSZWdpc3RlckZvcigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEdQUkluZm86OnJl
Z1QwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lzdGVyRm9yKDEpOworfQorCitp
bmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50
KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJldHVybiBhcmd1bWVudCArIDI7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lzdGVyKEdQUlJl
ZyBncHIpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+
IDAKKyAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gR1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4
KGdwcik7CisgICAgQVNTRVJUKGFyZ3VtZW50SW5kZXggIT0gR1BSSW5mbzo6SW52YWxpZEluZGV4
ICYmIGFyZ3VtZW50SW5kZXggPj0gMik7CisgICAgcmV0dXJuIGFyZ3VtZW50SW5kZXggLSAyOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcihhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnRJbmRleCkpOworfQorCitpbmxpbmUgdW5zaWduZWQg
bnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQorewor
ICAgIHJldHVybiBzdGQ6Om1pbihhcmd1bWVudENvdW50LCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTKTsKK30KKwogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1
bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQg
cmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVn
aXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4
dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDE0ICs2Niw2IEBAIHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkEKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1KSVQ6OkNvZGVSZWYgSklUOjpj
b21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAg
aWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7Ci0gICAgSklUIGppdCh2bSwg
MCk7Ci0gICAgcmV0dXJuIGppdC5wcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwodm0sIGZ1bmMp
OwotfQotCiBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIDogSlNJ
bnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0ZXIodm0tPmludGVy
cHJldGVyKQpAQCAtNTc5LDYgKzU3MSwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5r
aW5nKEpJVENvbXBpCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkK
ICAgICAgICAgbm9wKCk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwaWxsQXJndW1lbnRS
ZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpSZWdBcmdzTm9Bcml0eSk7CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIEp1bXAgY29u
dGludWVTdGFja0VudHJ5ID0ganVtcCgpOworI2VuZGlmCisjZW5kaWYKKyAgICBtX3N0YWNrQXJn
c0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
U3RhY2tBcmdzTm9Bcml0eSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiBFTkFCTEUoVk1fQ09V
TlRFUlMpCisgICAgY29udGludWVTdGFja0VudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKwogICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1f
Y29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCkBAIC02MzUsNyArNjQxLDIx
IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKIAogICAgIGlmIChtX2NvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwo
KTsKKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisKKyAg
ICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAg
ICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIEp1bXAgY29udGludWVTdGFja0FyaXR5RW50cnkg
PSBqdW1wKCk7CisjZW5kaWYKKworICAgICAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0g
bGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJp
dHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVTdGFja0FyaXR5
RW50cnkubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDAp
LCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKTsKICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29k
ZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwpAQCAtNjQzLDYgKzY2Myw4IEBAIHZv
aWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbG9hZDMyKHBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAg
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKKyAgICAgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgICAgICBt
X2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCkBAIC03NzgsOSArODAwLDE0IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGlu
aygpCiAgICAgfQogICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlTWFwKGppdENvZGVNYXBFbmNv
ZGVyLmZpbmlzaCgpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVj
azsKLSAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAg
ICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9hcml0eUNoZWNr
KTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeUFyaXR5T0tQdHIgPSBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KTsKKyAgICAKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAg
aWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBy
ZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1f
cmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBzdGFja0VudHJ5V2l0aEFyaXR5
Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hl
Y2spOworICAgIH0KIAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkgewogICAg
ICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03OTgsMTQgKzgyNSwy
NiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIENvZGVSZWYgcmVzdWx0ID0g
RklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAgICAgICgiQmFzZWxpbmUg
SklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJs
b2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpLmRhdGEoKSkpOwotICAgIAorCiAgICAgbV92bS0+
bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAgICAgICBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2st
PnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgSklURW50cnlQb2ludHMg
ZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRy
LCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50cnlBcml0eU9LUHRyLCBz
dGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVy
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJh
bWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29kZSgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAg
ICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50
cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisKICAgICBt
X2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihyZXN1
bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQg
WyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3Rh
cnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKICNpbmNsdWRl
ICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIK
IApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5w
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8sIHJldHVybkFkZHJlc3Ms
IGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxl
Q1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgc3RhdGljIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRzKFZNKiB2bSwgTmF0
aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2bS0+Y2FuVXNl
SklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2ZUNhbGxSZWYgPSBDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihuYXRpdmVDYWxsUmVmLCBu
YXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaml0LnBy
aXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7
CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpA
QCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwg
SklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNh
bGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAgICAgICBDb2RlUmVmIHByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSklU
RW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiwg
TmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJh
eUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCiAgICAgICAgIC8vIEFk
ZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpA
QCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9w
dXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Owog
ICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwotICAgICAgICAKLSAgICAgICAg
TGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0Vu
dHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOworICAgICAgICBM
YWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxK
SVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0
VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwg
cmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJn
cywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zm
c2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxG
cmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIG5vbkFy
Z0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVn
VDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKLSAgICBlbWl0TmFr
ZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7Cisg
ICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNv
ZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0TmFrZWRDYWxsKHZpcnR1
YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0
YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9p
bnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAg
IEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4
KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIFN0YWNrQXJncywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9u
SW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1
bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4
XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcsMTMgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jYWxsQ29t
cGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8pLCByZWdUMik7Cisg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQogICAgICAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJ
bmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2Vk
Q2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CiAKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92
YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENh
bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAy
MDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJh
bWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
OwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBy
ZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpDYWxs
VmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJ
bnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBy
ZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3MocmVnVDEsIENh
bGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06
OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0
Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7
CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0
aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAg
ICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2Fs
bCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0
aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxNCArMTU5LDIzIEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX29wY29kZXNfbXVzdF9iZV9z
YW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxscHRyOworICAgIEFy
Z3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOworCiAgICAgaWYg
KG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlv
biwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblsz
XS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQ7CiAKKyNpZiBFTkFCTEUoQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1F
TlRfQ0FMTFMpCisgICAgICAgIGlmIChOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTICYmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVj
dCkpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25G
b3IoYXJnQ291bnQpOworICAgICAgICAgICAgaW5mby0+c2V0UHJvdmlkZXNSZWdpc3RlckFuZFN0
YWNrQXJndW1lbnRzKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBl
bWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKQEAgLTE3MSwxNSArMTg1LDI1IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgfQogICAgIAogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSAr
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3Mp
IHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdp
c3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFy
Z3MgPSBzdGQ6Om1pbihhcmdDb3VudCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lz
dGVyQXJnczsgYXJnKyspCisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSks
IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZykpOworICAgICAgICB9CiAg
ICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KKworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKICAgICAKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChi
eXRlY29kZU9mZnNldCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9u
Qml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7
CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCi0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVS
ZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY2FsbGVlLCBjYWxsZWVSZWdpc3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVS
ZWdpc3RlciwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAg
ICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMTg3LDE2ICsyMTEsMTggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERh
dGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nh
c2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRG
dW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBjYWxsZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2Vk
RnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nh
c2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExp
bmtJbmZvSW5kZXgpOwotICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBl
Rm9yKG9wY29kZUlEKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAg
IGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJn
dW1lbnRzTG9jYXRpb24sIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lz
dGVyKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbklu
Zm8oKSk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQ
YXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRl
cih0aGlzLCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNo
dWZmbGVEYXRhOwogICAgICAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyOwogICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpA
QCAtMjA5LDcgKzIzNSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICAgICAgICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgfQogICAgICAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIo
cmVnVDAsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihj
YWxsZWVSZWdpc3RlciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBD
YWxsZWVTYXZlUmVnaXN0ZXJzKG1fY29kZUJsb2NrKTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVT
aHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlz
LCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CkBAIC0yNDYsOSArMjcyLDEwIEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENv
bXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOwor
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVt
aXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtH
ZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwog
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJv
bVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2
aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUo
Vk0qIHZtLCBQcm90b0NhCiAKICAgICBpZiAoIWZ1bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+
bmVlZEFyaXR5Q2hlY2soKSkgewogICAgICAgICBBU1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVk
QXJpdHlDaGVjaygpKTsKLSAgICAgICAgZW50cnlBZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlD
aGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAg
ICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvSmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZt
LCBwcm90b0NhbGxGcmFtZSkpOwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVs
bCgpIDogcmVzdWx0OwogfQpAQCAtMTYyLDkgKzE2Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVj
dEpJVENvZGUoSklUVHlwZSBqaXQKIHsKIH0KIAotRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29k
ZShKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywg
SklUVHlwZSBqaXRUeXBlKQotICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkK
LSAgICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpE
aXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5
cGUpCisgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYoZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUp
CisgICAgLCBtX2VudHJ5UG9pbnRzKGVudHJpZXMpCiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2
IEBAIERpcmVjdEpJVENvZGU6On5EaXJlY3RKSVRDb2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RK
SVRDb2RlOjppbml0aWFsaXplQ29kZVJlZihKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6
Q29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK3ZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVu
dHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX3JlZik7Ci0gICAgbV9yZWYgPSByZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9
IHdpdGhBcml0eUNoZWNrOworICAgIG1fcmVmID0gZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9l
bnRyeVBvaW50cyA9IGVudHJpZXM7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29k
ZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRy
IERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0g
ICAgc3dpdGNoIChhcml0eSkgewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7
Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRo
QXJpdHlDaGVjayk7Ci0gICAgICAgIHJldHVybiBtX3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7Cisg
ICAgcmV0dXJuIG1fZW50cnlQb2ludHMuZW50cnlGb3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENv
ZGU6Ok5hdGl2ZUpJVENvZGUoSklUVHlwZSBqaXRUeXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZv
aWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsK
IH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0
eUNoZWNrTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNh
bGwoRW50cnlQb2ludFR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAg
cmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAi
SklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5
ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNr
TW9kZSkgPSAwOworICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50
VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSA9IDA7Ci0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVy
biBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRh
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsy
MjMsMTUgQEAgcHJvdGVjdGVkOgogY2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2Rl
V2l0aENvZGVSZWYgewogcHVibGljOgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAg
RGlyZWN0SklUQ29kZShDb2RlUmVmLCBDb2RlUHRyIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsK
KyAgICBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAg
dmlydHVhbCB+RGlyZWN0SklUQ29kZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVS
ZWYoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXpl
RW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIENvZGVQdHIg
bV93aXRoQXJpdHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsK
IAogY2xhc3MgTmF0aXZlSklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAt
MjQzLDcgKzI0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVm
KENvZGVSZWYpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkg
b3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86IENv
bnNpZGVyIHVzaW5nIGEgbWFjcm8gYmFzZSBjb250cnVjdGlvbiB0byBnZXQgZW51bSAiaW5oZXJp
dGVuY2UiCitlbnVtIEFyZ3VtZW50c0xvY2F0aW9uIDogdW5zaWduZWQgeworICAgIFN0YWNrQXJn
cyA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0
CisgICAgUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczJJblJlZ2lz
dGVycywKKyAgICBSZWdpc3RlckFyZ3MzSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNElu
UmVnaXN0ZXJzLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
PT0gNgorICAgIFJlZ2lzdGVyQXJnczVJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M2SW5S
ZWdpc3RlcnMsCisjZW5kaWYKKyAgICBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrCisjZW5k
aWYKK307CisKKy8vIFRoaXMgZW51bSBuZWVkcyB0byBoYXZlIHRoZSBzYW1lIGVudW1lcmF0b3Ig
b3JkZXJpbmcgYXMgQXJndW1lbnRzTG9jYXRpb24uCitlbnVtIFRodW5rRW50cnlQb2ludFR5cGUg
OiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzRW50cnkgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyMUFyZ0VudHJ5LAor
ICAgIFJlZ2lzdGVyMkFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjNBcmdzRW50cnksCisgICAgUmVn
aXN0ZXI0QXJnc0VudHJ5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyNUFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjZBcmdzRW50
cnksCisjZW5kaWYKKyNlbmRpZgorICAgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudAorfTsKKwor
ZW51bSBFbnRyeVBvaW50VHlwZSB7CisgICAgU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
LAorICAgIFN0YWNrQXJnc011c3RDaGVja0FyaXR5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWly
ZWQsCisgICAgUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsCisgICAgUmVnaXN0ZXJBcmdz
TXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUyA+PSA0CisgICAgUmVnaXN0ZXJBcmdzMSwKKyAgICBSZWdpc3RlckFyZ3MyLAorICAgIFJl
Z2lzdGVyQXJnczMsCisgICAgUmVnaXN0ZXJBcmdzNCwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAgICBSZWdpc3RlckFyZ3M1LAorICAgIFJlZ2lz
dGVyQXJnczYsCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgTnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXMKK307CisKK2NsYXNzIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBFbnRyeVBvaW50VHlwZTo6TnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXM7CisKKyAgICBKSVRFbnRyeVBvaW50cygpCisgICAgeworICAgICAgICBjbGVhckVudHJp
ZXMoKTsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50cyhDb2RlUHRyIHJlZ2lzdGVyQXJnc05v
Q2hlY2tSZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
RW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBDb2Rl
UHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRy
IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICB7CisgICAgICAgIG1fZW50cnlQb2ludHNb
U3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1N0YWNrQXJnc011c3RDaGVja0Fy
aXR5XSA9IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5
OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzXSA9
IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnk7CisgICAgICAgIG1fZW50cnlQb2lu
dHNbUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHldID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVu
dHJ5OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGkgKyspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRz
W3JlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChpKV0gPSByZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzTm9D
aGVja1JlcXVpcmVkRW50cnkpOworICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzUG9z
c2libGVFeHRyYUFyZ3NFbnRyeSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3ND
aGVja0FyaXR5RW50cnkpOworI2VuZGlmCisKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9y
KEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50
c1t0eXBlXTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5
cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA8IE51bWJlck9m
RW50cnlQb2ludFR5cGVzKTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0eXBlXSA9IGVudHJ5Owor
ICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihFbnRyeVBvaW50
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEVudHJ5UG9pbnRz
LCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5
cGUgcmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KHVuc2lnbmVkIGFyZ0NvdW50KQor
ICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
ICAgIEFTU0VSVChhcmdDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJnQ291bnQg
PSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgaWYgKCFy
ZWdpc3RlckFyZ0NvdW50IHx8IHJlZ2lzdGVyQXJnQ291bnQgIT0gYXJnQ291bnQpCisgICAgICAg
ICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihSZWdpc3RlckFyZ3MxICsgcmVnaXN0ZXJBcmdD
b3VudCAtIDEpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGFyZ0NvdW50KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJn
c011c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRU
eXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRUeXBlKEFyZ3VtZW50c0xvY2F0aW9uIHR5
cGUpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICAgICAgQVNTRVJUKHR5cGUgIT0gU3RhY2tBcmdzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0g
UmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaykKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdzMSArIHR5cGUgLSBSZWdpc3RlckFyZ3MxSW5S
ZWdpc3RlcnMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50cmllcygpCisg
ICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTsp
CisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMmIG9wZXJhdG9yPShjb25zdCBKSVRFbnRyeVBv
aW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVu
dHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9l
bnRyeVBvaW50c1tpXTsKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRl
OgorCisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJlck9mRW50cnlUeXBlc107Cit9Owor
CitjbGFzcyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgOiBwdWJsaWMgSklURW50cnlQb2ludHMgewor
cHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisKKyAg
ICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBv
aW50c1dpdGhSZWYoY29uc3QgSklURW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAg
OiBKSVRFbnRyeVBvaW50cyhvdGhlcikKKyAgICAgICAgLCBtX2NvZGVSZWYob3RoZXIubV9jb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBjb25zdCBKSVRFbnRyeVBvaW50cyYgb3RoZXIpCisgICAgICAgIDogSklURW50cnlQ
b2ludHMob3RoZXIpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmLCBDb2RlUHRy
IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0
YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhDb2RlUHRy
KCksIENvZGVQdHIoKSwgQ29kZVB0cigpLCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihjb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBDb2RlUHRyIHJlZ2lzdGVyQXJnc05vQ2hlY2tzUmVxdWlyZWRFbnRyeSwKKyAgICAg
ICAgQ29kZVB0ciByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LCBDb2RlUHRyIHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkp
CisgICAgICAgIDogSklURW50cnlQb2ludHMocmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVu
dHJ5LCByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LAorICAgICAgICAgICAgcmVn
aXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwKKyAgICAgICAgICAgIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgLCBt
X2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkg
eyByZXR1cm4gbV9jb2RlUmVmOyB9CisKK3ByaXZhdGU6CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7
Cit9OworCitpbmxpbmUgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb25Gb3IodW5z
aWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1bWVudENvdW50KQorICAgICAgICByZXR1cm4gU3Rh
Y2tBcmdzOworICAgIAorICAgIGFyZ3VtZW50Q291bnQgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICsgMSwgYXJndW1lbnRDb3VudCk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50c0xvY2F0aW9uPihBcmd1bWVudHNMb2NhdGlv
bjo6UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnczsK
KyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVBvaW50VHlw
ZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQgfHwgYXJndW1lbnRD
b3VudCA+IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAg
IHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsg
YXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKK30KKworaW5saW5lIEVudHJ5UG9pbnRUeXBlIGVu
dHJ5UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChhcmd1
bWVudExvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnc011c3RD
aGVja0FyaXR5OworICAgIAorICAgIGlmIChhcmd1bWVudExvY2F0aW9uID09IFJlZ2lzdGVyQXJn
c1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgIHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5
UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50
TG9jYXRpb24gLSBSZWdpc3RlckFyZ3MxSW5SZWdpc3RlcnMpKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGFyZ3VtZW50TG9jYXRpb24pOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGh1bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5
UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIHVuc2lnbmVkIGFy
Z3VtZW50TG9jYXRpb25JbmRleCA9IHN0ZDo6bWluKFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3Rh
Y2sgLSAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbikpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihhcmd1bWVudExvY2F0aW9uSW5k
ZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRMb2NhdGlvbik7CisgICAgcmV0
dXJuIFN0YWNrQXJnc0VudHJ5OworI2VuZGlmCit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRU
eXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgYXJndW1lbnRD
b3VudCA9IG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IoYXJndW1lbnRDb3VudCk7CisgICAg
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KFRodW5rRW50cnlQ
b2ludFR5cGU6OlJlZ2lzdGVyMUFyZ0VudHJ5ICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnc0Vu
dHJ5OworI2VuZGlmCit9CisKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwor
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mRW50cnlUeXBlcyA9IFRodW5rRW50cnlQb2ludFR5cGU6OlRo
dW5rRW50cnlQb2ludFR5cGVDb3VudDsKKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmKCkKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYoQ29kZVJlZiBjb2RlUmVmKQorICAgICAgICA6IG1fY29kZVJlZihjb2RlUmVmKQorICAg
IHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb25zdCBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9jb2Rl
UmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkVudHJ5VHlwZXM7IGkrKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNb
aV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlG
b3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50
cnlQb2ludHNbdHlwZV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihBcmd1bWVudHNM
b2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBlbnRyeUZv
cih0aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFyZ3VtZW50c0xvY2F0aW9uKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRFbnRyeUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50
cnkpCisgICAgeworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiwgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgdm9p
ZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVy
T2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0
dXJuIG1fY29kZVJlZjsgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYm
IG9wZXJhdG9yPShjb25zdCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIp
CisgICAgeworICAgICAgICBtX2NvZGVSZWYgPSBvdGhlci5tX2NvZGVSZWY7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJl
ZjsKKyAgICBDb2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jKQorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xv
Z3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTY4OQpAQCAtMTI5LDcgKzEyOSw5IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywg
R0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNoQnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVu
Y3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgSklUOjpDb2RlUmVmIGNvZGVSZWYgPSBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgCisg
ICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwg
Y29kZVJlZi5jb2RlKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLUpJVDo6Q29kZVJlZiBKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uKQorSklURW50cnlQ
b2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbikKIHsKLSAgICByZXR1cm4gdm0tPmdldENUSVN0dWIobmF0aXZlQ2Fs
bEdlbmVyYXRvcik7CisgICAgcmV0dXJuIHZtLT5nZXRKSVRFbnRyeVN0dWIobmF0aXZlQ2FsbEdl
bmVyYXRvcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsMTAgKzg5MCwxNCBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgSlNTY29wZSogc2Nv
cGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyLCBjb2RlUHRyRm9y
TGlua2luZzsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBpZiAo
IWNhbGxMaW5rSW5mby0+cHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCkgJiYgY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgY29kZVB0ckZv
ckxpbmtpbmcgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011
c3RDaGVja0FyaXR5KTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTkxNCwxNyArOTE4LDQ0IEBAIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sg
PSAqY29kZUJsb2NrU2xvdDsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAg
IGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAg
ICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5
KTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgYm9vbCB1c2VTdGFja0VudHJ5ID0g
Y29kZUJsb2NrLT5wcmVmZXJzU3RhY2tBcmd1bWVudHMoKSAmJiBjYWxsTGlua0luZm8tPnByb3Zp
ZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cygpOworI2VuZGlmCisgICAgICAgIHNpemVfdCBj
YWxsZXJBcmd1bWVudENvdW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKTsKKyAgICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFy
Z3VtZW50Q291bnQgPCBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJh
cmdzKCkpIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgICAgICBpZiAoIXVzZVN0YWNrRW50cnkgJiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJ
blJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lz
dGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
Y29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAg
ICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQ
b2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICB9IGVsc2UgaWYg
KCF1c2VTdGFja0VudHJ5ICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkg
eworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVlQXJndW1lbnRD
b3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvZGVQ
dHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJ
VEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJn
dW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtpbmcpCisg
ICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50cnkgcG9pbnRz
IHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsK
KyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5k
LCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkK
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQotICAgICAgICBsaW5r
Rm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRy
KTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ss
IGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2luZyA6IGNvZGVQdHIp
OwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0g
Q2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CkBAIC05
NTksNyArOTkwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2EK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCi0g
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVj
a0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGNhbGxMaW5r
SW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5
IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2RlUHRyID0gZXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5k
aWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApA
QCAtOTcxLDEzICsxMDA2LDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGly
ZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBBcml0eUNoZWNrTW9k
ZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygp
OwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9IE11c3RDaGVj
a0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvZG86IFRo
aXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChh
cmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAg
ICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4g
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0
ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UK
KyAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50
KQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RG
b3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCAr
MTA3MSwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAg
ICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkg
aWYgdGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdp
bGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2
b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
ZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVu
a3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVD
YWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdl
bmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIs
IG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0
aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6
OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1
bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAo
IXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZl
Q29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2
ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1
bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50
cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50
cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRp
b24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZh
bHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBn
ZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRo
cmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9
IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7
Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBu
dWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5l
cmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9y
KHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5
LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2
ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5j
dGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxl
KGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0
aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9u
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51
bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgog
ICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRF
bnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlO
YXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSos
IE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRp
dmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRv
ciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9j
dGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50
cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1f
aml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdl
bmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0Vu
dHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NTAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQp
OworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNl
bmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQog
ICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50
MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBG
UFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVu
dFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAg
ICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgp
OworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBz
dGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMg
dXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lz
dGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5
IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzksMjEgKzUzOSwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1
bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJl
Zi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBv
aW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8s
IHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9
CiAKIHZvaWQgbGlua0ZvcigKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAog
ICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZl
cnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2Rl
UmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8uaXNEaXJlY3QoKSkgewogICAgICAgICBjYWxs
TGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIHVubGlu
a0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlu
a0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwogICAgIAotICAgIHJldmVydENhbGwoJnZtLCBj
YWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAg
IHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBA
IC02NTQsOSArNjU0LDkgQEAgdm9pZCBsaW5rVmlydHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtp
bmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVy
RnJhbWUoKS0+Y29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlu
a0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVu
ay5jb2RlUmVmKCksICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAt
NzA1LDYgKzcwNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExp
bmtJbmZvLnNldEhhc1NlZW5DbG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGlj
Q2FsbENhc2U+IGNhbGxDYXNlczsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91
dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlz
dCkgewpAQCAtNzE2LDcgKzcxNyw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRs
ZSBhIGNhbGxlZSwgZWl0aGVyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBi
ZWNhdXNlIGFyaXR5IG1pc21hdGNoLAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBi
ZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAg
ICAgICBpZiAoIWNvZGVCbG9jayB8fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2Fs
bExpbmtJbmZvLmlzVmFyYXJncygpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBj
YWxsZXJBcmd1bWVudENvdW50IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAg
ICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03MzcsNyArNzM4LDEwIEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChj
YWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxl
ZUdQUiA9PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJz
IHN0dWJKaXQodm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93UGF0aDsKQEAgLTc1OSw2ICs3NjMsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwogICAgICAgICBpZiAoZnJhbWVTaHVm
ZmxlcikKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BS
KCk7CisgICAgICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygp
KQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1
bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhlY3V0YWJsZSBpbiBzY3JhdGNoR1BSLgpAQCAtODI0LDEz
ICs4MzAsMjMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIEdQUlJlZyBmYXN0Q291
bnRzQmFzZUdQUjsKICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgZmFzdENvdW50c0Jh
c2VHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgZWxzZSBpZiAoY2FsbExp
bmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisjZWxzZQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOworI2VuZGlmCiAgICAgZWxzZSB7CiAg
ICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0KICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNvbXBhcmlzb25WYWx1ZUdQUiwgR1BSSW5mbzo6
cmVnVDMpOwogICAgIH0KLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBmYXN0Q291bnRzQmFzZUdQUik7CisgICAgaWYgKGZhc3RD
b3VudHMpCisgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
ZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNCYXNlR1BSKTsKICAgICBpZiAoIWZyYW1lU2h1
ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkKICAgICAgICAgc3R1YkppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZzdHViSml0LCBW
TTo6UG9seW1vcnBoaWNDYWxsKTsKKwogICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29t
cGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2
YW5jZShzdHViSml0KSkgewpAQCAtODM5LDggKzg1NSwzMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4
XS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxl
KCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworCisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJn
dW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2Rl
QmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICAg
ICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50ID09IGNhbGxlckFyZ3VtZW50Q291bnQgfHwg
Y2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBSZWdpc3RlckFyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9yQXJnQ291bnQgPSBKSVRFbnRyeVBvaW50czo6
cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpOwor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlGb3JBcmdDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBl
ID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAg
ICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpOworICAgICAgICAgICAgdmFyaWFudC5l
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKGVu
dHJ5VHlwZSk7CisgICAgICAgIEFTU0VSVChjb2RlUHRyKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBzdHViSml0LmFkZDMyKApAQCAtODQ4LDcgKzg4
OCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50
MzJfdCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewotICAgICAg
ICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3Qo
KSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihz
dHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9j
YXRpb24oKSkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKQEAgLTg2OSwxOSArOTA5LDE5IEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbCgKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBmcmFtZVNodWZmbGVyLT5z
ZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDApKTsKICNlbHNlCi0gICAgICAgIGZyYW1lU2h1ZmZsZXItPnNldENhbGxlZUpTVmFsdWVS
ZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uYXJndW1lbnRzTG9jYXRpb24oKSA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBmcmFtZVNo
dWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCkpKTsKICNlbmRpZgogICAgICAgICBmcmFtZVNodWZmbGVyLT5wcmVwYXJlRm9y
U2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3R1Ykpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJ
bmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICB9Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIHN0
dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0g
ICAgCi0gICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZv
OjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAg
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29k
ZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtOTAyLDcgKzk0Miw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxs
TGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKSk7CiAgICAgZWxz
ZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3Ro
ZXIoKS5sYWJlbEF0T2Zmc2V0KDApKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVM
b2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcikuY29kZSgpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25M
YWJlbCh2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVu
a0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7
CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREVfRk9SKApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9u
IDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAg
ICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywgSW5SZWdpc3RlcnMgfTsKKworICAgICAgICBT
cGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5
SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gT25TdGFjaykKICAgICAgICAg
ICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1Jl
Z2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3Rl
ZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oc3Bp
bGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQor
ICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICBm
aWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSA9IGxhYmVsKCk7CisgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5N
YXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAgICAg
IG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9y
QXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7
CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICAg
ICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAg
ICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMK
KyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVj
dGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0pCiAgICAgICAgICAg
ICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsK
KyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNFbnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRo
ZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1l
bnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0
cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJRCBhcmd1bWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkp
OworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJndW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1w
JiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWls
dXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5saW5rKHRoaXMpOworICAgICAgICAgICAgbV9m
YWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJRCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwx
MyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBm
YWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwo
ZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxz
LnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tp
XS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwotICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5k
KSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAg
ICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNFbnRyeS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNF
bnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsK
KyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lz
dGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZv
ciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dp
dGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnks
IHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5j
b2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVu
dHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRh
cmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIwIGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAt
MjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVudHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1fY2FsbHM7CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsK
K2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVyYXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciko
Vk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJv
bQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlv
biBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVS
ZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVudHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5
cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRB
cmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgfQorCisjaWYgIUVOQUJMRShD
QUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNl
bmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0KTsKKyAgICBVTlVTRURfUEFSQU0oZW50
cnlQb2ludHMpOworI2VuZGlmCisgICAgZW50cnlQb2ludHNbU3RhY2tBcmdzXSA9IGppdC5sYWJl
bCgpOworfQorCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0qIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpIHNsb3dQYXRoRnVuY3Rpb24pCiB7CkBA
IC04OCw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICAvLyBNb3Zpbmcg
dGhlIHN0YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMg
dXMgcm9vbSBmb3Igb3VyIDMgYXJndW1lbnRzCiAgICAgLy8gYW5kIHNwYWNlIGZvciB0aGUgMTYg
Ynl0ZSByZXR1cm4gYXJlYS4KICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQUkluZm86Om5vbkFyZ0dQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigzMiksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKQEAgLTEwMCw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICNl
bHNlCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1Bh
dGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlk
YXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpu
b25BcmdHUFIwKTsKQEAgLTEyNyw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigK
ICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVn
aXN0ZXIuIFdlIHdpbGwgaGVuY2UKICAgICAvLyBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0
aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwKQEAgLTEzNSw0
NSArMTU2LDE1MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyCiAg
ICAgLy8gdG8gYmUgaW4gcmVnVDAvcmVnVDEgKHBheWxvYWQvdGFnKSwgdGhlIENhbGxGcmFtZSB0
byBoYXZlIGFscmVhZHkKICAgICAvLyBiZWVuIGFkanVzdGVkLCBhbmQgYWxsIG90aGVyIHJlZ2lz
dGVycyB0byBiZSBhdmFpbGFibGUgZm9yIHVzZS4KICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
LSAgICAKKworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5
KGppdCwgZW50cnlQb2ludHMpOwogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxp
bmtDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxp
bmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNv
ZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRo
dW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBv
aW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAg
Zm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdzOyBlbnRyeUluZGV4IDwgIFRodW5r
RW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7CisgICAgICAgIGNhbGxFbnRyeVBv
aW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUlu
ZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50
cnlJbmRleF0pKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOworfQorCitK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK3sKKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNr
IG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxsIGhlbmNlCisgICAgLy8gc2F2ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5j
dGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9ybSBsaW5raW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9u
IGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRoZSBDYWxsTGlua0luZm8KKyAgICAvLyB0byBiZSBp
biBHUFJJbmZvOjpub25BcmdHUFIwLCB0aGUgY2FsbGVlIHRvIGJlIGluIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSwKKyAgICAvLyB0aGUgQ2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeSBiZWVu
IGFkanVzdGVkLCBhbmQgYXJndW1lbnRzIGluIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIC8vIGFu
ZC9vciBpbiB0aGUgc3RhY2sgYXMgYXBwcm9wcmlhdGUuCisgICAgQ0NhbGxIZWxwZXJzIGppdCh2
bSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50
cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50
cnkoaml0LCBlbnRyeVBvaW50cyk7CisKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7IC8vIFNhdmUgY2FsbGVlJ3MgZnJhbWUgcG9p
bnRlcgorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOworCisgICAgaWYg
KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50
cyhHUFJJbmZvOjpub25BcmdHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwLCBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGlmICht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBH
UFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOwor
ICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmdDb3VudFJlZyk7CisKKyAgICAvLyBsb2Fk
ICJ0aGlzIgorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9n
dWUoMCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOworCisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGZpbGxVbmRlZmluZWRbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSU107CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykgeworICAgICAgICBmaWxsVW5kZWZpbmVkW2FyZ0luZGV4XSA9IGppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpOworICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJh
bWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKworICAgIENDYWxsSGVscGVyczo6SnVt
cCBkb25lRmlsbGluZyA9IGppdC5qdW1wKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gMTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdLmxpbmsoJmpp
dCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgZG9uZUZpbGxpbmcubGluaygmaml0KTsKKyNl
bmRpZgorCisKKyAgICBqaXQucmV0KCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBkaXJlY3QgY2FsbCB0aHVuayIp
KTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMg
PSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtF
bnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9p
bnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5k
ZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRy
eUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQog
CiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25zLCB3ZSBvbmx5IGluY2x1ZGUgY2FsbHMsIHNp
bmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBmb3IKIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24g
dGhlbiB5b3UncmUgZ29pbmcgdG8gbG9zZSBiaWcgdGltZSBhbnl3YXkuCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CiAgICAgCisgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07
CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50
cyk7CisKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWND
YWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsg
cG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3Jw
aGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNr
QXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgr
KykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1
bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzdGluZ3Vp
c2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwgY2FsbCB2cy4gYSBzbG93CiAvLyBwYXRo
IHZpcnR1YWwgY2FsbCBzbyB0aGF0IHdlIGNhbiBlbmFibGUgZmFzdCB0YWlsIGNhbGxzIGZvciBt
ZWdhbW9ycGhpYwogLy8gdmlydHVhbCBjYWxscyBieSB1c2luZyB0aGUgc2h1ZmZsZXIuCiAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODMxCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3Io
Vk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICAvLyBUaGUgY2FsbGVl
IGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0LCB0aGUgdGFnIGlzIGluIHJlZ1QxKS4KLSAg
ICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayBy
ZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQotICAgIC8vIGp1bXAgdG8gdGhlIGNhbGxlZSwgb3Igc2F2
ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UKLSAgICAvLyBt
YWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24u
CisgICAgLy8gVGhlIGNhbGxlZSBpcyBpbiBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgKGZv
ciBKU1ZBTFVFMzJfNjQsIGl0IGlzIGluIHJlZ1QxOnJlZ1QwKS4KKyAgICAvLyBUaGUgQ2FsbExp
bmtJbmZvIGlzIGluIEdQUkluZm86Om5vbkFyZ0dQUjAuCisgICAgLy8gVGhlIHJldHVybiBhZGRy
ZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuCisgICAgLy8vIFdl
IHdpbGwgaGVuY2UganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVz
cyB0byB0aGUgY2FsbAorICAgIC8vIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24g
Y2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KIAogICAgIENDYWxsSGVscGVy
cyBqaXQodm0pOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0g
ICAgCi0gICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0aCBleGVjdXRpb24sIGFuZCByZWdUMiBjb250
YWlucyB0aGUgQ2FsbExpbmtJbmZvLiBDb3VudCB0aGUKLSAgICAvLyBzbG93IHBhdGggZXhlY3V0
aW9uIGZvciB0aGUgcHJvZmlsZXIuCisKKyAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgR1BSUmVnIGNh
bGxlZVRhZ1JlZyA9IEdQUkluZm86OnJlZ1QxOworI2VuZGlmCisgICAgR1BSUmVnIHRhcmdldFJl
ZyA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisgICAgLy8gVGhpcyBpcyB0aGUgQ2FsbExpbmtJbmZv
KiBvbiBlbnRyeSBhbmQgdXNlZCBsYXRlciBhcyBhIHRlbXAuCisgICAgR1BSUmVnIGNhbGxMaW5r
SW5mb0FuZFRlbXBSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIwOworCisgICAgaml0LmZpbGxBcmd1
bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHJlZ2lzdGVyRW50cnkgPSBqaXQubGFiZWwoKTsKKyNlbmRpZgorCisgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6VmlydHVhbENhbGwpOworCisgICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0
aCBleGVjdXRpb24uIENvdW50IHRoZSBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmls
ZXIuCiAgICAgaml0LmFkZDMyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBDYWxsTGlu
a0luZm86Om9mZnNldE9mU2xvd1BhdGhDb3VudCgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhjYWxsTGlua0luZm9BbmRUZW1wUmVnLCBDYWxsTGlua0luZm86Om9mZnNldE9mU2xv
d1BhdGhDb3VudCgpKSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBm
b3IgZWxpbWluYXRpbmcgdGhlc2UgY2hlY2tzLiBJbiBtYW55IGNhc2VzLAogICAgIC8vIHRoZSBE
Rkcga25vd3MgdGhhdCB0aGUgdmFsdWUgaXMgZGVmaW5pdGVseSBhIGNlbGwsIG9yIGRlZmluaXRl
bHkgYSBmdW5jdGlvbi4KQEAgLTE4MSw1NCArMzEwLDY5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsVGh1bmtGb3IoVk0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHNsb3dDYXNlLmFw
cGVuZCgKICAgICAgICAgaml0LmJyYW5jaFRlc3Q2NCgKLSAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBjYWxsZWVSZWcsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwogI2Vsc2UKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGpp
dC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86
OnJlZ1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlVGFnUmVn
LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKICNlbmRpZgotICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQ
UkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uVHlwZSkpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQu
YnJhbmNoSWZOb3RUeXBlKGNhbGxlZVJlZywgSlNGdW5jdGlvblR5cGUpKTsKICAgICAKICAgICAv
LyBOb3cgd2Uga25vdyB3ZSBoYXZlIGEgSlNGdW5jdGlvbi4KICAgICAKICAgICBqaXQubG9hZFB0
cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKKyAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICB0YXJnZXRSZWcpOwogICAgIGppdC5sb2FkUHRyKAog
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdU
NCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSkpLAotICAgICAg
ICBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDQpKTsKKyAgICAgICAgICAgIHRhcmdl
dFJlZywgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoCisgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpLAorICAgICAgICAgICAgICAgIGVudHJ5
UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby5hcmd1bWVudHNMb2NhdGlvbigpKSkpLAorICAgICAg
ICB0YXJnZXRSZWcpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIHRhcmdldFJlZykpOwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHRo
YXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBm
YXN0CiAgICAgLy8gY2FsbC4KICAgICAKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdp
bGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGpp
dCwgR1BSSW5mbzo6cmVnVDQpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIHRhcmdl
dFJlZyk7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAgaml0
LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
IGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKKyAgICAgICAgaml0
LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAg
aml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChjYWxsTGlua0luZm9BbmRUZW1wUmVn
KTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3codGFyZ2V0UmVnKTsKICAgICB9
Ci0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDQpOwotCisgICAgaml0Lmp1bXAodGFyZ2V0UmVn
KTsKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwotICAgIAorCisgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VmlydHVhbFNsb3dDYWxsKTsKKwogICAgIC8vIEhlcmUgd2UgZG9uJ3Qga25v
dyBhbnl0aGluZywgc28gcmV2ZXJ0IHRvIHRoZSBmdWxsIHNsb3cgcGF0aC4KKyAgICBqaXQuc3Bp
bGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwogICAgIAogICAgIHNs
b3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZpcnR1YWxDYWxsKTsKICAgICAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKAotICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZp
cnR1YWwgJXMgc2xvdyBwYXRoIHRodW5rIiwKICAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxNb2Rl
KCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBjYWxsTGlua0luZm8uY2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6VGFpbCA/ICJ0YWlsIGNhbGwiIDogImNvbnN0cnVjdCIpKTsKKyAgICBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0Nh
bGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKworICAgIGNhbGxFbnRyeVBvaW50
cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NFbnRyeSwgY29kZVJlZi5jb2RlKCkpOworCisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZWdpc3RlckVudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihyZWdpc3Rl
ckVudHJ5KTsKKworICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFJlZ2lzdGVyMUFyZ0Vu
dHJ5OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsr
KQorICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtF
bnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksIHJlZ2lzdGVyRW50cnlQdHIpOworI2VuZGlmCisK
KyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQogCiBlbnVtIFRodW5rRW50cnlUeXBlIHsg
RW50ZXJWaWFDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzLCBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzIH07CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9y
R2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5
VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCitzdGF0aWMgSklURW50cnlQb2ludHNXaXRo
UmVmIG5hdGl2ZUZvckdlbmVyYXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFDYWxsKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBh
Y2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4OQpAQCAtMjM3LDggKzM4MSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZUZvckdlCiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBzdGFja0FyZ3NFbnRyeTsKKwogICAgIHN3aXRjaCAoZW50cnlUeXBl
KSB7CiAgICAgY2FzZSBFbnRlclZpYUNhbGw6CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyAgICAgICAgc3RhY2tBcmdzRW50cnkg
PSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzOgpAQCAtMzc5
LDI1ICs1MjksMzMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQog
ICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0g
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50
cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNh
dmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUg
JXMlcyB0cmFtcG9saW5lIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3Mg
PyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5n
KGtpbmQpLmRhdGEoKSkpOworICAgIGlmIChlbnRyeVR5cGUgPT0gRW50ZXJWaWFDYWxsKSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVS
ZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2Rl
UmVmLmNvZGUoKSk7CisKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3Io
Vk0qIHZtKQogewogICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxs
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwg
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRv
cih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MpLmNvZGVSZWYoKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
c0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwg
Q29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpOworICAgIHJldHVybiBu
YXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2
ZWRUYWdzKS5jb2RlUmVmKCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2
bSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CkBAIC01MzYsNiArNjk0LDQzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJ1bnJlYWNoYWJsZSB0aHVuayIpKTsKIH0KIAorI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKK3N0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2Fk
UmVnQ2FsbChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKK3sKKyAgICAvLyBsb2Fk
IHN0cmluZworICAgIEdQUlJlZyB0aGlzUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoMCk7CisgICAgR1BSUmVnIGluZGV4UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMik7CisgICAgR1BSUmVnIGxlbmd0aFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpOworICAgIEdQUlJlZyB0ZW1wUmVnID0gU3BlY2lhbGl6
ZWRUaHVua0pJVDo6bm9uQXJnR1BSMDsKKworICAgIGppdC5jaGVja0pTU3RyaW5nQXJndW1lbnQo
KnZtLCB0aGlzUmVnKTsKKworICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5k
IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1Qw
CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzUmVnLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJp
bmdWYWx1ZU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcFJlZykpOworCisgICAgLy8gbG9h
ZCBpbmRleAorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KDEpLCBpbmRleFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJ
bnQzMihpbmRleFJlZykpOworCisgICAgLy8gRG8gYW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11
bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5kaWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBsZW5ndGhSZWcpKTsKKworICAgIC8v
IExvYWQgdGhlIGNoYXJhY3RlcgorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlz
MTZCaXQ7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CisgICAg
Ly8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIGxlbmd0aFJlZyk7
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgbGVuZ3RoUmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzT25lLCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQuYXBwZW5kKGppdC5q
dW1wKCkpOworICAgIGlzMTZCaXQubGluaygmaml0KTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgodGVtcFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c1R3bywgMCksIHRlbXBSZWcpOworICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7Cit9CisjZWxzZQog
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSog
dm0pCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKQEAgLTU2NSw2ICs3NjAsNyBAQCBzdGF0aWMgdm9p
ZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRoCiAgICAgaml0LmxvYWQxNihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwogICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7CiB9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZt
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzcmMsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKQEAgLTU3NCwz
NCArNzcwLDY5IEBAIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhTcGVjaWFsaXplZFRodW4KICAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgZHN0KSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5SZWdpc3RlcnMpOworICAgIHN0
cmluZ0NoYXJMb2FkUmVnQ2FsbChqaXQsIHZtKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOwor
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwg
ImNoYXJDb2RlQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNoYXJDb2RlQXQiKTsKKyNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFs
aXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGpp
dCwgdm0pOworICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpu
b25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhl
cmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlI
ZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkp
OworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJjaGFyQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckF0Iik7CisjZW5kaWYKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGpp
dCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OkluUmVnaXN0ZXJzKTsKKyAgICAvLyBsb2FkIGNoYXIgY29kZQorICAgIGppdC5tb3ZlKGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDEpLCBTcGVjaWFsaXplZFRodW5rSklU
Ojpub25BcmdHUFIwKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdElu
dDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjApKTsKKworICAgIGNoYXJUb1N0cmlu
ZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1
bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CisgICAg
aml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vs
c2UKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEFsbCk7CiAgICAgLy8gbG9hZCBjaGFyIGNvZGUKICAgICBqaXQubG9hZEludDMyQXJndW1l
bnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZW5kaWYK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
SklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub25JbnRBcmdKdW1wOwpAQCAtNjIyLDExICs4NTMsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNsejMyVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjbHozMiIpOwogfQogCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJl
ZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogICAgIGppdC5sb2FkRG91Ymxl
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtNzgyLDEyICsxMDEzLDEy
IEBAIGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKTsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7CiAgICAgCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxv
b3JUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaWYgKCFVbmFyeURv
dWJsZU9wV3JhcHBlcihmbG9vcikgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0t
PmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkSW50MzJBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0
LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1w
LmxpbmsoJmppdCk7CkBAIC04MjUsMTEgKzEwNTYsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmbG9vciIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
ZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZt
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50
MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg0OCwx
MSArMTA3OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yCiAg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImNlaWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVu
YXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgp
KQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVy
biB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC04NzEsMTEgKzExMDIsMTEgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJ0cnVuYyIpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIo
anNSb3VuZCkgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1
bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDApOwpAQCAtOTA1LDM3ICsxMTM2LDM3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBy
b3VuZFRodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicm91bmQiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihl
eHApKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRE
b3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdS
ZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhwKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZXhwIik7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVP
cFdyYXBwZXIobG9nKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQ
cmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1
cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5m
aW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImxvZyIpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50
cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1Bv
aW50QWJzKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAg
ICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgdW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXggPSBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0KDApOwpAQCAtOTg4LDcgKzEyMTksNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImFicyIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAyKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsK
QEAgLTEwMTksMTEgKzEyNTAsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dl
bmVyYXRvcgogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVU
YWlsQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21U
aHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsK
ICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRF
bnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqaXQuZW1pdFJh
bmRvbVRodW5rKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QzLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKQEAgLTEwMzEsMTYgKzEyNjIs
MjIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdAogCiAgICAgcmV0
dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJh
bmRvbSIpOwogI2Vsc2UKLSAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAg
cmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIENDYWxsSGVscGVycyBqaXQodm0pOworICAg
IEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
ZmFpbHVyZXM7CisKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQ
cm9sb2d1ZSgpOwogICAgIAotICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OkxhYmVsIHN0YWNrQXJnc0VudHJ5KCZqaXQpOwogICAgIAorICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZy
YW1lLgogICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsK
ICAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMTExMCwyMCAr
MTM0NywyMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNl
OjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAorICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKENv
ZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpLAogICAgICAgICBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAgIGZhaWx1cmVzLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7
CiAgICAgCiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7Ci0gICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIGxpbmtCdWZmZXIubGluayhub0Nv
ZGUsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRo
b3V0U2F2ZWRUYWdzKHZtKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBs
aW5rQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3
aXRoIG5vIGFyZ3VtZW50cyIpKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlcywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZl
ZFRhZ3Modm0pKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlv
biBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
c3RhY2tFbnRyeVB0ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkpOwor
CisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUo
KSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0Vu
dHJ5UHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zNiwzNCArMzcsMzUgQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcihWTSopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0Nh
bGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNKiwgQ2FsbExpbmtJbmZvJik7CitKSVRKU0NhbGxUaHVua0VudHJ5
UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5y
ZWFjaGFibGVHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2Rl
QXRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRv
cihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
KFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVu
a0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
aGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFy
QXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dl
bmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bG9nVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRodW5r
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKik7CitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3Io
Vk0qKTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDEyICs0NiwyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5
cG9pbnQoVk0mIHZtCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSgKKyAgICAgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lz
dGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAg
ICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdp
c3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciku
Y29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVn
aXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCkBAIC01OSwxMiArNzMsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVu
Y3Rpb25FbnRyeXBvaW50KFZNJiB2bQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAg
ICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVM
TEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjaykpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKQEAgLTcyLDE0ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2V0RXZh
bEVudHJ5cG9pbnQoVk0mIHZtLCBDbwogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
aykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAg
ICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
dm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAg
ICAgICAgICAgICB2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkp
LAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcg
RGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAor
ICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCkp
LAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
QEAgLTg3LDE0ICsxMjksMjggQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0m
IHZtLAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtMTAyLDE0ICsxNTgsMjggQEAg
c3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoVgogI2lmIEVOQUJMRShKSVQp
CiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIo
bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAor
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDkgKzM3Myw5IEBA
IHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgIk9TUiBlbnRyeSIsICgiaW4gcHJvbG9ndWUiKSk7CiAgICAg
CiAgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCi0gICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFT
U0VSVChraW5kID09IEFyaXR5Q2hlY2spOwotICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRk
cmVzcygpLCAwKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5h
ZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgMCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlw
ZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IGNoYXIqLCBFbnRyeUtpbmQpCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJp
dHkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
CiAKQEAgLTEzMDYsMTIgKzEzMDYsMTIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRV
cENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVudHJ5UG9pbnRU
eXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAg
ICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlw
ZSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCEhY29kZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDEwICs1MSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVu
dHJ5CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCitlbnVtIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgeyBDcmVhdGVS
ZWdpc3RlckVudHJ5LCBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSB9OworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZNKiB2bSwgdm9pZCAoKnRh
cmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kLCBTaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5
IHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgPSBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSkKIHsK
ICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9PSBDcmVhdGVSZWdpc3RlckVudHJ5
KQorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7
CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0
byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKQEAgLTYzLDI0ICs3Miw0NCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdl
bmVyYXRlVGh1CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTExJbnQg
JXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihW
TSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgImZ1
bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwiLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dl
bmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZt
LCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwiKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBjb25zdHJ1Y3QiLCBDcmVhdGVSZWdpc3Rl
ckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjb25z
dHJ1Y3QiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIGNhbGwiKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHJlZ2lz
dGVyIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0Iik7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9u
IGZvciBzdGFjayBhcmdzIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENv
ZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
ImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIiwg
Q3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rp
b24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAyMDk1
MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklW
QVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50IHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0q
KTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01v
ZGUuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJpdHlDaGVja01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGVudW0gQXJpdHlDaGVja01vZGUgeworICAgIFJlZ2lzdGVyRW50cnksCiAg
ICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLAogICAgIE11c3RDaGVja0FyaXR5CiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAko
cmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2ppdENvZGVGb3JD
YWxsID0gbnVsbHB0cjsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBudWxscHRyOwotICAg
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKKyAg
ICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAjZW5kaWYKICAgICBt
X251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAg
IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxF
RDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJh
c2UuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbERh
dGEuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgi
CiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNs
dWRlICJKSVRFbnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE0NSw0NyArMTQ1
LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1
Y3QoKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnRG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBBcml0eUNoZWNrTW9kZSBhcml0eSkKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKICAgICB7CiAgICAgICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5
IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAgICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50
IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJl
Y3RseSBpbgogICAgICAgICAvLyBtYWNoaW5lIGNvZGUuCi0gICAgICAgIGlmIChhcml0eSA9PSBN
dXN0Q2hlY2tBcml0eSkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAg
ICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBy
ZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JDYWxsLmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHJlc3VsdCA9IG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5lbnRyeUZvcihlbnRyeVR5cGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAgICAgICAgICAg
IGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGFyaXR5KTsKLSAgICAg
ICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgICAgICAvLyBDYWNoZSB0
aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZpcnR1YWwgY2FsbCBv
cHRpbWl6YXRpb25zLgotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1
Y3RXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NG
b3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMg
bmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlvbnMuCisgICAg
ICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAg
ICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAg
ICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVENvZGVXaXRoQXJp
dHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFz
ZSwgbV9qaXRFbnRyaWVzRm9yQ2FsbCkgKyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZv
cihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNvbnN0cnVjdCkgKyBKSVRFbnRy
eVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yMzMsOCArMjI4LDggQEAgcHJvdGVjdGVkOgogICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsK
ICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRzIG1f
aml0RW50cmllc0ZvckNhbGw7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRyaWVzRm9yQ29u
c3RydWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTUw
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZFRoaXNObwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGFyZ2V0
RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZv
ckNhbGwoKSkgewogICAgICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMg
YXJpdHkgZW50cnlwb2ludC4KLSAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2Rl
Rm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodGFy
Z2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENy
ZWF0aW9uKFZNCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIG1faml0Q29kZUZv
ckNhbGwgPSBjYWxsVGh1bms7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0
VGh1bms7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9y
Q2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwotICAgIG1faml0Q29kZUZvckNv
bnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9y
Q2FsbChNdXN0Q2hlY2tBcml0eSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZv
cihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNh
bGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1
Y3Quc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIG1faml0Q29kZUZvckNvbnN0
cnVjdC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKICAgICBtX25h
bWUgPSBuYW1lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUo
Vk0mIHYKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAg
ICBtX2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2st
PmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX2ppdEVudHJpZXNGb3JD
YWxsLmNsZWFyRW50cmllcygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gZ2Vu
ZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA6IE5VTV9Q
QVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlRm9y
Q29uc3RydWN0OgogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJs
b2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmNsZWFyRW50cmllcygpOwogICAg
ICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2Vu
ZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJ
TEVEOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODIsNiArMjgyLDcgQEAgQ29kZUJsb2Nr
KiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbQogCiBzdGF0aWMgdm9pZCBzZXR1cExMSW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CisgICAgY29kZUJsb2NrLT5zZXRQcmVm
ZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBMTEludDo6c2V0RW50cnlwb2ludCh2bSwgY29kZUJs
b2NrKTsKIH0KIApAQCAtMjg5LDYgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2
bSwgQ29kZUJsb2NrKiAKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIENvbXBpbGF0aW9uUmVzdWx0
IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0
U3VjY2VlZCk7CisgICAgY29kZUJsb2NrLT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSwxMCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNp
emUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9w
KHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjbGVhckNv
dW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2
ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7CiAg
ICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdU
YWJsZSk7CkBAIC00NzMsNyArNDc3LDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06OmVuc3VyZVNh
bXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogI2lmIEVO
QUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5z
aWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRvciB0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIHN3aXRjaCAo
aW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAtOTIwLDQgKzky
NCwzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291bnRlcnMoKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7IGkrKykKKyAg
ICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3VudGVycygpCit7
CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSArIGNv
dW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRhTG9n
KCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRv
dGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQmFzZWxpbmUg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEw
enUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRhdGFMb2dGKCIl
MTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxsKSk7CisgICAg
ZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERpcmVjdENhbGwp
KTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJGb3Io
UG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBz
bG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAgIGRhdGFMb2dG
KCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NOb0Fy
aXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50
ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBh
cmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJlZ0Fy
Z3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNrXG4i
LCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFyaXR5
IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWlyZWQpKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYgKzQyNSwxNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAg
ICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHViKEpJVEVudHJ5
R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0
RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENhbGxUaHVua0Vu
dHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+
aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0czsKICAgICAKQEAgLTU2Miw2ICs1NzIsNTAgQEAgcHVibGljOgogICAgIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJlbnRKU0xvY2sg
bV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAgZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAgICAg
ICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERGR0NhbGxlciwKKyAgICAgICAgRlRMQ2FsbGVy
LAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAgICAgVGFpbENhbGwsCisgICAgICAgIENhbGxF
dmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAgICAgICBQb2x5bW9ycGhpY0NhbGwsCisgICAg
ICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0dWFsU2xvd0NhbGwsCisgICAgICAgIFJlZ0Fy
Z3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NOb0FyaXR5LAorICAgICAgICBSZWdBcmdzRXh0
cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAgICAgICAgU3RhY2tBcmdzQXJpdHksCisgICAg
ICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAgICAgTnVtYmVyVk1Db3VudGVyCisgICAgfTsK
KworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBzaXplX3QgbV9jb3VudGVyc1tOdW1iZXJW
TUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNvdW50ZXJzKCk7CisKKyAgICBzaXplX3QqIGFk
ZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fY291bnRlcnNbY291bnRlclR5cGVdOworICAg
IH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisg
ICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jb3VudGVyc1tjb3Vu
dGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291bnRl
cnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+
IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBBTFdBWVNfSU5MSU5FIEhhc093blByb3BlcnR5
Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5Q2Fj
aGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0
eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsMTcgQEAKICNk
ZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ0FMTEVSX1NQSUxM
U19DQUxMRUUgMAorI2RlZmluZSBFTkFCTEVfQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCAwCisjZGVm
aW5lIEVOQUJMRV9TVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHIDAKKyNkZWZpbmUgRU5BQkxF
X1NUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRyAwCisjZGVmaW5lIEVOQUJMRV9WTV9DT1VO
VEVSUyAwCisjZGVmaW5lIEVOQUJMRV9CQVNFTElORV9SRUdJU1RFUl9BUkdVTUVOVF9DQUxMUyAw
CisKKyNpZiAhZGVmaW5lZChVU0VfUkVHSVNURVJfQVJHVU1FTlRTKSAmJiBFTkFCTEUoSklUKSAm
JiBVU0UoSlNWQUxVRTY0KSAmJiAoT1MoREFSV0lOKSB8fCBPUyhVTklYKSkKKyNkZWZpbmUgVVNF
X1JFR0lTVEVSX0FSR1VNRU5UUyAxCisjZW5kaWYKKwogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdv
cmsgb24gMzItYml0IHBsYXRmb3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQg
dXMgdG8gZW5hYmxlIGl0LiAqLwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjdW5kZWYgRU5BQkxF
X0ZUTF9KSVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296624</attachid>
            <date>2016-12-08 19:43:09 -0800</date>
            <delta_ts>2016-12-09 14:56:22 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>reg-calls-wip186.patch</filename>
            <type>text/plain</type>
            <size>342391</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzcsNiArMzIzNyw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzU0LDYgKzEzNTQsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeVBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MjksNiArMzczMCw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5UG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU3NCw2ICs1NTc2LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03NzI3LDYgKzc3MzAsNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5UG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAg
ICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgICAg
IGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4
IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFzU2VlbkNsb3N1cmUo
ZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9hbGxvd1N0dWJzKHRy
dWUpCisgICAgLCBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cyhmYWxzZSkKKyAg
ICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFyZ3VtZW50c0xv
Y2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKICAgICAsIG1fY2Fs
bFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIwOTU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2lu
Y2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
TGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxvY2s7IH0KICAgICB2
b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAgIHZvaWQgc2V0
VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewor
ICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8fCAoYXJndW1lbnRz
TG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBl
OworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFy
Z3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKICAg
ICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1LDYgKzI3OSwyNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlw
ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRQcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVu
dHMoKQorICAgIHsKKyAgICAgICAgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMg
PSB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb3ZpZGVzUmVnaXN0ZXJBbmRT
dGFja0FyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50
c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIGFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4TnVt
QXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1bWVudHM7CkBA
IC0zMzksNiArMzYzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNsb3N1cmUgOiAx
OwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAx
OworICAgIGJvb2wgbV9wcm92aWRlc1JlZ2lzdGVyQW5kU3RhY2tBcmd1bWVudHMgOiAxOworICAg
IHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWdu
ZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4
MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBt
X2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3Ro
ZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9pc1N0cmljdE1vZGUob3RoZXIubV9pc1N0cmlj
dE1vZGUpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fY29k
ZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci5tX3Zt
LCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1faGFzRGVidWdnZXJT
dGF0ZW1lbnQoZmFsc2UpCkBAIC0xOTAyLDYgKzE5MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFs
c2UpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0
b3IoKSkKICAgICAsIG1faXNTdHJpY3RNb2RlKHVubGlua2VkQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZhbHNlKQogICAgICwgbV9jb2Rl
VHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
KG1fZ2xvYmFsT2JqZWN0LT52bSgpLCB0aGlzLCB1bmxpbmtlZENvZGVCbG9jaykKICAgICAsIG1f
aGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICsz
NjksMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpCisgICAg
eworICAgICAgICBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyA9IHRydWU7CisgICAgfQorCisgICAg
Ym9vbCBwcmVmZXJzU3RhY2tBcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzOworICAgIH0KKwogICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb2RlVHlwZT4obV9j
b2RlVHlwZSk7CkBAIC04NDUsNiArODU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNCZWVu
Q29tcGlsZWRXaXRoRlRMIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7IC8vIENvZGVUeXBlCiAKICAgICAv
LyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkgdmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBi
ZSBwcml2YXRlIGlmIGl0IHdhc24ndApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8t
PmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpD
YWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxv
YWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25l
OwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRoYXQgdGhlIGdldHRl
ci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVn
VDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fcmFyZURh
dGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldEpJ
VENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFj
a0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0
b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBl
ID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVh
ciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9k
ZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUp
IHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBj
YXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBz
aG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBp
dCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5k
aWYKICAgICBib29sIGlzUmVhY2hhYmxlOwotICAgIAorCiAgICAgVmVjdG9yPE5vZGUqPiBwaGlz
OwogICAgIFByZWRlY2Vzc29yTGlzdCBwcmVkZWNlc3NvcnM7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2ODcsMjAgKzM2ODcsNjggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9m
IGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAg
Ly8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkg
ewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Ci0g
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0
LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwotICAgICAgICAvLyBleGl0
T0sgPSB0cnVlLgorICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5yZXNpemUobV9u
dW1Bcmd1bWVudHMpOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcucmVz
aXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCBHZXRBcmd1bWVudFJl
Z2lzdGVyIG5vZGVzIGZpcnN0IGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1vdkhpbnQgbm9k
ZXMsCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFNldExvY2FsIG5v
ZGVzIGFuZCBmaW5hbGx5IGFueSBTZXRBcmd1bWVudCBub2RlcyBmb3IKKyAgICAgICAgLy8gdGhl
IHJlbWFpbmluZyBhcmd1bWVudHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgdG8gbWFrZSB0aGUg
ZXhpdCBwcm9jZXNzaW5nIGNvcnJlY3QuIFdlIHN0YXJ0IHdpdGggbV9leGl0T0sgPSB0cnVlIHNp
bmNlCisgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY2FuIGV4aXQsIGV2ZW4g
dGhvdWdoIHRoZXkgZG9uJ3QuIFRoZSBNb3ZIaW50J3MgdGVjaG5pY2FsbHkgY291bGQKKyAgICAg
ICAgLy8gZXhpdCBidXQgd29uJ3QuIFRoZSBTZXRMb2NhbHMgY2FuIGV4aXQgYW5kIHRoZXJlZm9y
ZSB3ZSB3YW50IGFsbCB0aGUgTW92SGludHMKKyAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBT
ZXRMb2NhbCBzbyB0aGF0IHRoZSByZWdpc3RlciBzdGF0ZSBpcyBjb25zaXN0ZW50LgorICAgICAg
ICAvLyBXZSBkbyBhbGwgdGhpcyBwcm9jZXNzaW5nIGJlZm9yZSBjcmVhdGluZyBhbnkgU2V0QXJn
dW1lbnQgbm9kZXMgc2luY2UgdGhleSBhcmUKKyAgICAgICAgLy8gbW9yYWxseSBlcXVpdmFsZW50
IHRvIHRoZSBTZXRMb2NhbHMgZm9yIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgCisgICAgICAg
IHVuc2lnbmVkIG51bVJlZ2lzdGVyQXJndW1lbnRzID0gc3RkOjptaW4obV9udW1Bcmd1bWVudHMs
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisgICAgICAgIFZl
Y3RvcjxOb2RlKiwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUz4gZ2V0
QXJndW1lbnRSZWdpc3Rlck5vZGVzOworCisgICAgICAgIC8vIEZpcnN0IGNyZWF0ZSBHZXRBcmd1
bWVudFJlZ2lzdGVyIG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBudW1SZWdpc3RlckFyZ3VtZW50czsgKythcmd1bWVudCkgeworICAgICAgICAg
ICAgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE9wSW5mbygwKSwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1
bWVudCkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBNb3ZIaW50
J3MgZm9yIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRB
cmd1bWVudFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQs
IE9wSW5mbyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSksIGdldEFyZ3Vt
ZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZXhpdCBhbnltb3JlLgorICAg
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4aXQg
aXMgbm93IG9rYXksIGJ1dCB3ZSBuZWVkIHRvIGZlbmNlIHdpdGggYW4gRXhpdE9LIG5vZGUuCisg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisg
ICAgICAgIC8vIENyZWF0ZSBhbGwgdGhlIFNldExvY2FscydzIGZvciB0aGUgR2V0QXJndW1lbnRS
ZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzW2ld
OworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9
IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBnZXRBcmd1
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoaSkgPSBzZXRMb2NhbDsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0
ZXItPnNldFZhcmlhYmxlQWNjZXNzRGF0YShzZXRMb2NhbC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV0gPSBzZXRMb2NhbDsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IGdldEFyZ3Vt
ZW50UmVnaXN0ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhbnkg
U2V0QXJndW1lbnQgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAogICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwg
T3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3Vt
ZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3Rh
Y2tbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEwLDggKzQ4NTgsMTAgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBvdXIgYXJndW1lbnRzIGhl
cmUgc2luY2UgdGhhdCB3b24ndCBiZQogICAgICAgICAgICAgLy8gZG9uZSBieSB0aGUgYXJndW1l
bnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkgbm90IGV4aXN0LgogICAg
ICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkgPSBoYW5kbGVWYXJhcmdz
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2Rl
OjpUYWlsKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGZsdXNoIG5vZGVzIGZv
ciBvdXIgYXJndW1lbnRzIGFmdGVyIHRoZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzCisgICAgICAg
ICAgICAvLyBub2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHN0YWNrIGFu
ZCBrZXB0IGFsaXZlLgorICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3Ry
dWN0aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNh
bGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYg
dGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVy
IGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KICAgICAg
ICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3
YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQg
Y2xlYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDE0ICsyOTksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3Ig
dGhyZWFkZWQgQ1BTIGZvcm06CiAgICAgICAgICAgICAvLyAKICAgICAgICAgICAgIC8vIEhlYWQg
dmFyaWFibGU6IGRlc2NyaWJlcyB3aGF0IGlzIGxpdmUgYXQgdGhlIGhlYWQgb2YgdGhlIGJhc2lj
IGJsb2NrLgotICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBvciBTZXRBcmd1bWVudC4KLSAgICAgICAgICAgIC8v
IFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KKyAgICAgICAg
ICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZsdXNoLCBQaGFudG9tTG9j
YWwsIFBoaSwgR2V0QXJndW1lbnRSZWdpc3RlcgorICAgICAgICAgICAgLy8gb3IgU2V0QXJndW1l
bnQuCisgICAgICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBt
YXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCiAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgLy8gVGFpbCB2YXJpYWJsZTogdGhlIGxhc3QgdGhpbmcgdGhhdCBoYXBwZW5lZCB0byB0
aGUgdmFyaWFibGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAgICAgLy8gSXQgbWF5IGJlIGEgRmx1
c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBTZXRBcmd1bWVudCwgb3IgUGhp
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlcgotICAgICAgICAgICAgLy8gd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLCBhbmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2Nh
bHMgYW5kCi0gICAgICAgICAgICAvLyBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuIHRo
ZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgorICAgICAgICAgICAgLy8gSXQg
bWF5IGJlIGEgRmx1c2gsIFBoYW50b21Mb2NhbCwgR2V0TG9jYWwsIFNldExvY2FsLCBHZXRBcmd1
bWVudFJlZ2lzdGVyLAorICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQsIG9yIFBoaS4gR2V0QXJn
dW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyCisgICAgICAgICAg
ICAvLyBpbiB0aGUgcm9vdCBibG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIgd2FzIGEgR2V0
TG9jYWwgdG8gdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgLy8gYW5kIGl0IHdhcyBmb2xsb3dl
ZCBieSBQaGFudG9tTG9jYWxzIGFuZCBGbHVzaGVzIGJ1dCBub3QgU2V0TG9jYWxzLCB0aGVuCisg
ICAgICAgICAgICAvLyB0aGUgdGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KICAg
ICAgICAgICAgIC8vIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB5b3Ugb25seSBjYXJlIHRo
YXQgdGhlIHRhaWwgdmFyaWFibGUgaXMgYQogICAgICAgICAgICAgLy8gRmx1c2ggb3IgUGhhbnRv
bUxvY2FsIGlmIG5vdGhpbmcgZWxzZSBpbnRlcmVzdGluZyBoYXBwZW5lZC4gTGlrZXdpc2UsIGlm
CiAgICAgICAgICAgICAvLyB0aGVyZSBldmVyIHdhcyBhIFNldExvY2FsIGFuZCBpdCB3YXMgZm9s
bG93ZWQgYnkgRmx1c2hlcywgdGhlbiB0aGUgdGFpbApAQCAtMzY3LDEyICszNjksMTMgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIHNwZWNpYWxDYXNlQXJndW1lbnRzKCkKICAgICB7Ci0gICAg
ICAgIC8vIE5vcm1hbGx5LCBhIFNldEFyZ3VtZW50IGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IgYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4KLSAgICAgICAgLy8gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUg
bWFjaGluZSBDb2RlQmxvY2sgZ2V0Ci0gICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxk
IGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhl
IGFyZ3VtZW50cwotICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIg
Zm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTsp
Ci0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1l
bnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgIC8vIE5vcm1h
bGx5LCBhIFNldEFyZ3VtZW50IG9yIFNldExvY2FsIGRlbm90ZXMgdGhlIHN0YXJ0IG9mIGEgbGl2
ZSByYW5nZSBmb3IKKyAgICAgICAgLy8gYSBsb2NhbCdzIHZhbHVlIG9uIHRoZSBzdGFjay4gQnV0
IHRob3NlIFNldEFyZ3VtZW50cyBhbmQgU2V0TG9jYWxzIHVzZWQKKyAgICAgICAgLy8gZm9yIHRo
ZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQgc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZQorICAgICAgICAvLyBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVu
dCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LAorICAgICAgICAvLyBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNl
ZW1lZCBsaWtlIElSIG92ZXJraWxsLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2tbaV0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5k
S2luZCBvcGVyYW5kS2luZD4KQEAgLTQ4MCw2ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAg
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGk6CiAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFy
Z3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgpAQCAtNDcwLDcgKzQ3MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAg
IC8vIERGRyBiYWNrZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvY2FscyB0aGF0IHRoaXMgcmVhZHMg
YXJlIGZsdXNoZWQuIEZUTCBiYWNrZW5kIGNhbiBoYW5kbGUgdGhvc2UKICAgICAgICAgLy8gbG9j
YWxzIGJlaW5nIHByb21vdGVkLgotICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSkKKyAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkgJiYgIW5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZWFkKFN0YWNrKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGl0J3MgcGhhbnRvbSwgaXQgc3RpbGwgaGFz
IHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4ndCBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIuCkBA
IC01NTksMTEgKzU2MCwxOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgogICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzOgotICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAg
ICAgICAgcmVhZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCisgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAg
ICAvLyBXZSByZWFkIGFsbCBhcmd1bWVudHMgYWZ0ZXIgInRoaXMiLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZyA9IDE7IGFyZyA8IGdyYXBoLm1fYXJndW1lbnRzT25TdGFjay5zaXplKCk7IGFy
ZysrKQorICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZykpKTsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRl
KFNpZGVTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0R2V0dGVyOgogICAg
ICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KEdldHRlckxvYywgR2V0dGVyU2V0dGVyX2dldHRlciwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlz
aW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOCBAQCBlbnVtIFN0cnVjdHVyZVJlZ2lzdHJhdGlv
blJlc3VsdCB7IFN0cnVjCiAKIGVudW0gT3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSB7IEJlZm9y
ZUZpeHBvaW50LCBGaXhwb2ludE5vdENvbnZlcmdlZCwgRml4cG9pbnRDb252ZXJnZWQgfTsKIAor
ZW51bSBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyB7IERvbnRPcHRpbWl6ZUFyZ3VtZW50
Rmx1c2hlcywgT3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKKwogLy8gRGVzY3JpYmVzIHRoZSBm
b3JtIHlvdSBjYW4gZXhwZWN0IHRoZSBlbnRpcmUgZ3JhcGggdG8gYmUgaW4uCiBlbnVtIEdyYXBo
Rm9ybSB7CiAgICAgLy8gTG9hZFN0b3JlIGZvcm0gbWVhbnMgdGhhdCBiYXNpYyBibG9ja3MgbWF5
IGZyZWVseSB1c2UgR2V0TG9jYWwsIFNldExvY2FsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAg
ICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2spOworICAgICAgICBj
bGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpOwogCiAgICAgICAg
IC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlz
aW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjoKICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblBy
b2xvZ3VlOgogICAgIGNhc2UgTG9nU2hhZG93Q2hpY2tlblRhaWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDgg
KzkwLDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIC8vIG1h
a2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9y
KTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIAogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkK
ICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0
ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzg3LDYgKzE3ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIEdldENhbGxlZToK
KyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsMTkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBmb3JtYXQpOwogICAgIH0K
KworICAgIHZvaWQgaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJf
dCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9ICBEYXRh
Rm9ybWF0SlMpCisgICAgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAgICBtX3VzZUNv
dW50ID0gdXNlQ291bnQ7CisgICAgICAgIG1fcmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1h
dDsKKyAgICAgICAgbV9zcGlsbEZvcm1hdCA9IERhdGFGb3JtYXROb25lOworICAgICAgICBtX2Nh
bkZpbGwgPSBmYWxzZTsKKyAgICAgICAgdS5ncHIgPSBncHI7CisgICAgICAgIG1fYm9ybkZvck9T
UiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJU
KG1fdXNlQ291bnQpOworICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBp
bml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAy
MDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk0LDcgKzI5NCw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFu
dHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChk
YXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQotICAgIEFTU0VSVChub2RlLT5oYXNW
YXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpID09IG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpKTsK
ICAgICBpZiAobm9kZS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkgewogICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnRyeUdldFZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhKSB7CkBAIC0z
NzMsNiArMzcyLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS0+Y2FzZXNbaV0udmFs
dWUsIGNvbnRleHQpLCAiOiIsIGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgImRlZmF1bHQ6IiwgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgIH0KKyAgICBp
ZiAobm9kZS0+aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCksICIoIiwgR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSwgIikiKTsKICAgICBD
bG9iYmVyU2V0IHJlYWRzOwogICAgIENsb2JiZXJTZXQgd3JpdGVzOwogICAgIGFkZFJlYWRzQW5k
V3JpdGVzKCp0aGlzLCBub2RlLCByZWFkcywgd3JpdGVzKTsKQEAgLTM5Niw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIldhc0hvaXN0ZWQiKTsKICAgICBvdXQucHJpbnQoIikiKTsKIAotICAgIGlmIChu
b2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKKyAgICBpZiAoKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9wKCkg
PT0gR2V0QXJndW1lbnRSZWdpc3RlcikgJiYgbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRh
KCkpCiAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChu
b2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAgICAgZWxz
ZSBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgb3V0LnByaW50KCIgIHBy
ZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpKTsK
QEAgLTUwNiw4ICs1MDcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBE
dW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRl
LCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0
aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsK
ICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZv
cm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQot
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyks
ICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBj
aGVja2luZzogIiwgbGlzdER1bXAobV9hcmd1bWVudHNGb3JDaGVja2luZyksICJcbiIpOworICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIG9uIHN0YWNrOiAiLCBsaXN0RHVtcChtX2FyZ3Vt
ZW50c09uU3RhY2spLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAog
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTE2MjAsMTMgKzE2MjMsMTQgQEAgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICBpZiAoIWN1cnJl
bnROb2RlIHx8IG5vZGUtPm9yaWdpbiAhPSBjdXJyZW50Tm9kZS0+b3JpZ2luKSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFj
aygqdGhpcykpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvRG86IE5lZWQgYSBiZXR0ZXIgdGVz
dAorICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJvZmlsZSogewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjA5NTkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5N
YWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFu
ZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxv
Y2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhp
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51
c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CkBAIC04Nzgs
OSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9z
dG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRo
ZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2Rl
IGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXli
ZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBu
b2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lz
dGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRo
ZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2Vw
dCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBG
bHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdl
dFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sg
dGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFu
ZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMs
MTEgKzkwMywxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRo
QWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8g
dGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVu
dHM7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c09uU3RhY2s7CisgICAgVmVjdG9y
PE5vZGUqLCA4PiBtX2FyZ3VtZW50c0ZvckNoZWNraW5nOwogICAgIAogICAgIC8vIEluIENQUywg
dGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxh
dGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJn
dW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNz
RGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1
bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKQEAgLTk1NCw2ICs5NTUsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5p
ZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6Oklu
aXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVk
dWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGlt
aXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAg
ICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07
CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTks
MTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAK
LXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1
cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5l
ZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUg
cHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSds
bCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZp
Y2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9u
IHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8g
Ym90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24g
aGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0K
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAg
ICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQg
PSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5m
bzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBG
dW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93
Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlv
bk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVj
b3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBp
bmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGws
IGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJl
Y29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5z
bG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtE
aXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24o
KSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3Nw
ZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAg
ICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGlu
IHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2Rl
QmxvY2spOwogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOworCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCBy
ZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwg
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpKTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAg
ICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93
UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCks
IFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYs
MjQgKzQxNiw5MSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxvY2so
KS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxl
KCpsaW5rQnVmZmVyKTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOwor
I2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBv
aW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlG
b3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRp
b25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxh
biwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50
cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRD
b3VudCgpOworICAgIEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCBy
ZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgKyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0
cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAgZXh0
cmFSZWdpc3RlckFyZ3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFy
Z3VtZW50SW5kZXgtLSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50
c1tleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJl
Z2lzdGVyQXJndW1lbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRy
eS5hcHBlbmQoanVtcCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBs
YWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisK
KyAgICBMYWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCByZWdp
c3RlckNoZWNrQXJpdHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIo
QmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgICAg
ICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQor
ICAgIAorICAgIExhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51
bVBhcmFtZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJl
Z2lzdGVyRW50cnlOb0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVn
QXJnc05vQXJpdHkpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7Cisj
ZW5kaWYKKworICAgIExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKworICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlvbiA9
PT0KICAgICAvLyBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCB3aXRob3V0IHBlcmZvcm1p
bmcgYW4gYXJpdHkgY2hlY2suCiAgICAgLy8gSWYgd2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4gYXJp
dHkgY2hlY2sgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgbW92ZWQgdGhlIHJldHVybiBhZGRyZXNzLAog
ICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhp
cyk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisjaWYg
IUVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBzdG9yZVB0cihhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisjZW5k
aWYKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgc3RvcmUzMihhcmdD
b3VudFJlZywgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisjZW5k
aWYKKworICAgIExhYmVsIGZyb21TdGFja0VudHJ5KHRoaXMpOworI2VuZGlmCisgICAgCisgICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRp
b25BbmRFeGl0KCkgLSAxKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwotICAgIEp1bXAgc3RhY2tPdmVyZmxv
dyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRT
dGFja0xpbWl0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4
ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBKdW1wIHN0
YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRy
ZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAKICAgICAvLyBN
b3ZlIHRoZSBzdGFjayBwb2ludGVyIGRvd24gdG8gYWNjb21tb2RhdGUgbG9jYWxzCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CkBAIC00NTIsMjggKzUyOSwxMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICBtX3NwZWN1bGF0aXZlLT5j
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKworICAgIEp1bXBMaXN0IGFyaXR5
T0s7CiAgICAgCi0gICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRv
ZXMgbm90IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAvLyBoYXZl
IGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2lu
dCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQotICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVj
a2VkKS4KLSAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nhcnks
IHdlIGVudGVyIGhlcmUuCi0gICAgLy8gRklYTUU6IGNoYW5nZSB0aGlzIGZyb20gYSBjdGkgY2Fs
bCB0byBhIERGRyBzdHlsZSBvcGVyYXRpb24gKG5vcm1hbCBDIGNhbGxpbmcgY29udmVudGlvbnMp
LgotICAgIG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGp1bXAocmVnaXN0
ZXJBcmdzQ2hlY2tBcml0eSk7CisKKyAgICBKdW1wTGlzdCByZWdpc3RlckFyaXR5TmVlZHNGaXh1
cDsKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMpIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7Cisg
ICAgICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmFwcGVuZChicmFuY2gzMihCZWxvdywgYXJn
Q291bnRSZWcsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOwor
CisgICAgICAgIC8vIFdlIGhhdmUgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzLgorCisgICAgICAg
IC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0
aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgLy8gaGF2ZSBiZWVu
IHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hl
cmUgd2UgY2FuIHN0YXRpY2FsbHkKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG51
bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQpLgorICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhbiBhcml0eSBjaGVjayBpcyBuZWNlc3Nh
cnksIHdlIGVudGVyIGhlcmUuCisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0
cmFBcmdzID0gbGFiZWwoKTsKKworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpS
ZWdBcmdzRXh0cmEpOworCisgICAgICAgIC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1
bmN0aW9uCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKS5saW5rVG8obWFpbkVudHJ5LCB0
aGlzKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgICAgIH0KKyAgICAgICAganVtcChtYWluRW50cnkpOworICAgIH0KKworICAgIC8v
IEZhbGwgdGhyb3VnaAorICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAvLyBU
aGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRlci4KKyAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQgPSBzdGQ6Om1pbihudW1QYXJhbWV0ZXJzIC0g
MSwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisgICAgICAgIExh
YmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBsYWJlbCgpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8PSByZWdpc3RlckFyZ3VtZW50
Rml4dXBDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50
cnlwb2ludHNbYXJnSW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAg
ICB9CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzQXJpdHkpOworCisg
ICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAubGluayh0aGlzKTsKKworICAgIGlmIChudW1QYXJh
bWV0ZXJzID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAg
ICAgIHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworCisgICAgc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJT
KQorICAgIEp1bXAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cCA9IGp1bXAoKTsKKyNlbmRpZgor
I2VuZGlmCisKKyAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICBp
bmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFCTEUo
Vk1fQ09VTlRFUlMpCisgICAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cC5saW5rKHRoaXMpOwor
I2VuZGlmCisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgbG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgYnJhbmNoMzIoQWJvdmVPckVxdWFs
LCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9y
aWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
aywgR1BSSW5mbzo6cmVnVDApOwogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBicmFuY2hUZXN0MzIoWmVybywgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAg
YXJpdHlPSy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIG1vdmUo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9j
YWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICBKdW1wIHRvRmlsbFJlZ2lzdGVycyA9IGp1bXAoKTsKKworICAg
IG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisKKyAgICBhcml0eU9LLmxpbmsodGhpcyk7CisgICAgdG9GaWxsUmVnaXN0ZXJzLmxpbmso
dGhpcyk7CisKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lz
dGVycworI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19DQUxMRUVfUkVHKQorICAgIGxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBhcmd1bWVudFJlZ2lzdGVyRm9y
Q2FsbGVlKCkpOworI2VuZGlmCisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5U
X1JFRykKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKKworICAgIGZv
ciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgIGxvYWQ2
NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKKyAg
ICBqdW1wKGZyb21TdGFja0VudHJ5KTsKKyNlbHNlCisgICAgYXJpdHlPSy5saW5rVG8oZnJvbUFy
aXR5Q2hlY2ssIHRoaXMpOwogICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOworI2VuZGlmCiAgICAg
CiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVu
U2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKQEAgLTUwMiwx
MCArNjYzLDM1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAg
ICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOwor
ICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRyeSk7Cisj
ZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNr
Tm90UmVxdWlyZWQsIG1haW5FbnRyeUNvZGVQdHIpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzKSk7CisgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjaykpOworCisgICAgZm9yICh1bnNpZ25l
ZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGVudHJ5OworICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAg
ICAgIGVudHJ5ID0gbWFpbkVudHJ5Q29kZVB0cjsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJB
cmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgIGVudHJ5
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2Fy
Z0NvdW50XSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgZW50cnlw
b2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJn
dW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisgICAgZW50cnlwb2ludHMuc2V0
RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2Nh
dGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRz
LnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+
bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3Rh
Y2tBcmdzV2l0aEFyaXR5Q2hlY2spKTsKIAogICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2sp
OworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2Vt
YmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsy
MTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0
Q2FsbFJlY29yZChjYWxsLCBzbG93UGF0aCwgaW5mbykpOwogICAgIH0KICAgICAKKyAgICB2b2lk
IGFkZEpTRGlyZWN0Q2FsbChDYWxsIGNhbGwsIENhbGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRo
LCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgeworICAgICAgICBtX2pzRGlyZWN0Q2FsbHMuYXBw
ZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGluZm8pKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0RpcmVjdFRhaWxDYWxsKFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlSnVtcCwgQ2FsbCBjYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBp
bmZvKQogICAgIHsKICAgICAgICAgbV9qc0RpcmVjdFRhaWxDYWxscy5hcHBlbmQoSlNEaXJlY3RU
YWlsQ2FsbFJlY29yZChwYXRjaGFibGVKdW1wLCBjYWxsLCBzbG93UGF0aCwgaW5mbykpOwpAQCAt
MjY3LDcgKzI3Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRKdW1wUGxh
Y2Vob2xkZXI7CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KLSAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZVNldHVwUmVnaXN0
ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKICAg
ICB2b2lkIGNvbXBpbGVCb2R5KCk7CkBAIC0zMTgsNyArMzIyLDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgSlNEaXJlY3RDYWxsUmVjb3JkKENh
bGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5m
bykKKyAgICAgICAgICAgIDogY2FsbChjYWxsKQorICAgICAgICAgICAgLCBzbG93Q2FsbChzbG93
Q2FsbCkKKyAgICAgICAgICAgICwgc2xvd1BhdGgoc2xvd1BhdGgpCisgICAgICAgICAgICAsIGlu
Zm8oaW5mbykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNTbG93Q2Fs
bCgpIHsgcmV0dXJuIHNsb3dDYWxsLm1fbGFiZWwuaXNTZXQoKTsgfQorCiAgICAgICAgIENhbGwg
Y2FsbDsKKyAgICAgICAgQ2FsbCBzbG93Q2FsbDsKICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CiAg
ICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwpAQCAtMzMxLDcgKzM0Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAsIGluZm8oaW5mbykKICAgICAgICAgewogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcDsKICAgICAgICAg
Q2FsbCBjYWxsOwogICAgICAgICBMYWJlbCBzbG93UGF0aDsKQEAgLTM1NSw3ICszNzAsMTIgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SW5mbz4gbV9leGNl
cHRpb25IYW5kbGVyT1NSRXhpdENhbGxTaXRlczsKICAgICAKICAgICBDYWxsIG1fY2FsbEFyaXR5
Rml4dXA7Ci0gICAgTGFiZWwgbV9hcml0eUNoZWNrOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJs
ZUV4dHJhQXJnczsKKyAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOworICAg
IExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5OworI2VuZGlmCisgICAgTGFiZWwgbV9zdGFj
a0FyZ3NXaXRoQXJpdHlDaGVjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVKSVQ+
IG1fc3BlY3VsYXRpdmU7CiAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotSklURmluYWxp
emVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYg
cGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxM
aW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBKSVRFbnRyeVBvaW50cyYgZW50cnlwb2ludHMpCiAgICAg
OiBGaW5hbGl6ZXIocGxhbikKICAgICAsIG1faml0Q29kZShqaXRDb2RlKQogICAgICwgbV9saW5r
QnVmZmVyKFdURk1vdmUobGlua0J1ZmZlcikpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhB
cml0eUNoZWNrKQorICAgICwgbV9lbnRyeXBvaW50cyhlbnRyeXBvaW50cykKIHsKIH0KIApAQCAt
NTYsOSArNTcsOCBAQCBzaXplX3QgSklURmluYWxpemVyOjpjb2RlU2l6ZSgpCiAKIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiB7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJl
ZigKLSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNv
ZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxv
Y2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9E
RkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmco
Q29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSku
ZGF0YSgpKSk7CisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklURW50cnlQ
b2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKICAgICAKICAgICBtX3BsYW4u
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAgICAgCkBAIC02OSwxMCArNjksMTEg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplRnVuY3Rpb24oKQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dpdGhBcml0eUNoZWNr
LmlzRW1wdHlWYWx1ZSgpKTsKLSAgICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAotICAg
ICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIG1fd2l0aEFyaXR5Q2hlY2spOworICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVj
a0FyaXR5KS5pc0VtcHR5VmFsdWUoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVS
ZWYgPSBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3Ig
JXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklU
Q29kZTo6REZHSklUKSkuZGF0YSgpKSk7CisKKyAgICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRy
eVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwor
CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIAogICAg
IGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBw
dWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NS
ZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBKSVRFbnRyeVBv
aW50cyYpOwogICAgIHZpcnR1YWwgfkpJVEZpbmFsaXplcigpOwogICAgIAogICAgIHNpemVfdCBj
b2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7Ci0gICAgCisKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZm
ZXI7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklU
RW50cnlQb2ludHMgbV9lbnRyeXBvaW50czsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkg
JiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2Rl
ID09IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFt
ZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgcHVi
bGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxv
Y2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBu
b2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBT
ZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSB8fCBub2RlICE9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmbHVzaEFjY2Vzc0RhdGEpCkBAIC0x
MTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGluaXRpYWxBY2Nlc3NEYXRh
Lm9wZXJhbmQob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+b3AoKSAhPSBTZXRMb2NhbCk7IC8v
IFdlIHNob3VsZCBoYXZlIGluc2VydGVkIGEgRmx1c2ggYmVmb3JlIHRoaXMhCiAgICAgICAgICAg
ICBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgICAgICBpbml0aWFsQWNjZXNzTm9kZXMub3BlcmFuZChvcGVyYW5k
KSA9IG5vZGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHJldmlzaW9uIDIw
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDggQEAgTWluaWZpZWROb2RlIE1pbmlmaWVkTm9k
ZTo6ZnJvbU5vZGUoTm9kZQogICAgIHJlc3VsdC5tX29wID0gbm9kZS0+b3AoKTsKICAgICBpZiAo
aGFzQ29uc3RhbnQobm9kZS0+b3AoKSkpCiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBKU1ZhbHVl
OjplbmNvZGUobm9kZS0+YXNKU1ZhbHVlKCkpOworICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgcmVzdWx0Lm1faW5mbyA9IDA7CiAgICAgZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMg
fHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKICAgICAgICAgcmVzdWx0
Lm1faW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01p
bmlmaWVkTm9kZS5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQz
LDYgKzQzLDcgQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAogICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNp
b24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNz
RGF0YShHcmFwaCYgCiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAg
IGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNh
c2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIwOTU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MjgsNiArODI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdy
YXBoJik7CiAgICAgYm9vbCBhY2Nlc3Nlc1N0YWNrKEdyYXBoJiBncmFwaCkKICAgICB7CisgICAg
ICAgIGlmIChvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgcmV0dXJuIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShncmFwaCk7CiAg
ICAgfQogICAgIApAQCAtODQ2LDYgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxWYXJpYWJsZUFjY2Vzc0RhdGEqPigpLT5maW5kKCk7CiAgICAgfQogICAgIAor
ICAgIHZvaWQgc2V0VmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUpCisgICAgeworICAgICAgICBtX29wSW5mbyA9IHZhcmlhYmxlOworICAgIH0KKyAgICAKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5sb2NhbCgpOwpAQCAtMTIxNCw2ICsxMjIyLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8
dW5zaWduZWQ+KCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAhIXJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVz
dWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVy
bmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50
MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudFJlZ2lzdGVyLCBOb2RlUmVzdWx0SlMgLyogfCBO
b2RlTXVzdEdlbmVyYXRlICovKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJp
YWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5v
ZGVzLiAqL1wKICAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUg
UGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw2ICsxNDQsMTEgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsK
KyAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT5sb2NhbCgpKS5z
ZXROb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE1vdkhpbnQ6
IHsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT51bmxpbmtl
ZExvY2FsKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlw
ZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2lu
OwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJh
c2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhc2Vs
aW5lLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBv
bGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAg
ICAgICAgICAgaWYgKCFvbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2Fu
aXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgot
ICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsK
KyAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGFuIGFyZ3Vt
ZW50IG5vZGUgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgb2xkTm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF07CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKLSAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGU7CisgICAgICAgICAgICBOb2RlKiBzdGFja05vZGU7CisgICAgICAgICAgICBp
ZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBHZXRBcmd1bWVudFJlZ2lzdGVyLCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2Rl
ID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3Bl
Y05vbmUsIFNldExvY2FsLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGRO
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9k
ZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV3Um9v
dC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNl
dEFyZ3VtZW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5vZGU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZ1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09u
U3RhY2tbYXJndW1lbnRdID0gc3RhY2tOb2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChp
bnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2Nh
bCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAy
MDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTQsNyArMzE0LDkgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocgogICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICBwZXJmb3JtQ29uc3RhbnRGb2xk
aW5nKGRmZyk7CiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZGZnLm1fc3RyZW5ndGhS
ZWR1Y2VBcmd1bWVudHMgPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlczsKICAgICBjaGFuZ2VkIHw9
IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOworICAgIGNoYW5nZWQgfD0gcGVyZm9ybVN0
cmVuZ3RoUmVkdWN0aW9uKGRmZyk7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtTG9jYWxDU0UoZGZn
KTsKICAgICAKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VM
b2NhbENsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAvLyBB
bGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVs
eSByZWFkLgorICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3Qgc3RhY2sgYXJndW1l
bnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4g
MTspCiAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNGb3JDaGVja2luZ1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1f
Z3JhcGgpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1
ZXNbaV0pKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3Bl
Y0ludDUyT25seSkpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwg
U3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHBy
ZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJl
ZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5T
cGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtOTY4LDYgKzk3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgog
ICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAg
ICAgICAKLSAgICAgICAgLy8gQWxsIG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQg
aGVhZCBvZiByb290LiBOb3RlIHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCisgICAgICAgIC8v
IEFsbCBvZiB0aGUgc3RhY2sgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9v
dC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQogICAgICAgICAvLyBsb2NhbHMgYXJl
IGxpdmUgYXQgaGVhZCBvZiByb290LiBUaGlzIHNlZW1zIHdyb25nIGJ1dCBpc24ndC4gVGhpcyB3
aWxsIGhhcHBlbiBmb3IgZXhhbXBsZQogICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gYWNjZXNz
ZXMgY2xvc3VyZSB2YXJpYWJsZSAjNDIgZm9yIHNvbWUgb3RoZXIgZnVuY3Rpb24gYW5kIHdlIGVp
dGhlciBkb24ndAogICAgICAgICAvLyBoYXZlIHZhcmlhYmxlICM0MiBhdCBhbGwgb3Igd2UgaGF2
ZW4ndCBzZXQgaXQgYXQgcm9vdCwgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFzaWNhbGx5IHRoaXMK
QEAgLTE1Nyw4ICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyBGb3Ig
b3VyIHB1cnBvc2VzIGhlcmUsIHRoZSBpbXByZWNpc2lvbiBpbiB0aGUgYWxpYXNpbmcgaXMgaGFy
bWxlc3MuIEl0IGp1c3QgbWVhbnMgdGhhdCB3ZQogICAgICAgICAvLyBtYXkgbm90IGRvIGFzIG11
Y2ggUGhpIHBydW5pbmcgYXMgd2Ugd2FudGVkLgotICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2
ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1
bWVudChpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0SW5kZXgoMCku
bnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGkgPj0gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIC8v
IFN0YWNrIGFyZ3VtZW50cyBhcmUgbGl2ZSBhdCB0aGUgaGVhZCBvZiByb290LgorICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4KDAp
LmFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgLy8gTmV4dCBpZGVudGlmeSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIHNpbmsgUHV0U3RhY2tz
IHRvLiBXZSBzYXkgdGhhdCB0aGVyZSBpcyBhIGRlZmVycmVkCiAgICAgICAgIC8vIGZsdXNoIGlm
IHdlIGhhZCBhIFB1dFN0YWNrIHdpdGggYSBnaXZlbiBGbHVzaEZvcm1hdCBidXQgaXQgaGFzbid0
IGJlZW4gbWF0ZXJpYWxpemVkIHlldC4KQEAgLTM1OCw3ICszNjIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgotICAgICAg
ICAgICAgICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKG5vZGUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgc3NhQ2FsY3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYW5kVG9WYXJpYWJsZS5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2Nh
bCksCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKQEAgLTQ4MywxMSArNDg4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9w
ZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24n
dCBkZWxldGUgYXJndW1lbnQgUHV0U3RhY2tzLCBubyBuZWVkIHRvIGFkZCBvbmUgYmFjay4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250
YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0YWNrIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIs
IG5vZGUsICJcbiIpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9
IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbm9kZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtNTM4LDYg
KzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmc7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbmNyZXRlKGRlZmVycmVkLm9wZXJhbmQob3BlcmFu
ZCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFu
ZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1l
bnRzT25TdGFjay5jb250YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IHBoaU5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgR2V0U3RhY2sgdG8gZ2V0IHRoZSB2YWx1ZS4g
VGhpcyBtaWdodCBpbnRyb2R1Y2Ugc29tZSByZWR1bmRhbmN5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9
IG5hbWU7CiAgICAgICAgIG1fZGF0YVtpbmRleF0uc3BpbGxPcmRlciA9IHNwaWxsT3JkZXI7CiAg
ICAgfQorCiAgICAgdm9pZCByZWxlYXNlKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHJlbGVh
c2VBdEluZGV4KEJhbmtJbmZvOjp0b0luZGV4KHJlZykpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgKyttX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICAgICAgQVNTRVJU
KG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKICAgICB9CisKICAgICB2b2lkIHVubG9jayhSZWdJ
RCByZWcpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEJhbmtJbmZvOjp0b0luZGV4
KHJlZyk7CkBAIC0yMzYsNiArMjM4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBt
X2JhbmstPmlzTG9ja2VkQXRJbmRleChtX2luZGV4KTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdW5sb2NrKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+
dW5sb2NrQXRJbmRleChtX2luZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9p
ZCByZWxlYXNlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgbV9iYW5rLT5yZWxlYXNl
QXRJbmRleChtX2luZGV4KTsKQEAgLTI5OCw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgIH0KIAorICAgIHZvaWQgdW5sb2Nr
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IE5V
TV9SRUdTKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0ubG9ja0NvdW50KTsKKyAgICAg
ICAgLS1tX2RhdGFbaW5kZXhdLmxvY2tDb3VudDsKKyAgICB9CisKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbmFtZUF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoaW5kZXggPCBOVU1fUkVHUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMgYW5kIGNyZWF0ZSBEZWZzIGZvciB0aGVtLiBX
ZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRpbmcgYQotICAgICAgICAvLyBHZXRMb2NhbCwg
YW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LgorICAgICAgICAvLyBHZXRTdGFjaywgYW5k
IHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LiBXZSBoYW5kbGUgR2V0QXJndW1lbnRSZWdpc3Rl
ciBieSBkaXJlY3RseQorICAgICAgICAvLyBhZGRpbmcgdGhlIG5vZGUgdG8gbV9hcmd1bWVudE1h
cHBpbmcgaGFzaCBtYXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFi
bG9jaykKQEAgLTgzLDE0ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBhc3NpZ25t
ZW50IGZvciBldmVyeSBsb2NhbC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRBcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5v
cCgpICE9IFNldEFyZ3VtZW50ICYmIG5vZGUtPm9wKCkgIT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxk
Tm9kZTsKKyAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKQEAgLTEwMSw5ICsxMDQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hcmd1bWVudEdldHRlcnMuYWRkKGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3
RGVmKAotICAgICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZh
cmlhYmxlKSwgYmxvY2ssIGNoaWxkTm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5uZXdEZWYoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGUuZ2V0KHZhcmlhYmxlKSwg
YmxvY2ssIGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKQEAg
LTI5NCw3ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9w
ZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBjaGlsZDsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSA9IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRHZXR0ZXJzLmNvbnRhaW5zKG5vZGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQobm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCktPmxvY2FsKSA9IG5vZGU7CkBAIC0zODIsMTcgKzM5MywyMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3Vt
ZW50c0ZvckNoZWNraW5nLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3Jh
cGgubV9hcmd1bWVudHNGb3JDaGVja2luZy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBu
b2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJn
dW1lbnRzRm9yQ2hlY2tpbmdbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChub2RlKTsKLSAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5mb3JtYXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJl
Z2lzdGVyKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgIGZvcm1hdCA9IHZh
cmlhYmxlLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAg
ICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2Fz
ZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMyLDcg
KzkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9hZEdQUik7CisgICAgaW5mby0+c2V0VXBDYWxs
KGNhbGxUeXBlLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlUGF5bG9h
ZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZdICgpIHsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTEw
ODEsNyArMTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICB9CiAKLSAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihp
bmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC01NjE0
LDYgKzU2MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0Ogog
ICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDUyKEdQ
UlJlZyBzb3UKICAgICB1bmxvY2soZnByKTsKIH0KIAotR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZShFZGdlIGVkZ2UpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgZWRnZSwgR1BSUmVnIGdwclRvVXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwogICAgIAogICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Tm9uZTogewotICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKGdwclRvVXNlKTsKIAogICAgICAgICBpZiAoZWRn
ZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+
YXNKU1ZhbHVlKCk7CkBAIC0xMjAsNyArMTIwLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgdGhlIHJlZ2lzdGVyIGhhcyBhbHJlYWR5
IGJlZW4gbG9ja2VkIHdlIG5lZWQgdG8gdGFrZSBhIGNvcHkuCiAgICAgICAgIC8vIElmIG5vdCwg
d2UnbGwgemVybyBleHRlbmQgaW4gcGxhY2UsIHNvIG1hcmsgb24gdGhlIGluZm8gdGhhdCB0aGlz
IGlzIG5vdyB0eXBlIERhdGFGb3JtYXRJbnQzMiwgbm90IERhdGFGb3JtYXRKU0ludDMyLgogICAg
ICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1
bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdw
clRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBncHIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJU
b1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsK
ICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBn
cHIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC0x
MzgsNiArMTQzLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBpZiAoZ3ByVG9V
c2UgIT0gSW52YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC02
MzIsNiArNjQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKICAgICBDYWxsTGlu
a0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50
c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogICAgIGJvb2wgaXNWYXJhcmdzID0gZmFsc2U7CiAgICAg
Ym9vbCBpc0ZvcndhcmRWYXJhcmdzID0gZmFsc2U7CiAgICAgYm9vbCBpc1RhaWwgPSBmYWxzZTsK
QEAgLTcxNCw3ICs3MjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7Ci0gICAgCisgICAgc3RkOjpvcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4gdGFpbENhbGxlZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
Y2FsbGVlR1BSVGVtcG9yYXJ5OworCisgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpE
RkdDYWxsZXIpOworCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKICAg
ICBpZiAoaXNEaXJlY3QpIHsKQEAgLTczMyw2ICs3NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7CiAgICAgICAg
IHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gbV9qaXQuZ3JhcGgoKS5tX25leHRNYWNoaW5l
TG9jYWw7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkNh
bGxWYXJhcmdzKTsKICAgICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCkBAIC04
NDEsMTUgKzg1NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNUYWlsKSB7CisgICAgICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVl
RWRnZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7Ci0gICAgICAgICAgICBjYWxsZWVHUFIg
PSBjYWxsZWUuZ3ByKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBnZXQgdGhlIGEgc3BlY2lm
aWMgcmVnaXN0ZXIgZm9yIHRoZSBjYWxsZWUsIHNpbmNlIHRoYXQgd2lsbCBqdXN0IG1vdmUKKyAg
ICAgICAgICAgIC8vIGZyb20gYW55IGN1cnJlbnQgcmVnaXN0ZXIuICBXaGVuIHdlIHNpbGVudCBm
aWxsIGluIHRoZSBzbG93IHBhdGggd2UnbGwgZmlsbAorICAgICAgICAgICAgLy8gdGhlIG9yaWdp
bmFsIHJlZ2lzdGVyIGFuZCB3b24ndCBoYXZlIHRoZSBjYWxsZWUgaW4gdGhlIHJpZ2h0IHJlZ2lz
dGVyLgorICAgICAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGFsbG9jYXRlIGEgdGVtcCByZWdpc3Rl
ciBmb3IgdGhlIGNhbGxlZSBhbmQgbW92ZSBvdXJzZWx2ZXMuCisgICAgICAgICAgICB0YWlsQ2Fs
bGVlLmVtcGxhY2UodGhpcywgY2FsbGVlRWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgdGFpbENh
bGxlZUdQUiA9IHRhaWxDYWxsZWUtPmdwcigpOworICAgICAgICAgICAgY2FsbGVlR1BSID0gYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsZWVHUFIg
IT0gY2FsbGVlR1BSKQorICAgICAgICAgICAgICAgIGNhbGxlZUdQUlRlbXBvcmFyeSA9IEdQUlRl
bXBvcmFyeSh0aGlzLCBjYWxsZWVHUFIpOwogICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKLSAg
ICAgICAgICAgICAgICBjYWxsZWUudXNlKCk7CisgICAgICAgICAgICAgICAgdGFpbENhbGxlZS0+
dXNlKCk7CiAKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRp
b25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVu
dHNJblJlZ2lzdGVycyA9IGFyZ3VtZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKICAgICAgICAg
ICAgIHNodWZmbGVEYXRhLnRhZ1R5cGVOdW1iZXIgPSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2ppdC5ncmFwaCgp
LmZyYW1lUmVnaXN0ZXJDb3VudCgpOwotICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0g
VmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIodGFpbENhbGxlZUdQ
UiwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MucmVzaXplKG51
bUFsbG9jYXRlZEFyZ3MpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC04NjQsNyArODkwLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFy
Z3NbaV0gPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKTsKIAogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1faml0LmNvZGVCbG9j
aygpKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5vcCgpID09
IENhbGxFdmFsKSB7CisgICAgICAgICAgICAvLyBDYWxsRXZhbCBpcyBoYW5kbGVkIHdpdGggdGhl
IGFyZ3VtZW50cyBpbiB0aGUgc3RhY2sKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxl
ZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CkBA
IC04NzgsMTUgKzkwNSw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3Nl
ZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgSklUQ29tcGlsZXI6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpKSk7CisKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
Q2FsbEV2YWwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxh
dGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAg
ICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRy
ZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSArIGldOworICAgICAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGFyZyh0aGlzLCBhcmdFZGdlLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGFyZ0dQUiA9IGFyZy5ncHIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYXJn
R1BSID09IHBsYXRmb3JtQXJnR1BSIHx8IHBsYXRmb3JtQXJnR1BSID09IEludmFsaWRHUFJSZWcp
OworCisgICAgICAgICAgICAgICAgLy8gT25seSBmcmVlIHRoZSBub24tYXJndW1lbnQgcmVnaXN0
ZXJzIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtQXJnR1BSID09
IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgdXNlKGFyZ0VkZ2UpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGFyZ0dQUiwgSklUQ29tcGlsZXI6OmNhbGxl
ZUFyZ3VtZW50U2xvdChpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBVc2UgdGhlIGFyZ3VtZW50IGVkZ2VzIGZvciBhcmd1bWVudHMgcGFzc2Vk
IGluIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFy
Z3M7IGktLSA+IDA7KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGFyZ0dQUiA9IGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIGlmIChhcmdH
UFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSAr
IGldOworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgYXJnQ291bnQodGhp
cywgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICBHUFJS
ZWcgYXJnQ291bnRHUFIgPSBhcmdDb3VudC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBhcmdDb3VudEdQUik7CisjaWYgRU5BQkxFKENB
TExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50
R1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0g
YXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxhdGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKworICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9y
bUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRT
bG90KGkpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFy
YXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxl
ZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMs
IGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxl
ZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVlLnVzZSgpOwotICAgICAgICBtX2pp
dC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAg
ICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKQorI2VuZGlmCisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xv
dChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIH0KQEAgLTkxMyw3ICs5ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAgICAgfTsKICAgICAKICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbChjYWxsVHlwZSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
ZWVHUFIpOworICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNM
b2NhdGlvbiwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVHUFIpOwogCiAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBj
YWxsIG9wZXJhdGlvbkNhbGxFdmFsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSB0aGUg
cGFyYW1ldGVyIGFyZWEgaW4KQEAgLTk1NCw4ICsxMDI4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgaWYgKGlzVGFpbCkgewogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBEaXJlY3RUYWlsQ2FsbCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxsb3B0
KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxlZUdQ
UlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVKdW1wID0gbV9qaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKKworICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRpcmVjdENhbGwpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAg
ICAgICAgIApAQCAtOTcxLDYgKzEwNTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxpbmtEaXJl
Y3RDYWxsLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGlmIChjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxs
b3B0KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxlZS0+Z3ByKCksIGNhbGxl
ZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOwogICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyht
YWluUGF0aCwgJm1faml0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CkBAIC05ODEsNiArMTA2Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBtYWluUGF0
aCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgIAorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZt
X2ppdCwgVk06OkRpcmVjdENhbGwpOworCiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRl
SW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bCA9IG1faml0Lm5lYXJDYWxsKCk7CkBAIC05ODgsMjIgKzEwNzIsMjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGls
ZXI6OkxhYmVsIHNsb3dQYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgaWYgKGlzWDg2KCkp
Ci0gICAgICAgICAgICBtX2ppdC5wb3AoSklUQ29tcGlsZXI6OnNlbGVjdFNjcmF0Y2hHUFIoY2Fs
bGVlR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5wb3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGlu
IG5vbkFyZ0dQUjAKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5u
ZWFyQ2FsbCgpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENh
bGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAg
ICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2V0
UmVzdWx0QW5kUmVzZXRTdGFjaygpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkSlNEaXJl
Y3RDYWxsKGNhbGwsIHNsb3dQYXRoLCBjYWxsTGlua0luZm8pOworCisgICAgICAgIG1faml0LmFk
ZEpTRGlyZWN0Q2FsbChjYWxsLCBzbG93Q2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoaXNUYWlsICYmIGNhbGxlZUdQ
UlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgIG1faml0Lm1vdmUodGFpbENhbGxl
ZS0+Z3ByKCksIGNhbGxlZUdQUlRlbXBvcmFyeS0+Z3ByKCkpOworCiAgICAgbV9qaXQuZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7Ci0gICAgCisKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxs
ZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsK
IApAQCAtMTAyNSwyMyArMTExNCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgewogICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1ZmZsZURhdGEpOwot
ICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3Rh
Y2tBcmdzKQorICAgICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJl
Z3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7CiAgICAgICAgIGNh
bGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMAotCi0gICAgICAgIGlmIChpc1RhaWwpCi0gICAgICAgICAgICBtX2pp
dC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVy
IHdlIG1vdmVkIGNhbGxlZUdQUiB0byByZWdUMAotICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVGFp
bCkKKyAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZv
OjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgorICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIwCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAKLSAgICBpZiAoaXNUYWlsKQorICAgIGlmIChpc1RhaWwpIHsKKyAg
ICAgICAgdGFpbENhbGxlZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FsbGVlR1BSVGVtcG9y
YXJ5ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oSklURGlk
UmV0dXJuRnJvbVRhaWxDYWxsKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHNldFJl
c3VsdEFuZFJlc2V0U3RhY2soKTsKIAogICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xv
d0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5rSW5mbyk7CkBAIC00MTU0LDE4ICs0MjQyLDYx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2Ug
R2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgRU5B
QkxFKFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIEdQUlJlZyBjYWxsZWVS
ZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Js
b2NrLT5pbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZpcnR1YWxS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAg
ICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChjYWxsZWVSZWcpICYm
IG1fZ3Bycy5uYW1lKGNhbGxlZVJlZykgPT0gY2FsbGVlVmlydHVhbFJlZ2lzdGVyKQorICAgICAg
ICAgICAgICAgIGNhbGxlZVJlZ1dpdGhWYWx1ZSA9IGNhbGxlZVJlZzsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGNhbGxlZVJlZ1dpdGhWYWx1ZSA9PSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlUmVnV2l0aFZhbHVlLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgbV9ncHJzLnVubG9jayhjYWxsZWVSZWdXaXRoVmFsdWUpOworICAgICAgICAgICAgbV9n
cHJzLnJlbGVhc2UoY2FsbGVlUmVnV2l0aFZhbHVlKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCByZXN1bHQuZ3ByKCkpOworI2VuZGlmCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisjaWYgRU5BQkxFKFNUQUNLX0VOVFJZX0ZJTExTX0FSR0NPVU5UX1JFRykK
KyAgICAgICAgR1BSUmVnIGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkgeworICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBHUFJSZWcg
YXJndW1lbnRDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoYXJndW1lbnRDb3Vu
dFJlZykgJiYgbV9ncHJzLm5hbWUoYXJndW1lbnRDb3VudFJlZykgPT0gYXJndW1lbnRDb3VudFZp
cnR1YWxSZWdpc3RlcikKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
ID0gYXJndW1lbnRDb3VudFJlZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRSZWdXaXRoVmFsdWUgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihhcmd1bWVudENvdW50UmVnV2l0aFZhbHVlLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVnV2l0aFZhbHVl
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKGFyZ3VtZW50Q291bnRSZWdXaXRoVmFsdWUp
OworICAgICAgICB9CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7Cisj
ZW5kaWYKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewogICAgICAgICBj
b21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1
bGF0aXZlSklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5
cGUpCiAgICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2pp
dC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQorICAgICwgbV9hcmd1bWVudEdlbmVyYXRp
b25JbmZvKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMpCiAgICAgLCBtX3N0YXRlKG1faml0LmdyYXBoKCkpCiAgICAgLCBtX2ludGVycHJl
dGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAgLCBtX3N0cmVhbSgmaml0LmppdENvZGUo
KS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZ2VuZXJhdGlvbklu
Zm9baV0gPSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2FyZ3VtZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYXJndW1lbnRH
ZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CiAgICAgbV9ncHJzID0gUmVnaXN0
ZXJCYW5rPEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7
CiB9CkBAIC0xMTk5LDYgKzEyMDIsMjYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRT
dHJpbmcoRGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zvcm1hdF07CiB9CiAKK3N0YXRpYyB2b2lk
IGR1bXBSZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8mIGluZm8sIHVuc2lnbmVkIGluZGV4KQor
eworICAgIGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDolcyVz
IiwgaW5kZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZv
cm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFM
b2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsKKyAgICBpZiAoaW5mby5yZWdpc3RlckZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIs
IGluZm8uZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICYmICEoaW5mby5yZWdp
c3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2VuZGlmCisgICAgICAgICkgeworICAgICAg
ICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZGF0YUxvZ0Yo
Ijolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7CisgICAgCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1
bXAoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVsKQpAQCAtMTIwOCwyNSArMTIz
MSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhCiAgICAgbV9n
cHJzLmR1bXAoKTsKICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7CiAgICAgbV9mcHJzLmR1bXAo
KTsKLSAgICBkYXRhTG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2ldOwotICAgICAgICBpZiAo
aW5mby5hbGl2ZSgpKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpLCBk
YXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmco
aW5mby5zcGlsbEZvcm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dG
KCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwotICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1h
dCgpID09IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBkYXRhTG9nRigiOmZwciVkXG4i
LCBpbmZvLmZwcigpKTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9
IERhdGFGb3JtYXROb25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICYmICEo
aW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQotI2VuZGlmCi0gICAgICAgICAg
ICApIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwot
ICAgICAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3By
KCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICB9
CisKKyAgICBkYXRhTG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7
ICsraSkKKyAgICAgICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm9b
aV0sIGkpOworCisgICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lzdGVyczpcbiIpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytp
KQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9baV0sIGkpOworCiAg
ICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVsKTsKIH0KQEAg
LTE2NzcsNiArMTY5MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50Qmxv
Y2sKICAgICAKICAgICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9jay0+aW5kZXhdID0gbV9qaXQu
bGFiZWwoKTsKIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIGNoZWNrQXJndW1l
bnRUeXBlcygpOworCiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpIHsKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2tzIHRo
YXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAgICAgIC8vIEJ1dCB0byBi
ZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRoaXMgYmxvY2ssIGRy
b3AgaW4gYQpAQCAtMTY4NywxNSArMTcwMywzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3VycmVudEJsb2NrCiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZl
bnQ6OnJlc2V0KCkpOwogICAgIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIHNl
dHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworICAgIAogICAgIG1faml0LmppdEFzc2Vy
dEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgbV9qaXQuaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsK
ICAgICBtX2ppdC5qaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpOwogCiAgICAgbV9zdGF0ZS5y
ZXNldCgpOwogICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKG1fYmxvY2spOwotICAgIAorCiAg
ICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFu
ZEZvckluZGV4KGkpOworICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4ICYmIG9wZXJhbmRJc0Fy
Z3VtZW50KG9wZXJhbmQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG1fYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOworICAgICAgICAgICAgTm9k
ZSogYXJndW1lbnROb2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2Fy
Z3VtZW50XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFyZ3VtZW50Tm9kZSAmJiBh
cmd1bWVudE5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlLT5yZWZDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1bWVudFJlZ2lzdGVycydz
LgorICAgICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICAg
ICAgICAgIFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBN
aW5pZmllZElEKGFyZ3VtZW50Tm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dE5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNB
dEhlYWRbaV07CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBO
byBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzY0LDcgKzE3OTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBhYnN0cmFjdCBzdGF0ZSBpcyByZW1hdGVyaWFsaXplZCBmb3IgdGhlIG5l
eHQgbm9kZS4KICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhtX2luZGV4SW5C
bG9jayk7CiAgICAgfQotICAgIAorCiAgICAgLy8gUGVyZm9ybSB0aGUgbW9zdCBiYXNpYyB2ZXJp
ZmljYXRpb24gdGhhdCBjaGlsZHJlbiBoYXZlIGJlZW4gdXNlZCBjb3JyZWN0bHkuCiAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTE3ODIsMTMgKzE4
MTYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1f
b3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1l
bnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0Zv
ckNoZWNraW5nW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBh
cmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50
cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5v
cCgpID09IFNldEFyZ3VtZW50CisgICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2Nh
bCAmJiBub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAg
ICAgICAgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNT
RVJUKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0x
Nzk5LDIzICsxODM1LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBl
cygKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1
ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSk7Ci0gICAgICAgIAorICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlOwor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXIgPSBJ
bnZhbGlkR1BSUmVnOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgYXJndW1lbnRSZWdp
c3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKGFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAg
ICB9IGVsc2UKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgICBjYXNl
IEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBh
cmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGbHVzaGVkQm9vbGVhbjogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdp
c3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoYXJndW1l
bnRSZWdpc3RlciwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOiB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGFyZ3VtZW50UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTg0NiwxMCArMTkwMyw2MyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2lu
KCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JF
bnRyeSgpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIEJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKDApOworCisg
ICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgZmlyc3RCbG9j
ay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICBOb2RlKiBub2RlID0gZmlyc3RC
bG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRB
cmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnID0gR1BSSW5mbzo6dG9Bcmd1
bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50UmVnICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3Bycy5pc0xvY2tlZChhcmd1bWVudFJl
ZykpOworICAgICAgICAgICAgbV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoYXJndW1lbnRSZWcpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudFJlZywgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1lbnRSZWdpc3RlclZhbHVl
KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGFyZ3VtZW50UmVnLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZpcnR1YWxSZWdp
c3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdpc3RlcnMgbG9j
a2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudFJlZyk7CisjaWYgRU5BQkxF
KFNUQUNLX0VOVFJZX0ZJTExTX0NBTExFRV9SRUcpCisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBHZXRDYWxsZWUpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3By
cy5pc0xvY2tlZChjYWxsZWVSZWcpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNp
ZmljKGNhbGxlZVJlZyk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGNhbGxlZVJlZywgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJndW1l
bnRSZWdpc3RlclZhbHVlKG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGNhbGxlZVJlZywgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgIGluZm8ubm90aWNlT1NSQmlydGgoKm1fc3RyZWFtLCBub2Rl
LCB2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgLy8gRG9uJ3QgbGVhdmUgYXJndW1lbnQg
cmVnaXN0ZXJzIGxvY2tlZC4KKyAgICAgICAgICAgIG1fZ3Bycy51bmxvY2soY2FsbGVlUmVnKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShTVEFDS19FTlRSWV9GSUxMU19BUkdDT1VOVF9SRUcpCisgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRDb3VudFJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50Q291bnRSZWcpKTsKKyAgICAgICAg
ICAgIG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50Q291bnRSZWcpOworICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihhcmd1bWVudENvdW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJJbnRlZ2VyKTsKKyAgICAgICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1
ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCBhcmd1bWVudENvdW50UmVnLCBEYXRhRm9ybWF0SW50
MzIpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0sIG5vZGUsIHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1bWVudCByZWdp
c3RlcnMgbG9ja2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVudENvdW50UmVn
KTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoKQogewotICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOwotICAgIAogICAg
IEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSAwOyBibG9ja0luZGV4IDwgbV9qaXQuZ3JhcGgoKS5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7CiAgICAgICAgIG1faml0LnNldEZvckJsb2NrSW5kZXgoYmxvY2tJbmRleCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSUmVnIGZpbGxKU1ZhbHVlKEVkZ2UpOworICAg
IEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlLCBHUFJSZWcgZ3ByVG9Vc2UgPSBJbnZhbGlkR1BSUmVn
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYm9vbCBmaWxsSlNWYWx1ZShFZGdlLCBH
UFJSZWcmLCBHUFJSZWcmLCBGUFJSZWcmKTsKICNlbmRpZgpAQCAtMjAwLDYgKzIwMCw5IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKICAg
ICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZz
ZXQoKSk7CiAjZW5kaWYKKyAgICAgICAgaWYgKHNwZWNpZmljID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNwZWNpZmljKTsKICAgICAgICAgaWYg
KHNwaWxsTWUuaXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTMxNSw2ICsz
MTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQXJndW1lbnRUeXBlcygpOwogCisgICAg
dm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIHZvaWQgY2xlYXJH
ZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3aGVuIGdl
bmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUsNiArNDkwLDkgQEAgcHVibGljOgogICAgIC8v
IFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgogICAgIHZvaWQgc3BpbGwo
VmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAgeworICAgICAgICBpZiAoc3BpbGxNZS5pc0Fy
Z3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAwKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI4NzIsNyArMjg4
MCwxMCBAQCBwdWJsaWM6CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm9Gcm9t
VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgp
XTsKKyAgICAgICAgaWYgKHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKV07CiAgICAg
fQogICAgIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQpA
QCAtMjg5NSw2ICsyOTA2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2Nr
OwogICAgIC8vIFZpcnR1YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1hcHMuCiAgICAgVmVjdG9y
PEdlbmVyYXRpb25JbmZvLCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAgICBWZWN0b3I8R2VuZXJh
dGlvbkluZm8sIDg+IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAgICBSZWdpc3RlckJhbms8
R1BSSW5mbz4gbV9ncHJzOwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZvPiBtX2ZwcnM7CiAKQEAg
LTI5OTMsNiArMzAwNSwyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgR1BSUmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAg
ICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVn
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpIHx8IHJl
Z1RvVXNlICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBncHJVc2VTcGVjaWZpYyhyZWdU
b1VzZSk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVPcGVyYW5kKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9lZGdlKQpAQCAtMzAyOSw2ICszMDU1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSk7CiAg
ICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CisgICAgR1BSUmVnIGdwclVzZVNw
ZWNpZmljKEdQUlJlZyByZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxp
ZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+
ZmlsbEpTVmFsdWUobV9lZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52
YWxpZDsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChsb2NhbC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5tX3N0cmVuZ3RoUmVkdWNl
QXJndW1lbnRzICE9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsgaS0tOykg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09IGxv
Y2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZp
c2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCwxNSArMTMwLDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMywgTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHNpemVvZihSZWdpc3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihpbnQz
Ml90KSkpKTsKICAgICBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgR1BS
SW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oLXN0YXRpY19jYXN0PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycykpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAotICAgIGppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BS
SW5mbzo6cmVnVDEpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Pigx
MDAwKSkpKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDApKSkpOwogICAgIGpp
dC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24p
OwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50
IHJlZ2lzdGVycworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3Vu
dCgpOworICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmdDb3VudFJlZyk7CisgICAgCisgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhp
c0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAg
CisgICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsoJmppdCk7CisjZW5kaWYKKyAgICAKICAgICBqaXQu
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAg
ICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CiAKLSAgICBqaXQuanVt
cChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5
IHRodW5rIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
cnVuKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUg
PT0gREZHTW9kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRMSklU
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICht
X2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDcgKzQ4OCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJs
b2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
OwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUykKICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
LCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOwotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGdldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgICAgIHNldExvY2FsUG9zaXRpb25zLmFyZ3VtZW50
KGkpID0gbm90U2V0OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMDk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDEzIEBAIHZvaWQgVmFyaWFibGVFdmVu
dFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgaWYgKCFpbmRleCkgewogICAgICAgICB2YWx1ZVJl
Y292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tp
XSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIodmFsdWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFG
b3JtYXRKUyk7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUigKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6
OmRpc3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
KHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjEsNiAr
MTY2LDEzIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAg
ICAgICBNaW5pZmllZEdlbmVyYXRpb25JbmZvIGluZm87CiAgICAgICAgICAgICBpbmZvLnVwZGF0
ZShldmVudCk7CiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb3MuYWRkKGV2ZW50LmlkKCksIGlu
Zm8pOworICAgICAgICAgICAgTWluaWZpZWROb2RlKiBub2RlID0gZ3JhcGguYXQoZXZlbnQuaWQo
KSk7CisgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVn
aXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIg
PSBldmVudC5ncHIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IGpzRnVu
Y3Rpb25Bcmd1bWVudEZvckFyZ3VtZW50UmVnaXN0ZXIoZ3ByKTsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudCk7CisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChhcmd1
bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWxsOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24iKQogICAgIHsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoU2NvcmVCb2FyZCYgc2NvcmVCb2FyZCwgTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0LCBjYWxsIHVzZSBvbiBhbGwgb2YgdGhlIGN1
cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVuCisgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVh
bFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKKyAgICAgICAgLy8gb3Jk
ZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwgYW5kIGEKKyAgICAgICAg
Ly8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBiZSByZXVzZWQgZm9yIG5v
ZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
SWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgr
KykKKyAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNj
b3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gc2NvcmVCb2FyZC5hbGxvY2F0
ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
KyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRp
ZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZv
ciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCisgICAgICAgICAgICBz
Y29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9CisKICAgICBib29sIHJ1bigpCiAgICAgewogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFRocmVh
ZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBG
b3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJlcmVkIHZpcnR1YWwgcmVnaXN0ZXJzLgogICAgICAg
ICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZyZWUoKTsKICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgTm9kZXMgZmlyc3QgYXMgdGhlIHJl
Z2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5CisgICAgICAgICAgICAvLyB0byB0aGUgZnVuY3Rpb24g
YW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQgYmVmb3JlIGFueSB1c2UuCisgICAgICAgICAgICBp
ZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleEluQmxv
Y2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQs
IG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtNzMsMzIgKzExMCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJl
biwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZv
ciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKLSAgICAgICAgICAgICAgICAvLyBvcmRlciBz
byB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQgYQotICAgICAgICAgICAg
ICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZv
ciBub2RlLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1D
aGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVC
b2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKLSAgICAgICAgICAgICAg
ICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVzZUNvdW50IGFydGlmaWNp
YWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAgICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3Vu
dCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG5vZGUpOworICAgICAgICAgICAgICAg
IGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIw
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRT
Y29wZToKICAgICBjYXNlIEdldENhbGxlZToKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBjYXNlIFRvTnVt
YmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAgSklU
Q29kZTo6fkpJVENvZGUoKQogICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29k
ZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAgIGRhdGFMb2coY29tbWEsIG1fcmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KIH0K
QEAgLTYwLDMxICs2MSwzMCBAQCB2b2lkIEpJVENvZGU6OmluaXRpYWxpemVCM0J5cHJvZHVjdHMo
c3RkCiAgICAgbV9iM0J5cHJvZHVjdHMgPSBXVEZNb3ZlKGJ5cHJvZHVjdHMpOwogfQogCi12b2lk
IEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyIGFkZHJlc3MpCit2b2lk
IEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoQ29kZVJlZiBlbnRyeXBvaW50VGh1
bmspCiB7Ci0gICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7CisgICAgbV9lbnRyeXBvaW50
VGh1bmsgPSBlbnRyeXBvaW50VGh1bms7CiB9CiAKLXZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFy
aXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkKK3ZvaWQgSklUQ29kZTo6c2V0
RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKIHsKLSAgICBtX2Fy
aXR5Q2hlY2tFbnRyeXBvaW50ID0gZW50cnlwb2ludDsKKyAgICBtX2VudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKHR5cGUsIGVudHJ5KTsKIH0KLQotSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrKQorICAgIAorSklUQ29kZTo6Q29k
ZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUpCiB7
Ci0gICAgc3dpdGNoIChhcml0eUNoZWNrKSB7Ci0gICAgY2FzZSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ6Ci0gICAgICAgIHJldHVybiBtX2FkZHJlc3NGb3JDYWxsOwotICAgIGNhc2UgTXVzdENoZWNr
QXJpdHk6Ci0gICAgICAgIHJldHVybiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50LmNvZGUoKTsKLSAg
ICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29kZVB0
cigpOworICAgIENvZGVQdHIgZW50cnkgPSBtX2VudHJ5cG9pbnRzLmVudHJ5Rm9yKGVudHJ5VHlw
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkpOworICAgIHJldHVybiBlbnRyeTsKIH0KIAog
dm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KQog
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2FkZHJlc3NGb3JDYWxsLmV4
ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRk
cmVzc0ZvckNhbGwoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxl
QWRkcmVzcygpKSArIG9mZnNldDsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZW5kaWYKIH0KIAogdm9pZCogSklUQ29kZTo6
ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIEpJVENvZGUoKTsKICAgICB+SklUQ29kZSgpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNz
Rm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9y
Q2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVz
c0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9m
KHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkBAIC01Myw5ICs1Myw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUIzQ29kZShDb2RlUmVmKTsKICAgICB2b2lkIGluaXRp
YWxpemVCM0J5cHJvZHVjdHMoc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVCeXByb2R1Y3RzPik7
Ci0gICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0cik7Ci0gICAgdm9pZCBp
bml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7Ci0gICAgCisgICAgdm9pZCBp
bml0aWFsaXplRW50cnlwb2ludFRodW5rKENvZGVSZWYpOworICAgIHZvaWQgc2V0RW50cnlGb3Io
RW50cnlQb2ludFR5cGUsIENvZGVQdHIpOworCiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMo
Y29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBvdmVycmlkZTsKIAogICAgIFJlZ2lzdGVyU2V0IGxp
dmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9j
ayosIENhbGxTaXRlSW5kZXgpIG92ZXJyaWRlOwpAQCAtNzcsNyArNzcsMTIgQEAgcHJpdmF0ZToK
ICAgICBDb2RlUHRyIG1fYWRkcmVzc0ZvckNhbGw7CiAgICAgQ29kZVJlZiBtX2IzQ29kZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IG1fYjNCeXByb2R1Y3RzOwot
ICAgIENvZGVSZWYgbV9hcml0eUNoZWNrRW50cnlwb2ludDsKKyAgICBDb2RlUmVmIG1fZW50cnlw
b2ludFRodW5rOworICAgIEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2ludHM7CisgICAgQ29kZVB0
ciBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludDsKKyAgICBDb2RlUHRy
IG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3N0YWNr
QXJnc0FyaXR5T0tFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NDaGVja0FyaXR5
RW50cnlwb2ludDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDIw
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxp
emVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICpiM0NvZGVMaW5rQnVm
ZmVyLAogICAgICAgICAgICAgKCJGVEwgQjMgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgp
KSkpOwogCi0gICAgaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KAorICAg
IGppdENvZGUtPmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoCiAgICAgICAgIEZJTkFMSVpFX0NP
REVfSUYoCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZl
ciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggQjMgZ2Vu
ZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFu
LmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDE0ICsxMjcsMTEwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAgc3dp
dGNoIChncmFwaC5tX3BsYW4ubW9kZSkgewogICAgIGNhc2UgRlRMTW9kZTogewotICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7Ci0gICAgCi0gICAgICAgIGppdC5s
b2FkMzIoCi0gICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmlsbFJlZ2lzdGVyc0FuZENvbnRp
bnVlTWFpblBhdGg7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgdG9NYWluUGF0aDsK
KworICAgICAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4UmVnaXN0
ZXJBcmd1bWVudENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycywgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVn
ID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKworICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDFdOworCisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAg
ICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVu
Y3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7IGFyZ0luZGV4
ID49IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4LS0pIHsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4ICsgMV0gPSBqaXQubGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJl
Z0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29udGludWVUb0Fy
aXR5Rml4dXA7CisgICAgICAgIAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJn
c0NoZWNrQXJpdHlFbnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisgICAgICAgIGppdC5sb2FkMzIoZnJhbWUud2l0
aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgY29udGludWVUb0FyaXR5Rml4dXAuYXBwZW5kKGpp
dC5icmFuY2gzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJl
Z1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGNvbnRpbnVlVG9TdGFja0FyaXR5T2sgPSBqaXQuanVtcCgpOworI2VuZGlmCisgICAgICAg
IAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGpp
dC5sYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlN0YWNrQXJn
c0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVUb1N0
YWNrQXJpdHlPay5saW5rKCZqaXQpOworI2VuZGlmCisKKyAgICAgICAgLy8gTG9hZCBhcmd1bWVu
dCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAgICAgLy8gUmVnQ0MgVG9kbzog
V291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UsIGJ1dCB3ZSBjdXJyZW50bHkgY2FuJ3QganVt
cCBpbnRvIHRoZSBCMworICAgICAgICAvLyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBw
b2ludCBhZnRlciB3aGVyZSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgdG8gdGhlIHN0YWNrLgor
I2lmIDEKKyAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwor
ICAgICAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKSk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgr
KykKKyAgICAgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJv
bG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0lu
ZGV4KSk7CisgICAgICAgIAorICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsK
KyAgICAgICAgCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmdzQ2hlY2tB
cml0eUVudHJ5ID0gaml0LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwg
Vk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGNo
ZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50czsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVy
cyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bnVtUGFyYW1ldGVycykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4
dXAuYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJl
bG93LCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVy
cykpKTsKKyAgICAgICAgICAgIC8vICBGYWxsIHRocm91Z2ggdG8gdGhlICJleHRyYSByZWdpc3Rl
ciBhcml0eSIgY2FzZS4KKworICAgICAgICAgICAgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1l
bnRzID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0
ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleCA8IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAg
ICAgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
cmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJh
bWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJ
bmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0V4dHJhKTsKKyAgICAgICAgICAg
IHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG51bVBhcmFtZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAg
ICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAuYXBwZW5kKGppdC5qdW1wKCkpOworI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgICAgICAvLyAg
VGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDE7IGFyZ0luZGV4IDwgbnVtUGFyYW1ldGVycyAmJiBhcmdJbmRleCA8PSBtYXhSZWdpc3Rl
ckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeXBvaW50c1thcmdJbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZp
eHVwOworICAgICAgICB9CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NBcml0eSk7CisjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAg
ICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShtYXhSZWdp
c3RlckFyZ3VtZW50Q291bnQpOworCisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmxpbmso
JmppdCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6QXJpdHlGaXh1cFJl
cXVpcmVkKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LnRvcENhbGxGcmFtZSk7CkBAIC0xNTUsMTEgKzI1MSwyMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogCiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6
Olplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5k
Q29udGludWVNYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUZpeHVwID0gaml0
LmNhbGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1h
aW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNB
bmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVn
aXN0ZXJzQW5kQ29udGludWVNYWluUGF0aC5saW5rVG8oc3RhY2tBcmdzQXJpdHlPS0VudHJ5LCAm
aml0KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCByZWdpc3RlckVudHJ5Tm9Bcml0eSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1l
bnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisgICAgICAgIHRvTWFpblBhdGgu
YXBwZW5kKGppdC5qdW1wKCkpOworI2VuZGlmCiAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkg
ewpAQCAtMTY5LDkgKzI3NCwzNSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBs
aW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3Rv
ciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
ayk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwog
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0u
Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRp
b25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwor
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKHRvTWFpblBhdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisKKyAgICAgICAg
c3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtC
dWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KSk7CisgICAgICAgIHN0
YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwg
bGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKIAotICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7Cisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFp
bkVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVudHJ5Tm9Bcml0eSk7Cisj
ZWxzZQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24p
KTsKKyNlbmRpZgorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIG1haW5FbnRyeSk7CisKKyAgICAgICAgaWYgKGNoZWNr
Rm9yRXh0cmFSZWdpc3RlckFyZ3VtZW50cy5pc1NldCgpKQorICAgICAgICAgICAgc3RhdGUuaml0
Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJn
c1Bvc3NpYmxlRXh0cmFBcmdzLCBtYWluRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJp
dHksIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KSk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAgICAgICAgICAgIGlmIChhcmdD
b3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbWFpbkVudHJ5
OworICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdD
b3VudF0uaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkpOworICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+
c2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRD
b3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtMTgxLDcgKzMxMiwyMSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgICAgICAvLyBwb2ludCB3ZSd2ZSBldmVuIGRvbmUgdGhlIHN0YWNrIGNoZWNrLiBCYXNpY2Fs
bHkgd2UganVzdCBoYXZlIHRvIG1ha2UgdGhlCiAgICAgICAgIC8vIGNhbGwgdG8gdGhlIEIzLWdl
bmVyYXRlZCBjb2RlLgogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0ID0gaml0Lmxh
YmVsKCk7CisKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyAgICAgICAg
Ly8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAg
ICAvLyBSZWdDQyBUb2RvOiBXb3VsZCBsaWtlIHRvIGVsaW1pbmF0ZSB0aGVzZSwgYnV0IHdlIGN1
cnJlbnRseSBjYW4ndCBqdW1wIGludG8gdGhlIEIzCisgICAgICAgIC8vIGNvbXBpbGVkIGNvZGUg
YXQgYW4gYXJiaXRyYXJ5IHBvaW50IGFmdGVyIHdoZXJlIHRoZSByZWdpc3RlcnMgYXJlIHN0b3Jl
ZCB0byB0aGUgc3RhY2suCisjaWYgMQorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgICAgICBq
aXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
ICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtMTkxLDcgKzMzNiw3IEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIH0KICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhtYWluUGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5p
dGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsKKyAg
ICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsx
OTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlw
ZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFz
ay0+a2V5KCkpOwogICAgICAgICAKKyAgICAgICAgLy8gU3RvcmUgb3V0IGNhbGxlZSBhbmQgYXJn
dW1lbnQgY291bnQgZm9yIHBvc3NpYmxlIE9TUiBleGl0LgorI2lmICFFTkFCTEUoQ0FMTEVSX1NQ
SUxMU19DQUxMRUUpCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXJJbnQzMihhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisjZW5kaWYKKwogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCkBAIC0yNDcsMjAgKzI1
NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIENoZWNrIEFyZ3VtZW50cy4KICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkuY2xlYXIoKTsKICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2Nh
bHMgPSBPcGVyYW5kczxBdmFpbGFiaWxpdHk+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCks
IDApOworCisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnROb2RlczsKKyAgICAgICAg
VmVjdG9yPExWYWx1ZSwgOD4gYXJndW1lbnRWYWx1ZXM7CisKKyAgICAgICAgYXJndW1lbnROb2Rl
cy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIGFyZ3VtZW50
VmFsdWVzLnJlc2l6ZShjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKKworICAgICAgICBt
X2hpZ2hCbG9jayA9IG1fZ3JhcGguYmxvY2soMCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgYXZh
aWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQotICAgICAgICAgICAgICAgIEF2
YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRy
dWUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50
c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hl
Y2tpbmdbaV07CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUg
anNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAg
IAorICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBudWxscHRyOworCiAgICAgICAgICAgICBp
ZiAobm9kZSkgewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3Bl
cmFuZCA9PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGluZUxvY2FsKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1l
bnQoaSkgPSBBdmFpbGFiaWxpdHkobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUg
PSBtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2Rl
LT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkpOworCisgICAgICAgICAgICAgICAgICAgIHNldEpT
VmFsdWUobm9kZSwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1
ZSwgb3BlcmFuZCkpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlID0gbV9vdXQubG9hZDY0
KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG5vZGUsIG5vZGUtPmhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpIHx8IG9wZXJhbmQgPT0gbm9k
ZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhhY2ssIGJ1dCBpdCdzIGFuIGVmZmVjdGl2ZSBv
bmUuIEl0IGFsbG93cyB1cyB0byBkbyBDU0Ugb24gdGhlCiAgICAgICAgICAgICAgICAgLy8gcHJp
bW9yZGlhbCBsb2FkIG9mIGFyZ3VtZW50cy4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIEdldExvY2Fs
IHRoYXQgZ290IHB1dCBpbgpAQCAtMjY4LDcgKzI5MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgLy8gc2hvdWxkIGhvbGQgdHJ1ZS4KICAgICAgICAgICAgICAgICBtX2xvYWRlZEFyZ3Vt
ZW50VmFsdWVzLmFkZChub2RlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXJndW1lbnROb2Rlc1tpXSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudFZhbHVlc1tp
XSA9IGpzVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBtX25vZGUgPSBudWxscHRyOworICAg
ICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwg
dHJ1ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudE5vZGVzW2ld
OwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gYXJndW1lbnRWYWx1ZXNb
aV07CisKICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSkg
ewogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbm9kZSwgaXNOb3RJbnQzMihqc1Zh
bHVlKSk7CkBAIC04MTAsNiArODQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVy
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRTY29wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDYgKzU0
MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyKHBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjb21waWxlR2V0QXJndW1lbnRSZWdpc3RlcigpCisgICAgeworICAgICAgICAvLyBXZSBtaWdo
dCBoYXZlIGFscmVhZHkgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIG5vZGUuCisgICAgICAgIGlmIChM
VmFsdWUgdmFsdWUgPSBtX2xvYWRlZEFyZ3VtZW50VmFsdWVzLmdldChtX25vZGUpKSB7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKG1fbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKICAgICB7CiAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
RnVuY3Rpb25fc2NvcGUpKTsKQEAgLTU4MDYsOSArNTg1NSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICAvLyB0aGUgY2FsbC4KICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50
czsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBHUFIw
IGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUKLSAg
ICAgICAgLy8gY2FsbGVlIHRvIGJlLgotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKSk7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBw
YXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxl
ZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykp
KTsKIAogICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1
YWxSZWdpc3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNl
dEZyb21TUCA9CkBAIC01ODE2LDEwICs1ODY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgfTsKIAorICAgICAgICBBcmd1bWVudHNM
b2NhdGlvbiBhcmdMb2NhdGlvbiA9IGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpOworICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVw
OjpyZWcoY2FsbGVlUmVnKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAg
ICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVu
dFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExT
X0FSR0NPVU5UKQogICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3Mp
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRP
ZmZzZXQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQot
ICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNW
YWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoYXJndW1l
bnRzKTsKQEAgLTU4NDgsOSArNTkxMCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRM
Q2FsbGVyKTsKKwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRh
cmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRo
ID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVj
aywKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsK
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwpAQCAtNTg1OCwxMyArNTkyMiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgubGluaygmaml0KTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIGRv
bmUubGluaygmaml0KTsKIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXJnTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1wYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpKSwKQEAgLTU4NzMsNyArNTkzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNM
b2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93
Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01
OTE3LDIwICs1OTgxLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q29u
c3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogICAgICAgICAKLSAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUg
c2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVn
IGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKICAgICAgICAgaWYgKCFpc1RhaWwpIHsKICAgICAgICAgICAgIGF1dG8gYWRkQXJn
dW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNl
dCkgewogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9CiAgICAgICAgICAg
ICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3Rl
cnMpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAKKwor
ICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxM
RUUpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOworI2VuZGlmCisgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwg
VmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lm
IEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQogICAgICAgICAgICAgYWRkQXJndW1lbnQo
bV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAg
YWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCi0gICAg
ICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5k
aWYKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBp
KSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0
ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwpAQCAtNTk3Miw2ICs2MDU0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdp
c3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAg
ICAgICAgICAgICAgdG9TYXZlLnNldChjYWxsZWVHUFIpOwogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC01OTkwLDcg
KzYwNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBt
YWluUGF0aCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAg
ICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAg
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDExLDcgKzYwOTgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwg
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6
RGlyZWN0VGFpbENhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBhcmd1
bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVj
dXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3Mp
OwpAQCAtNjAzNCw2ICs2MTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOwor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDQ1LDcgKzYxMzUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29u
c3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4
ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBp
ZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAt
NjA1NiwxMyArNjE0NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQucG9wKENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQ
UihjYWxsZWVHUFIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25MaW5rRGlyZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlk
R1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBp
biBub25BcmdHUFIwCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRM
aW5rVGFzaygKQEAgLTYwNzEsNiArNjE1OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIHNsb3dQYXRoTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
RGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCkBAIC02MTAyLDcg
KzYxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBh
cmd1bWVudHM7CiAKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpz
Q2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICBHUFJSZWcg
Y2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVl
UmVnKSkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kp
IHsKICAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGxldCB0aGUgc2h1ZmZsZXIgZG8gYm94
aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1cGVyIGNsZWFyIHRoYXQgdGhpcwpAQCAtNjEzNiw5
ICs2MjI4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc2h1ZmZsZURhdGE7CisgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRz
SW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2Fs
cyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwotICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86
OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZVJlZywgRGF0YUZvcm1hdEpTKTsKIAogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MuYXBwZW5kKHBhcmFtc1sxICsgaV0ucmVj
b3ZlcnlGb3JKU1ZhbHVlKCkpOwpAQCAtNjE0OSw3ICs2MjQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0
cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
R1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CkBAIC02
MTY3LDIwICs2MjYzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxl
cihqaXQsIHNodWZmbGVEYXRhKTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNl
dENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2Fs
bCgpOwogCiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5G
cm9tVGFpbENhbGwpOwogCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENh
bGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpLCBjb2RlT3JpZ2luLCBjYWxsZWVSZWcp
OwogCiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dENhbGxMb2NhdGlvbnMoCkBAIC02MjcwLDYgKzYzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAg
ICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJn
czsKIAogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTY0MTks
NyArNjUxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCF1c2VkUmVnaXN0ZXJzLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KQpAQCAtNjQyNyw3ICs2NTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5h
bFN0YWNrSGVpZ2h0KSwKQEAgLTY0MzYsNyArNjUzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMo
CkBAIC02NTM3LDExICs2NjMzLDE1IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNh
bGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJn
c0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKIAogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAgLTY3MDIsNyArNjgwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY3MTAsNyArNjgxMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBh
cmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWln
aHQpLApAQCAtNjcxOSw3ICs2ODE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY3ODgs
MTMgKzY4ODgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxFdmFsKTsKKwogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIw
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBh
dCBlbnRyeTogIiwgdmFsdWVzLCAiXG4iKTsKICAgICAKLSAgICBmb3IgKGludCBhcmd1bWVudCA9
IHZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTsp
IHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAg
IGlmIChhcmd1bWVudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBKU1ZhbHVlIHZhbHVlT25TdGFj
ayA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgp
KS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHJlY29uc3RydWN0ZWRWYWx1
ZSA9IHZhbHVlcy5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgIGlmICh2YWx1ZU9uU3RhY2sg
PT0gcmVjb25zdHJ1Y3RlZFZhbHVlIHx8ICFhcmd1bWVudCkKQEAgLTk5LDggKzEwMywxMiBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIGV4ZWMtPnNldENvZGVCbG9j
ayhlbnRyeUNvZGVCbG9jayk7Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5h
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdm9p
ZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQorICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwgZ29p
bmcgdG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9j
aykKICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFy
Z3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7Cit9
CisKIExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyMDk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5v
ZGUqIG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7
IHJldHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVn
KTsKICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1ZSog
bG9ja2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9IGFk
dmFuY2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxG
cmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAgICAgICBib29sIGlzVGFpbERlbGV0ZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChj
b2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkg
JiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMo
SlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOwotICAgICAg
ICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3Bl
LT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmICghc2NvcGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNWYWx1
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRv
ci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAg
ICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFt
ZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBzY29wZSwgY29kZUJsb2NrLCBjYWxsRnJhbWUt
PmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoaW5kZXhJbkxvZyA8IGxvZ0N1
cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMg
ZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMyArNjE2LDEzIEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRE
dW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsKICAg
ICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRo
dW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNs
b3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgbGlua0J1ZmZlci52bSgp
LCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29k
ZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNvZGUoKSkpOworICAgICAgICAgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9y
KCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIGxpbmtCdWZmZXIu
dm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGws
IENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7CiAg
ICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0MTQsOTcgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7IFNw
aWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBT
cGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBkb25l
U3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQ0FMTEVFKQorICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisjZW5kaWYKKyAgICAgICAgR1BS
UmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyNp
ZiAhRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09VTlQpCisgICAgICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KTsKKyNlbmRpZgorCisgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAg
ICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3BpbGwg
PSBzdGQ6Om1heChtaW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKworICAgICAgICBmb3IgKDsgYXJn
SW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKworICAgICAgICBpZiAoc3BpbGxU
eXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3Nl
ZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAg
ICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5k
ZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQ
cm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFy
Z0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvbmVTdG9yaW5n
QXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1Bcmdz
VG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAg
fQorCisgICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSh1bnNpZ25lZCBtaW5p
bXVtQXJnc1RvU3BpbGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFs
bCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgICAgICBKdW1wTGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyNpZiAhRU5BQkxFKENBTExFUl9T
UElMTFNfQ0FMTEVFKQorICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworI2VuZGlmCisgICAg
ICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50
KCk7CisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAgICAgICBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisgICAgICAgIAorICAgICAgICBm
b3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAg
ICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3Bp
bGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBh
c3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJn
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvbmVTdG9yaW5nQXJn
cy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9T
cGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAgfQor
ICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9n
dWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKworICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0g
YXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdEdldFBheWxv
YWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgaWYgKGFyZ0luZGV4KSAvLyBBbHdh
eXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBkb25lTG9hZGluZ0FyZ3MuYXBwZW5kKGJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlzKTsKKyNlbmRpZgorICAgIH0KKwogI2lm
IENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiArNzE1LDMxIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVu
dHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50
VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJndW1lbnQp
CisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoR1BS
UmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50
KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkUHRy
KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSksIHRv
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVm
b3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQUlJlZyB0bykKKyAgICB7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2FkMzIoQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHRvKTsK
KyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJl
Zm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewpAQCAtMTY2Niw3ICsx
NzgyLDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2
NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAg
ICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICB2b2lkIGluY3JlbWVudENvdW50ZXIo
Vk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mQ291bnRlcihjb3Vu
dGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xNjc1LDYgKzE3OTgsMTIgQEAgcHJvdGVj
dGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoaml0KS0+aW5jcmVt
ZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIo
aml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBDYWNoZWRSZWNvdmVyeTo6YWRk
VGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MpCit7CisgICAgQVNTRVJU
KG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOworICAgIHNpemVfdCBleGlzdGluZyA9IG1f
Z3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsKKyAgICBpZiAoZXhpc3RpbmcgPT0gV1RGOjpu
b3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX2dwclRhcmdldHMu
c2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0KCkgJiYgbV9yZWNvdmVyeS5pc0luR1BSKCkp
IHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSByZWNvdmVyaW5nIHRvIHRoZSBzYW1lIEdQUiwg
bWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0LgorICAgICAgICAgICAgR1BSUmVnIHNvdXJj
ZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAgICAgICAgICBpZiAoanNWYWx1ZVJlZ3MuZ3By
KCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50
IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVncyA9IEpTVmFsdWVS
ZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgbV9ncHJUYXJnZXRz
WzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5hcHBlbmQoanNWYWx1ZVJlZ3MpOworICAgIH0K
K30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91YmxlcyBhbmQgdW5kZXRlcm1pbmVkIEpTVmFs
dWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3b3VsZCBvdGhlcndpc2UgdXNlIHVwIEdQUnMu
ICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBDYWNoZWRSZWNvdmVyeTo6bG9hZHNJbnRvRlBS
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3Zlcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5
LmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVk
UmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
Q2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNoZWRSZWNvdmVyeSYmKSA9IGRlbGV0ZTsKIAog
ICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDE+JiB0YXJnZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiYgZ3By
VGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByVGFyZ2V0czsgfQogCiAgICAgdm9pZCBhZGRU
YXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7CkBAIC02OCwxNSArNjksMTEgQEAgcHVi
bGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFdh
bnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOwotICAgICAgICBtX3dhbnRlZEpT
VmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAgfQorICAgIHZvaWQgYWRkVGFyZ2V0SlNWYWx1
ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9pZCBzZXRXYW50ZWRGUFIoRlBSUmVnIGZwcikK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50ZWRKU1ZhbHVlUmVncyk7CisgICAgICAgIEFT
U0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV93YW50ZWRGUFIgPSBmcHI7
CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJl
Y292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpIHsgbV9yZWNvdmVyeSA9IHJlY292ZXJ5OyB9
CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9ncHJUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOworCisgICAgICAgIHJldHVybiBtX2dwclRhcmdl
dHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdhbnRlZEZQUigpIGNvbnN0IHsgcmV0dXJuIG1f
d2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3ZlcnkgbV9yZWNvdmVyeTsKLSAg
ICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVSZWdzOwogICAgIEZQUlJlZyBtX3dhbnRlZEZQ
UiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiBtX3Rh
cmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdzLCAxPiBtX2dwclRhcmdldHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWU7CiAgICAgVmVj
dG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBib29sIGFy
Z3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsKICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292
ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVn
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMy
Myw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShDYWMKICAgICAgICAg
ICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVn
LmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUo
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmZwcigpKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQgPSBjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwpOwogICAgICAg
ICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVyeSwKICAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRhRm9ybWF0SlMpKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5j
cHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIENhbGxGcmFt
ZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICAgICAgKyByb3VuZEFyZ3VtZW50
Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpKQogICAg
ICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
CiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGRhdGEuYXJncy5zaXpl
KCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKGRh
dGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5kaWYKICAgICAsIG1fZnJhbWVEZWx0YShtX2Fs
aWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCiB7CkBAIC01NCwxMSArNTcs
MjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKENDYQogICAgIG1fbG9j
a2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJbkpTU3RhY2soKSB8fCBkYXRhLmNhbGxl
ZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOwotCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycykKKyAgICAgICAgYWRkTmV3
KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSksIGRhdGEuY2FsbGVlKTsK
KyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgYWRkTmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7CisgICAgCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFkYXRhLmFy
Z3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3NbaV0udmlydHVhbFJlZ2lzdGVyKCkuaXNM
b2NhbCgpKTsKLSAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBk
YXRhLmFyZ3NbaV0pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChkYXRhLmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzICYmIGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgYWRkTmV3KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJG
b3JGdW5jdGlvbkFyZ3VtZW50KGkpKSwgZGF0YS5hcmdzW2ldKTsKKyAgICAgICAgZWxzZQorI2Vu
ZGlmCisgICAgICAgICAgICBhZGROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGRh
dGEuYXJnc1tpXSk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE4NSw4ICsxOTgs
MTMgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcChQcmludFN0cmVhbQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAjZWxzZQotICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpCisg
ICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIg
ICAgICAgICAiLCByZWcsICIgPC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOwor
ICAgICAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpID4g
MSkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbmV3Q2FjaGVkUmVj
b3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCksICIg
PC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KQEAgLTQ5Niw3
ICs1MTQsNyBAQCBib29sIENhbGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAg
QVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNJblJlZ2lzdGVycygpCiAgICAgICAg
IHx8IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXNDb25zdGFudCgpKTsKIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmICh2ZXJib3NlICYmIGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXpl
KCkpCiAgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyAiLCBjYWNoZWRSZWNvdmVyeS5yZWNv
dmVyeSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlZFJlY292ZXJ5LnRhcmdl
dHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgY2Fj
aGVkUmVjb3ZlcnkudGFyZ2V0cygpW2ldIH07CkBAIC01MDUsOSArNTIzLDkgQEAgYm9vbCBDYWxs
RnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hlZAogICAgICAgICAgICAgZGF0YUxvZyghaSA/
ICIgaW50byAiIDogIiwgYW5kICIsICJORVcgIiwgdGFyZ2V0KTsKICAgICAgICAgZW1pdFN0b3Jl
KGNhY2hlZFJlY292ZXJ5LCBhZGRyZXNzRm9yTmV3KHRhcmdldCkpOwogICAgICAgICBzZXROZXco
dGFyZ2V0LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiXG4i
KTsKICAgICBjYWNoZWRSZWNvdmVyeS5jbGVhclRhcmdldHMoKTsKICAgICBpZiAoIWNhY2hlZFJl
Y292ZXJ5LndhbnRlZEpTVmFsdWVSZWdzKCkgJiYgY2FjaGVkUmVjb3Zlcnkud2FudGVkRlBSKCkg
PT0gSW52YWxpZEZQUlJlZykKICAgICAgICAgY2xlYXJDYWNoZWRSZWNvdmVyeShjYWNoZWRSZWNv
dmVyeS5yZWNvdmVyeSgpKTsKQEAgLTYwNiw3ICs2MjQsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KCkKIHsKICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCi0gICAg
dXBkYXRlRGFuZ2VyRnJvbnRpZXIoKTsKKyAgICBpbml0RGFuZ2VyRnJvbnRpZXIoKTsKIAogICAg
IC8vIEZpcnN0LCB3ZSB0cnkgdG8gc3RvcmUgYW55IHZhbHVlIHRoYXQgZ29lcyBhYm92ZSB0aGUg
ZGFuZ2VyCiAgICAgLy8gZnJvbnRpZXIuIFRoaXMgd2lsbCBuZXZlciB1c2UgbW9yZSByZWdpc3Rl
cnMgc2luY2Ugd2UgYXJlIG9ubHkKQEAgLTc0MiwxMiArNzYwLDE5IEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgNCkgZmly
c3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8vIG1fbmV3RnJhbWVCYXNlLCB3
aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KKyAgICAvLyBOb3RlIHRoYXQgd2UgZGVs
YXkgc2V0dGluZyB0aGUgYXJndW1lbnQgY291bnQgcmVnaXN0ZXIgYXMgaXQgbmVlZHMgdG8gYmUg
cmVsZWFzZWQgaW4gc3RlcCAzLgogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIg
ICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9LCAiXG4iKTsKLSAgICBtX2ppdC5zdG9yZTMy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXco
VmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zm
c2V0KFRhZ09mZnNldCkpOwotICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0
ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFtX2FyZ3VtZW50c0luUmVnaXN0
ZXJzKSB7CisjZW5kaWYKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApLAorICAgICAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIg
eyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7
CisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdD
b3VudCgpKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFpc1Nsb3dQYXRo
KCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNlICE9IE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC03NjcsNiArNzkyLDIzIEBAIHZvaWQgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgICAgIGVtaXREaXNwbGFjZSgqY2FjaGVkUmVj
b3ZlcnkpOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8gRm9yIHJlY292ZXJp
ZXMgd2l0aCBtdWx0aXBsZSByZWdpc3RlciB0YXJnZXRzLCBjb3B5IHRoZSBjb250ZW50cyBvZiB0
aGUgZmlyc3QgdGFyZ2V0IHRvIHRoZQorICAgIC8vIHJlbWFpbmluZyB0YXJnZXRzLgorICAgIGZv
ciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcu
bmV4dCgpKSB7CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3
UmVnaXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeSB8fCBjYWNoZWRS
ZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA8IDIpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBHUFJSZWcgc291cmNlR1BSID0gY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMo
KVswXS5ncHIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBjYWNoZWRSZWNvdmVy
eS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV9qaXQubW92ZShzb3Vy
Y2VHUFIsIGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCkpOworICAgIH0KKwor
ICAgIGlmIChtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKQorICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCkpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNp
b24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYsMzcgQEAgcHVibGljOgogICAgIC8vIGNv
bnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZQogICAgIC8vIGFyZ3VtZW50cy9jYWxs
ZWUvY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGFyZSBieSB0YWtpbmcgaW50bwogICAgIC8vIGFjY291
bnQgYW55IHNwaWxsaW5nIHRoYXQgYWNxdWlyZUdQUigpIGNvdWxkIGhhdmUgZG9uZS4KLSAgICBD
YWxsRnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdCgpIGNvbnN0CisgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc25hcHNob3QoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVbmRlY2lkZWQoKSk7CiAKICAgICAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgZGF0YTsKICAgICAgICAgZGF0YS5udW1Mb2NhbHMgPSBudW1Mb2NhbHMo
KTsKLSAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFj
a0FyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJn
cykKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1YWxSZWdpc3RlciB7IENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIH07CisgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgp
OworICAgICAgICB9CiAgICAgICAgIGRhdGEuYXJncy5yZXNpemUoYXJnQ291bnQoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQoKTsgKytpKQotICAgICAgICAgICAg
ZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKS0+cmVj
b3ZlcnkoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MgfHwgaSA+
PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAg
ICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkt
PnJlY292ZXJ5KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWcgcmVn
IHsgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkgfTsKKyAgICAgICAgICAg
ICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWdd
IH07CisgICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gY2FjaGVkUmVjb3ZlcnktPnJlY292
ZXJ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZm9yIChSZWcgcmVnID0g
UmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAg
ICAgICAgICAgIGlmIChyZWcuaXNHUFIoKSAmJiBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0Fy
Z3MKKyAgICAgICAgICAgICAgICAmJiBHUFJJbmZvOjp0b0FyZ3VtZW50SW5kZXgocmVnLmdwcigp
KSA8IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmdDb3VudCgp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgQ2FjaGVkUmVjb3Zl
cnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OwogICAgICAgICAgICAg
aWYgKCFjYWNoZWRSZWNvdmVyeSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM3Niw2
ICszOTYsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fYWxpZ25lZE9sZEZyYW1lU2l6ZTsKICAg
ICBpbnQgbV9hbGlnbmVkTmV3RnJhbWVTaXplOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9v
bCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzOworI2VuZGlmCiAKICAgICAvLyBUaGlzIGlzIHRoZSBk
aXN0YW5jZSwgaW4gc2xvdHMsIGJldHdlZW4gdGhlIGJhc2Ugb2YgdGhlIG5ldwogICAgIC8vIGZy
YW1lIGFuZCB0aGUgYmFzZSBvZiB0aGUgb2xkIGZyYW1lLiBJdCBjb3VsZCBiZSBuZWdhdGl2ZSB3
aGVuCkBAIC02NDEsOSArNjY0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChqc1ZhbHVl
UmVncyAmJiAhZ2V0TmV3KGpzVmFsdWVSZWdzKSk7CiAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBj
YWNoZWRSZWNvdmVyeSA9IGFkZENhY2hlZFJlY292ZXJ5KHJlY292ZXJ5KTsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICBpZiAoY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkp
Ci0gICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1
ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOwotICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5
LT53YW50ZWRKU1ZhbHVlUmVncygpKSB7CisgICAgICAgICAgICBpZiAocmVjb3ZlcnkuaXNJbkdQ
UigpICYmIGpzVmFsdWVSZWdzLmdwcigpID09IHJlY292ZXJ5LmdwcigpKSB7CisgICAgICAgICAg
ICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCku
Z3ByKCldID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVl
UmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNo
ZWRSZWNvdmVyeTsKICNlbHNlCiAgICAgICAgIGlmIChKU1ZhbHVlUmVncyBvbGRSZWdzIHsgY2Fj
aGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkgfSkgewogICAgICAgICAgICAgaWYgKG9s
ZFJlZ3MucGF5bG9hZEdQUigpKQpAQCAtNjU2LDggKzY4Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChqc1ZhbHVlUmVncy50YWdHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAg
bV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MudGFnR1BSKCldID0gY2FjaGVkUmVjb3Zlcnk7CiAj
ZW5kaWYKLSAgICAgICAgQVNTRVJUKCFjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3Mo
KSk7Ci0gICAgICAgIGNhY2hlZFJlY292ZXJ5LT5zZXRXYW50ZWRKU1ZhbHVlUmVncyhqc1ZhbHVl
UmVncyk7CisgICAgICAgIGNhY2hlZFJlY292ZXJ5LT5hZGRUYXJnZXRKU1ZhbHVlUmVncyhqc1Zh
bHVlUmVncyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXcoRlBSUmVnIGZwciwgVmFsdWVSZWNv
dmVyeSByZWNvdmVyeSkKQEAgLTc1NSwxMyArNzgxLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiByZWcgPD0gZGFuZ2VyRnJvbnRpZXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGluaXREYW5n
ZXJGcm9udGllcigpCisgICAgeworICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKGxhc3RO
ZXcoKSk7CisgICAgfQorCiAgICAgdm9pZCB1cGRhdGVEYW5nZXJGcm9udGllcigpCiAgICAgewor
ICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKG1fZGFuZ2VyRnJvbnRpZXIgLSAxKTsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmREYW5nZXJGcm9udGllckZyb20oVmlydHVhbFJlZ2lzdGVyIG5l
eHRSZWcpCisgICAgewogICAgICAgICBBU1NFUlQoIWlzVW5kZWNpZGVkKCkpOwogCiAgICAgICAg
IG1fZGFuZ2VyRnJvbnRpZXIgPSBmaXJzdE5ldygpIC0gMTsKLSAgICAgICAgZm9yIChWaXJ0dWFs
UmVnaXN0ZXIgcmVnID0gbGFzdE5ldygpOyByZWcgPj0gZmlyc3ROZXcoKTsgcmVnIC09IDEpIHsK
LSAgICAgICAgICAgIGlmICghZ2V0TmV3KHJlZykgfHwgIWlzVmFsaWRPbGQobmV3QXNPbGQocmVn
KSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKKyAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gbmV4dFJlZzsgcmVnID49IGZpcnN0TmV3KCk7IHJlZyAtPSAxKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRPbGQobmV3QXNPbGQocmVnKSkgfHwgIWdldE9sZChuZXdBc09sZChy
ZWcpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgbV9kYW5nZXJG
cm9udGllciA9IHJlZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9CiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByICE9IEludmFsaWRHUFJSZWc7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBvdGhlcikgeyByZXR1cm4gbV9ncHIg
PT0gb3RoZXIubV9ncHI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIp
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KEpTVmFs
dWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICAKICAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9n
cHI7IH0KICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsg
fQpAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAKICNpZiBDUFUoWDg2KQogI2RlZmluZSBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDUKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6
OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJl
dHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwpAQCAtMzc5LDYgKzM4MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRv
QXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgp
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVy
WzhdID0geyAyLCAwLCAxLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdp
c3RlcltyZWddOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BS
UmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC00MDMsNiArNDEzLDExIEBAIHB1YmxpYzoKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA3dQog
I2VuZGlmCisjaWYgVVNFKFJFR0lTVEVSX0FSR1VNRU5UUykKKyNkZWZpbmUgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyAtIDJ1KQorI2Vsc2UKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyAwdQorI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNDY0LDYg
KzQ3OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3Rl
cnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC01MDgsNiArNTI0LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworI2lmICFPUyhXSU5ET1dTKQorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52YWxp
ZEluZGV4LCAzLCAyLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAx
LCAwLCA0LCA1LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZWxzZQorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2XSA9IHsgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCB9OworI2VuZGlmCisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJb
cmVnXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTUzOCw2ICs1NjYsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNKQogI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC02MDEsNiArNjMwLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9B
cmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYp
OworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFIzKQorICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorICAgIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC02MjEsNiArNjU5LDcgQEAgcHVi
bGljOgogCiAjaWYgQ1BVKEFSTTY0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDh1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKIC8vIENhbGxlZSBTYXZlcyBpbmNs
dWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CiAKQEAgLTY5OCw2ICs3MzcsNyBAQCBwdWJsaWM6
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMyA9PSAxMywgcTEzX2lzXzEz
KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTE0ID09IDE0LCBxMTRfaXNf
MTQpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTUgPT0gMTUsIHExNV9p
c18xNSk7CisKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKQEAgLTcxNSw2ICs3NTUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdG9SZWdpc3RlcihpbmRleCk7CiAgICAgfQogCisgICAg
c3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3Vt
ZW50R1BSNykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQpcmVnOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CkBAIC03NDYsNiArNzk0LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTc3Myw2ICs4MjIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0
ZXJzOjphMjsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdp
c3RlcnM6OmEzOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CkBAIC04MjUsNiArODc1LDcgQEAgcHVibGlj
OgogCiAjaWYgQ1BVKFNINCkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0
dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAj
ZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUklu
Zm8gewpAQCAtODU1LDYgKzkwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IGFyZ3VtZW50R1BSMiA9IFNINFJlZ2lzdGVyczo6cjY7IC8vIHJlZ1QyCiAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBTSDRSZWdpc3RlcnM6OnI3OyAvLyByZWdUMwogICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDI7CkBAIC04OTEsNiArOTQzLDYxIEBAIHB1YmxpYzoKIAogI2VuZGlmIC8v
IENQVShTSDQpCiAKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvcih1bnNpZ25lZCBh
cmd1bWVudEluZGV4KQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBp
ZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICByZXR1cm4gR1BSSW5mbzo6dG9Bcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50SW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRJ
bmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW52
YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1
cm4gYXJndW1lbnRSZWdpc3RlckZvcigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEdQUkluZm86OnJl
Z1QwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lzdGVyRm9yKDEpOworfQorCitp
bmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50
KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJldHVybiBhcmd1bWVudCArIDI7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lzdGVyKEdQUlJl
ZyBncHIpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+
IDAKKyAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gR1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4
KGdwcik7CisgICAgQVNTRVJUKGFyZ3VtZW50SW5kZXggIT0gR1BSSW5mbzo6SW52YWxpZEluZGV4
ICYmIGFyZ3VtZW50SW5kZXggPj0gMik7CisgICAgcmV0dXJuIGFyZ3VtZW50SW5kZXggLSAyOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcihhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JK
U0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnRJbmRleCkpOworfQorCitpbmxpbmUgdW5zaWduZWQg
bnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQorewor
ICAgIHJldHVybiBzdGQ6Om1pbihhcmd1bWVudENvdW50LCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTKTsKK30KKwogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1
bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQg
cmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVn
aXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4
dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDE0ICs2Niw2IEBAIHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkEKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1KSVQ6OkNvZGVSZWYgSklUOjpj
b21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCi17Ci0gICAg
aWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7Ci0gICAgSklUIGppdCh2bSwg
MCk7Ci0gICAgcmV0dXJuIGppdC5wcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwodm0sIGZ1bmMp
OwotfQotCiBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIDogSlNJ
bnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0ZXIodm0tPmludGVy
cHJldGVyKQpAQCAtNTc5LDYgKzU3MSwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5r
aW5nKEpJVENvbXBpCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkK
ICAgICAgICAgbm9wKCk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNwaWxsQXJndW1lbnRS
ZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpSZWdBcmdzTm9Bcml0eSk7CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIEp1bXAgY29u
dGludWVTdGFja0VudHJ5ID0ganVtcCgpOworI2VuZGlmCisjZW5kaWYKKyAgICBtX3N0YWNrQXJn
c0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
U3RhY2tBcmdzTm9Bcml0eSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiBFTkFCTEUoVk1fQ09V
TlRFUlMpCisgICAgY29udGludWVTdGFja0VudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKwogICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1f
Y29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCkBAIC02MzUsNyArNjQxLDIx
IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKIAogICAgIGlmIChtX2NvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwo
KTsKKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisKKyAg
ICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAg
ICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIEp1bXAgY29udGludWVTdGFja0FyaXR5RW50cnkg
PSBqdW1wKCk7CisjZW5kaWYKKworICAgICAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0g
bGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzQXJp
dHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVTdGFja0FyaXR5
RW50cnkubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDAp
LCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKTsKICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29k
ZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwpAQCAtNjQzLDYgKzY2Myw4IEBAIHZv
aWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbG9hZDMyKHBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAg
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKKyAgICAgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgICAgICBt
X2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCkBAIC03NzgsOSArODAwLDE0IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGlu
aygpCiAgICAgfQogICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlTWFwKGppdENvZGVNYXBFbmNv
ZGVyLmZpbmlzaCgpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVj
azsKLSAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAg
ICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9hcml0eUNoZWNr
KTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeUFyaXR5T0tQdHIgPSBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KTsKKyAgICAKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAg
aWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBy
ZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1f
cmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBzdGFja0VudHJ5V2l0aEFyaXR5
Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hl
Y2spOworICAgIH0KIAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkgewogICAg
ICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03OTgsMTQgKzgyNSwy
NiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIENvZGVSZWYgcmVzdWx0ID0g
RklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAgICAgICgiQmFzZWxpbmUg
SklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJs
b2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpLmRhdGEoKSkpOwotICAgIAorCiAgICAgbV92bS0+
bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAgICAgICBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2st
PnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgSklURW50cnlQb2ludHMg
ZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRy
LCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50cnlBcml0eU9LUHRyLCBz
dGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVy
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJh
bWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29kZSgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAg
ICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50
cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisKICAgICBt
X2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihyZXN1
bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQg
WyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3Rh
cnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKICNpbmNsdWRl
ICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIK
IApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5w
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8sIHJldHVybkFkZHJlc3Ms
IGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxl
Q1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgc3RhdGljIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRzKFZNKiB2bSwgTmF0
aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2bS0+Y2FuVXNl
SklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2ZUNhbGxSZWYgPSBDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihuYXRpdmVDYWxsUmVmLCBu
YXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaml0LnBy
aXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7
CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpA
QCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwg
SklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNh
bGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAgICAgICBDb2RlUmVmIHByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSklU
RW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiwg
TmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJh
eUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCiAgICAgICAgIC8vIEFk
ZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpA
QCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9w
dXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Owog
ICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwotICAgICAgICAKLSAgICAgICAg
TGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1fc3RhY2tBcmdzQXJpdHlPS0Vu
dHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOworICAgICAgICBM
YWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxK
SVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogdm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0
VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwg
cmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJn
cywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zm
c2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxG
cmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIG5vbkFy
Z0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVn
VDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKLSAgICBlbWl0TmFr
ZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7Cisg
ICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLmNv
ZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0TmFrZWRDYWxsKHZpcnR1
YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0
YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9p
bnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAg
IEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4
KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIFN0YWNrQXJncywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2FsbENvbXBpbGF0aW9u
SW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1
bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4
XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcsMTMgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jYWxsQ29t
cGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8pLCByZWdUMik7Cisg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQogICAgICAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJ
bmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2Vk
Q2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CiAKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92
YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENh
bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAy
MDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJh
bWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
OwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBy
ZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywg
Vk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpDYWxs
VmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJ
bnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBy
ZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3MocmVnVDEsIENh
bGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06
OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0
Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7
CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0
aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAg
ICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2Fs
bCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0
aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxNCArMTU5LDIzIEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX29wY29kZXNfbXVzdF9iZV9z
YW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxscHRyOworICAgIEFy
Z3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOworCiAgICAgaWYg
KG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlv
biwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblsz
XS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQ7CiAKKyNpZiBFTkFCTEUoQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1F
TlRfQ0FMTFMpCisgICAgICAgIGlmIChOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTICYmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVj
dCkpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25G
b3IoYXJnQ291bnQpOworICAgICAgICAgICAgaW5mby0+c2V0UHJvdmlkZXNSZWdpc3RlckFuZFN0
YWNrQXJndW1lbnRzKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBl
bWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKQEAgLTE3MSwxNSArMTg1LDI1IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgfQogICAgIAogICAgICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSAr
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3Mp
IHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdp
c3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFy
Z3MgPSBzdGQ6Om1pbihhcmdDb3VudCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lz
dGVyQXJnczsgYXJnKyspCisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSks
IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZykpOworICAgICAgICB9CiAg
ICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KKworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKICAgICAKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChi
eXRlY29kZU9mZnNldCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9u
Qml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7
CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCi0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVS
ZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY2FsbGVlLCBjYWxsZWVSZWdpc3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVS
ZWdpc3RlciwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAg
ICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMTg3LDE2ICsyMTEsMTggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERh
dGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nh
c2UgPSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRG
dW5jdGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBjYWxsZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2Vk
RnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nh
c2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExp
bmtJbmZvSW5kZXgpOwotICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBl
Rm9yKG9wY29kZUlEKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAg
IGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJn
dW1lbnRzTG9jYXRpb24sIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lz
dGVyKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbklu
Zm8oKSk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQ
YXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRl
cih0aGlzLCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNo
dWZmbGVEYXRhOwogICAgICAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyOwogICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpA
QCAtMjA5LDcgKzIzNSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICAgICAgICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgfQogICAgICAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIo
cmVnVDAsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihj
YWxsZWVSZWdpc3RlciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBD
YWxsZWVTYXZlUmVnaXN0ZXJzKG1fY29kZUJsb2NrKTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVT
aHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlz
LCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CkBAIC0yNDYsOSArMjcyLDEwIEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8
IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENv
bXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOwor
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIG5vbkFyZ0dQUjApOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVt
aXROYWtlZENhbGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtH
ZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwog
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJv
bVRhaWxDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2
aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUo
Vk0qIHZtLCBQcm90b0NhCiAKICAgICBpZiAoIWZ1bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+
bmVlZEFyaXR5Q2hlY2soKSkgewogICAgICAgICBBU1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVk
QXJpdHlDaGVjaygpKTsKLSAgICAgICAgZW50cnlBZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlD
aGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAg
ICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvSmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZt
LCBwcm90b0NhbGxGcmFtZSkpOwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVs
bCgpIDogcmVzdWx0OwogfQpAQCAtMTYyLDkgKzE2Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVj
dEpJVENvZGUoSklUVHlwZSBqaXQKIHsKIH0KIAotRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29k
ZShKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywg
SklUVHlwZSBqaXRUeXBlKQotICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkK
LSAgICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpE
aXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5
cGUpCisgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYoZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUp
CisgICAgLCBtX2VudHJ5UG9pbnRzKGVudHJpZXMpCiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2
IEBAIERpcmVjdEpJVENvZGU6On5EaXJlY3RKSVRDb2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RK
SVRDb2RlOjppbml0aWFsaXplQ29kZVJlZihKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6
Q29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK3ZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVu
dHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX3JlZik7Ci0gICAgbV9yZWYgPSByZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9
IHdpdGhBcml0eUNoZWNrOworICAgIG1fcmVmID0gZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9l
bnRyeVBvaW50cyA9IGVudHJpZXM7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29k
ZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRy
IERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0g
ICAgc3dpdGNoIChhcml0eSkgewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7
Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0eToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRo
QXJpdHlDaGVjayk7Ci0gICAgICAgIHJldHVybiBtX3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7Cisg
ICAgcmV0dXJuIG1fZW50cnlQb2ludHMuZW50cnlGb3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENv
ZGU6Ok5hdGl2ZUpJVENvZGUoSklUVHlwZSBqaXRUeXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZv
aWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsK
IH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0
eUNoZWNrTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNh
bGwoRW50cnlQb2ludFR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAg
cmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAi
SklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5
ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNr
TW9kZSkgPSAwOworICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50
VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSA9IDA7Ci0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVy
biBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRh
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsy
MjMsMTUgQEAgcHJvdGVjdGVkOgogY2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2Rl
V2l0aENvZGVSZWYgewogcHVibGljOgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAg
RGlyZWN0SklUQ29kZShDb2RlUmVmLCBDb2RlUHRyIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsK
KyAgICBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAg
dmlydHVhbCB+RGlyZWN0SklUQ29kZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVS
ZWYoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXpl
RW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIENvZGVQdHIg
bV93aXRoQXJpdHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsK
IAogY2xhc3MgTmF0aXZlSklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAt
MjQzLDcgKzI0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVm
KENvZGVSZWYpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkg
b3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworLy8gIFJlZ0NDIFRvZG86IENv
bnNpZGVyIHVzaW5nIGEgbWFjcm8gYmFzZSBjb250cnVjdGlvbiB0byBnZXQgZW51bSAiaW5oZXJp
dGVuY2UiCitlbnVtIEFyZ3VtZW50c0xvY2F0aW9uIDogdW5zaWduZWQgeworICAgIFN0YWNrQXJn
cyA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0
CisgICAgUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczJJblJlZ2lz
dGVycywKKyAgICBSZWdpc3RlckFyZ3MzSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzNElu
UmVnaXN0ZXJzLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
PT0gNgorICAgIFJlZ2lzdGVyQXJnczVJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M2SW5S
ZWdpc3RlcnMsCisjZW5kaWYKKyAgICBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrCisjZW5k
aWYKK307CisKKy8vIFRoaXMgZW51bSBuZWVkcyB0byBoYXZlIHRoZSBzYW1lIGVudW1lcmF0b3Ig
b3JkZXJpbmcgYXMgQXJndW1lbnRzTG9jYXRpb24uCitlbnVtIFRodW5rRW50cnlQb2ludFR5cGUg
OiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzRW50cnkgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyMUFyZ0VudHJ5LAor
ICAgIFJlZ2lzdGVyMkFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjNBcmdzRW50cnksCisgICAgUmVn
aXN0ZXI0QXJnc0VudHJ5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyNUFyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjZBcmdzRW50
cnksCisjZW5kaWYKKyNlbmRpZgorICAgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudAorfTsKKwor
ZW51bSBFbnRyeVBvaW50VHlwZSB7CisgICAgU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
LAorICAgIFN0YWNrQXJnc011c3RDaGVja0FyaXR5LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWly
ZWQsCisgICAgUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsCisgICAgUmVnaXN0ZXJBcmdz
TXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUyA+PSA0CisgICAgUmVnaXN0ZXJBcmdzMSwKKyAgICBSZWdpc3RlckFyZ3MyLAorICAgIFJl
Z2lzdGVyQXJnczMsCisgICAgUmVnaXN0ZXJBcmdzNCwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAgICBSZWdpc3RlckFyZ3M1LAorICAgIFJlZ2lz
dGVyQXJnczYsCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgTnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXMKK307CisKK2NsYXNzIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBFbnRyeVBvaW50VHlwZTo6TnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXM7CisKKyAgICBKSVRFbnRyeVBvaW50cygpCisgICAgeworICAgICAgICBjbGVhckVudHJp
ZXMoKTsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50cyhDb2RlUHRyIHJlZ2lzdGVyQXJnc05v
Q2hlY2tSZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
RW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBDb2Rl
UHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRy
IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICB7CisgICAgICAgIG1fZW50cnlQb2ludHNb
U3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZEVudHJ5OworICAgICAgICBtX2VudHJ5UG9pbnRzW1N0YWNrQXJnc011c3RDaGVja0Fy
aXR5XSA9IHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkXSA9IHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5
OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzXSA9
IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnk7CisgICAgICAgIG1fZW50cnlQb2lu
dHNbUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHldID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVu
dHJ5OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGkgKyspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRz
W3JlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChpKV0gPSByZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzTm9D
aGVja1JlcXVpcmVkRW50cnkpOworICAgICAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJBcmdzUG9z
c2libGVFeHRyYUFyZ3NFbnRyeSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3ND
aGVja0FyaXR5RW50cnkpOworI2VuZGlmCisKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9y
KEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50
c1t0eXBlXTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5
cGUsIENvZGVQdHIgZW50cnkpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA8IE51bWJlck9m
RW50cnlQb2ludFR5cGVzKTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0eXBlXSA9IGVudHJ5Owor
ICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihFbnRyeVBvaW50
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEVudHJ5UG9pbnRz
LCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5
cGUgcmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KHVuc2lnbmVkIGFyZ0NvdW50KQor
ICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
ICAgIEFTU0VSVChhcmdDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJnQ291bnQg
PSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKGFyZ0NvdW50KTsKKyAgICAgICAgaWYgKCFy
ZWdpc3RlckFyZ0NvdW50IHx8IHJlZ2lzdGVyQXJnQ291bnQgIT0gYXJnQ291bnQpCisgICAgICAg
ICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihSZWdpc3RlckFyZ3MxICsgcmVnaXN0ZXJBcmdD
b3VudCAtIDEpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGFyZ0NvdW50KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJn
c011c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIEVudHJ5UG9pbnRU
eXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRUeXBlKEFyZ3VtZW50c0xvY2F0aW9uIHR5
cGUpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICAgICAgQVNTRVJUKHR5cGUgIT0gU3RhY2tBcmdzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0g
UmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjaykKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0ZXJBcmdzMSArIHR5cGUgLSBSZWdpc3RlckFyZ3MxSW5S
ZWdpc3RlcnMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50cmllcygpCisg
ICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGktLTsp
CisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMmIG9wZXJhdG9yPShjb25zdCBKSVRFbnRyeVBv
aW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVu
dHJ5VHlwZXM7IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9l
bnRyeVBvaW50c1tpXTsKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRl
OgorCisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJlck9mRW50cnlUeXBlc107Cit9Owor
CitjbGFzcyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgOiBwdWJsaWMgSklURW50cnlQb2ludHMgewor
cHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisKKyAg
ICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBv
aW50c1dpdGhSZWYoY29uc3QgSklURW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAg
OiBKSVRFbnRyeVBvaW50cyhvdGhlcikKKyAgICAgICAgLCBtX2NvZGVSZWYob3RoZXIubV9jb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBjb25zdCBKSVRFbnRyeVBvaW50cyYgb3RoZXIpCisgICAgICAgIDogSklURW50cnlQ
b2ludHMob3RoZXIpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBjb2RlUmVmLCBDb2RlUHRy
IHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0
YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhDb2RlUHRy
KCksIENvZGVQdHIoKSwgQ29kZVB0cigpLCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihjb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoQ29kZVJlZiBj
b2RlUmVmLCBDb2RlUHRyIHJlZ2lzdGVyQXJnc05vQ2hlY2tzUmVxdWlyZWRFbnRyeSwKKyAgICAg
ICAgQ29kZVB0ciByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LCBDb2RlUHRyIHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWRFbnRyeSwgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkp
CisgICAgICAgIDogSklURW50cnlQb2ludHMocmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVu
dHJ5LCByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LAorICAgICAgICAgICAgcmVn
aXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5LCBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwKKyAgICAgICAgICAgIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgLCBt
X2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkg
eyByZXR1cm4gbV9jb2RlUmVmOyB9CisKK3ByaXZhdGU6CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7
Cit9OworCitpbmxpbmUgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb25Gb3IodW5z
aWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1bWVudENvdW50KQorICAgICAgICByZXR1cm4gU3Rh
Y2tBcmdzOworICAgIAorICAgIGFyZ3VtZW50Q291bnQgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTICsgMSwgYXJndW1lbnRDb3VudCk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50c0xvY2F0aW9uPihBcmd1bWVudHNMb2NhdGlv
bjo6UmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnczsK
KyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRyeVBvaW50VHlw
ZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQgfHwgYXJndW1lbnRD
b3VudCA+IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAg
IHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsg
YXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKK30KKworaW5saW5lIEVudHJ5UG9pbnRUeXBlIGVu
dHJ5UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChhcmd1
bWVudExvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnc011c3RD
aGVja0FyaXR5OworICAgIAorICAgIGlmIChhcmd1bWVudExvY2F0aW9uID09IFJlZ2lzdGVyQXJn
c1dpdGhFeHRyYU9uU3RhY2spCisgICAgICAgIHJldHVybiBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KEVudHJ5
UG9pbnRUeXBlOjpSZWdpc3RlckFyZ3MxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50
TG9jYXRpb24gLSBSZWdpc3RlckFyZ3MxSW5SZWdpc3RlcnMpKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGFyZ3VtZW50TG9jYXRpb24pOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGh1bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5
UG9pbnRUeXBlRm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24pCit7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIHVuc2lnbmVkIGFy
Z3VtZW50TG9jYXRpb25JbmRleCA9IHN0ZDo6bWluKFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3Rh
Y2sgLSAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbikpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihhcmd1bWVudExvY2F0aW9uSW5k
ZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRMb2NhdGlvbik7CisgICAgcmV0
dXJuIFN0YWNrQXJnc0VudHJ5OworI2VuZGlmCit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRU
eXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgYXJndW1lbnRD
b3VudCA9IG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IoYXJndW1lbnRDb3VudCk7CisgICAg
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KFRodW5rRW50cnlQ
b2ludFR5cGU6OlJlZ2lzdGVyMUFyZ0VudHJ5ICsgYXJndW1lbnRDb3VudCAtIDEpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3VudCk7CisgICAgcmV0dXJuIFN0YWNrQXJnc0Vu
dHJ5OworI2VuZGlmCit9CisKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwor
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIENvZGVSZWY7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mRW50cnlUeXBlcyA9IFRodW5rRW50cnlQb2ludFR5cGU6OlRo
dW5rRW50cnlQb2ludFR5cGVDb3VudDsKKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmKCkKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYoQ29kZVJlZiBjb2RlUmVmKQorICAgICAgICA6IG1fY29kZVJlZihjb2RlUmVmKQorICAg
IHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb25zdCBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9jb2Rl
UmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkVudHJ5VHlwZXM7IGkrKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNb
aV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlG
b3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50
cnlQb2ludHNbdHlwZV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihBcmd1bWVudHNM
b2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBlbnRyeUZv
cih0aHVua0VudHJ5UG9pbnRUeXBlRm9yKGFyZ3VtZW50c0xvY2F0aW9uKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRFbnRyeUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUsIENvZGVQdHIgZW50
cnkpCisgICAgeworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRvZihKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiwgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisgICAgdm9p
ZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVy
T2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0
dXJuIG1fY29kZVJlZjsgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYm
IG9wZXJhdG9yPShjb25zdCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3RoZXIp
CisgICAgeworICAgICAgICBtX2NvZGVSZWYgPSBvdGhlci5tX2NvZGVSZWY7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJl
ZjsKKyAgICBDb2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jKQorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xv
Z3VlIHBhY2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTY4OQpAQCAtMTI5LDcgKzEyOSw5IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywg
R0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNoQnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVu
Y3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgSklUOjpDb2RlUmVmIGNvZGVSZWYgPSBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBDVEkgbmF0aXZlIGNhbGwiKSk7CisgICAgCisg
ICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwg
Y29kZVJlZi5jb2RlKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLUpJVDo6Q29kZVJlZiBKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uKQorSklURW50cnlQ
b2ludHNXaXRoUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbikKIHsKLSAgICByZXR1cm4gdm0tPmdldENUSVN0dWIobmF0aXZlQ2Fs
bEdlbmVyYXRvcik7CisgICAgcmV0dXJuIHZtLT5nZXRKSVRFbnRyeVN0dWIobmF0aXZlQ2FsbEdl
bmVyYXRvcik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsMTAgKzg5MCwxNCBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgSlNTY29wZSogc2Nv
cGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyLCBjb2RlUHRyRm9y
TGlua2luZzsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBpZiAo
IWNhbGxMaW5rSW5mby0+cHJvdmlkZXNSZWdpc3RlckFuZFN0YWNrQXJndW1lbnRzKCkgJiYgY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgY29kZVB0ckZv
ckxpbmtpbmcgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011
c3RDaGVja0FyaXR5KTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTkxNCwxNyArOTE4LDQ0IEBAIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sg
PSAqY29kZUJsb2NrU2xvdDsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAg
IGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAg
ICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5
KTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgYm9vbCB1c2VTdGFja0VudHJ5ID0g
Y29kZUJsb2NrLT5wcmVmZXJzU3RhY2tBcmd1bWVudHMoKSAmJiBjYWxsTGlua0luZm8tPnByb3Zp
ZGVzUmVnaXN0ZXJBbmRTdGFja0FyZ3VtZW50cygpOworI2VuZGlmCisgICAgICAgIHNpemVfdCBj
YWxsZXJBcmd1bWVudENvdW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKTsKKyAgICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFy
Z3VtZW50Q291bnQgPCBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJh
cmdzKCkpIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgICAgICBpZiAoIXVzZVN0YWNrRW50cnkgJiYgY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJ
blJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lz
dGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
Y29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAg
ICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQ
b2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICB9IGVsc2UgaWYg
KCF1c2VTdGFja0VudHJ5ICYmIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkg
eworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVlQXJndW1lbnRD
b3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvZGVQ
dHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIEpJ
VEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2FsbGVyQXJn
dW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtpbmcpCisg
ICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50cnkgcG9pbnRz
IHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExp
bmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9
IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsK
KyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5k
LCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkK
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQotICAgICAgICBsaW5r
Rm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRy
KTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ss
IGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2luZyA6IGNvZGVQdHIp
OwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0g
Q2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CkBAIC05
NTksNyArOTkwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGlyZWN0Q2EK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCi0g
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVj
a0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGNhbGxMaW5r
SW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5
IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2RlUHRyID0gZXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5k
aWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApA
QCAtOTcxLDEzICsxMDA2LDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGly
ZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBBcml0eUNoZWNrTW9k
ZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygp
OwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9IE11c3RDaGVj
a0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFJlZ0NDIFRvZG86IFRo
aXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChh
cmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAg
ICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4g
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0
ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UK
KyAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50
KQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RG
b3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCAr
MTA3MSwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAg
ICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkg
aWYgdGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdp
bGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2
b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
ZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShy
ZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVu
a3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVD
YWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdl
bmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIs
IG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0
aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6
OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1
bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAo
IXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZl
Q29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2
ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1
bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50
cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50
cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRp
b24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZh
bHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBn
ZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRo
cmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9
IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7
Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBu
dWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5l
cmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9y
KHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5
LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2
ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5j
dGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxl
KGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0
aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9u
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51
bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgog
ICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRF
bnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlO
YXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSos
IE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRp
dmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRv
ciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9j
dGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50
cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1f
aml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdl
bmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0Vu
dHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NTkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQp
OworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNl
bmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQog
ICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50
MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBG
UFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVu
dFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAg
ICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgp
OworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBz
dGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMg
dXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lz
dGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5
IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzksMjEgKzUzOSwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1
bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJl
Zi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBv
aW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8s
IHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9
CiAKIHZvaWQgbGlua0ZvcigKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIGxpbmtTbG93Rm9yKAog
ICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXZl
cnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjb2Rl
UmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8uaXNEaXJlY3QoKSkgewogICAgICAgICBjYWxs
TGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIHVubGlu
a0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlu
a0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwogICAgIAotICAgIHJldmVydENhbGwoJnZtLCBj
YWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAg
IHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBA
IC02NTQsOSArNjU0LDkgQEAgdm9pZCBsaW5rVmlydHVhbEZvcigKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtp
bmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVy
RnJhbWUoKS0+Y29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlu
a0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CisgICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVu
ay5jb2RlUmVmKCksICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAt
NzA1LDYgKzcwNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExp
bmtJbmZvLnNldEhhc1NlZW5DbG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGlj
Q2FsbENhc2U+IGNhbGxDYXNlczsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91
dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlz
dCkgewpAQCAtNzE2LDcgKzcxNyw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRs
ZSBhIGNhbGxlZSwgZWl0aGVyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBi
ZWNhdXNlIGFyaXR5IG1pc21hdGNoLAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBi
ZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAg
ICAgICBpZiAoIWNvZGVCbG9jayB8fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2Fs
bExpbmtJbmZvLmlzVmFyYXJncygpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBj
YWxsZXJBcmd1bWVudENvdW50IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAg
ICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03MzcsNyArNzM4LDEwIEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICB9CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChj
YWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxl
ZUdQUiA9PSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJz
IHN0dWJKaXQodm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93UGF0aDsKQEAgLTc1OSw2ICs3NjMsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwogICAgICAgICBpZiAoZnJhbWVTaHVm
ZmxlcikKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BS
KCk7CisgICAgICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygp
KQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1
bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhlY3V0YWJsZSBpbiBzY3JhdGNoR1BSLgpAQCAtODI0LDEz
ICs4MzAsMjMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIEdQUlJlZyBmYXN0Q291
bnRzQmFzZUdQUjsKICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgZmFzdENvdW50c0Jh
c2VHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgZWxzZSBpZiAoY2FsbExp
bmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisjZWxzZQorICAgICAgICBm
YXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOworI2VuZGlmCiAgICAgZWxzZSB7CiAg
ICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0KICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNvbXBhcmlzb25WYWx1ZUdQUiwgR1BSSW5mbzo6
cmVnVDMpOwogICAgIH0KLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBmYXN0Q291bnRzQmFzZUdQUik7CisgICAgaWYgKGZhc3RD
b3VudHMpCisgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
ZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNCYXNlR1BSKTsKICAgICBpZiAoIWZyYW1lU2h1
ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkKICAgICAgICAgc3R1YkppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZzdHViSml0LCBW
TTo6UG9seW1vcnBoaWNDYWxsKTsKKwogICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29t
cGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2
YW5jZShzdHViSml0KSkgewpAQCAtODM5LDggKzg1NSwzMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4
XS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxl
KCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworCisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uYXJn
dW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2Rl
QmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1lbnRDb3VudCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICAg
ICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50ID09IGNhbGxlckFyZ3VtZW50Q291bnQgfHwg
Y2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBSZWdpc3RlckFyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9yQXJnQ291bnQgPSBKSVRFbnRyeVBvaW50czo6
cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpOwor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlGb3JBcmdDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBl
ID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAg
ICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRy
ZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpOworICAgICAgICAgICAgdmFyaWFudC5l
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKGVu
dHJ5VHlwZSk7CisgICAgICAgIEFTU0VSVChjb2RlUHRyKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBzdHViSml0LmFkZDMyKApAQCAtODQ4LDcgKzg4
OCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50
MzJfdCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewotICAgICAg
ICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3Qo
KSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihz
dHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9j
YXRpb24oKSkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKQEAgLTg2OSwxOSArOTA5LDE5IEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbCgKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBmcmFtZVNodWZmbGVyLT5z
ZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDApKTsKICNlbHNlCi0gICAgICAgIGZyYW1lU2h1ZmZsZXItPnNldENhbGxlZUpTVmFsdWVS
ZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uYXJndW1lbnRzTG9jYXRpb24oKSA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBmcmFtZVNo
dWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCkpKTsKICNlbmRpZgogICAgICAgICBmcmFtZVNodWZmbGVyLT5wcmVwYXJlRm9y
U2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3R1Ykpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJ
bmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICB9Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIHN0
dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0g
ICAgCi0gICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZv
OjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAg
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29k
ZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtOTAyLDcgKzk0Miw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxs
TGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKSk7CiAgICAgZWxz
ZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3Ro
ZXIoKS5sYWJlbEF0T2Zmc2V0KDApKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVM
b2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcikuY29kZSgpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25M
YWJlbCh2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVu
a0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7
CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREVfRk9SKApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9u
IDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAg
ICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywgSW5SZWdpc3RlcnMgfTsKKworICAgICAgICBT
cGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5
SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gT25TdGFjaykKICAgICAgICAg
ICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1Jl
Z2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3Rl
ZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oc3Bp
bGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQor
ICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICBm
aWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSA9IGxhYmVsKCk7CisgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5N
YXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAgICAg
IG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9y
QXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7
CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICAg
ICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAg
ICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMK
KyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVj
dGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0pCiAgICAgICAgICAg
ICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsK
KyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNFbnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRo
ZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1l
bnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0
cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJRCBhcmd1bWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkp
OworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJndW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1w
JiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWls
dXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5saW5rKHRoaXMpOworICAgICAgICAgICAgbV9m
YWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJRCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwx
MyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBm
YWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwo
ZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxz
LnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tp
XS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwotICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5k
KSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAg
ICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNFbnRyeS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNF
bnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsK
KyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lz
dGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZv
ciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0Vu
dHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dp
dGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnks
IHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5j
b2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVu
dHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRh
cmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIwIGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAt
MjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVudHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1fY2FsbHM7CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NTkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsK
K2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVyYXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciko
Vk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJv
bQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlv
biBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVS
ZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVudHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5
cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRB
cmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgfQorCisjaWYgIUVOQUJMRShD
QUxMRVJfU1BJTExTX0NBTExFRSkKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOworI2VuZGlmCisjaWYgIUVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQorICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNl
bmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0KTsKKyAgICBVTlVTRURfUEFSQU0oZW50
cnlQb2ludHMpOworI2VuZGlmCisgICAgZW50cnlQb2ludHNbU3RhY2tBcmdzXSA9IGppdC5sYWJl
bCgpOworfQorCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0qIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpIHNsb3dQYXRoRnVuY3Rpb24pCiB7CkBA
IC04OCw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICAvLyBNb3Zpbmcg
dGhlIHN0YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMg
dXMgcm9vbSBmb3Igb3VyIDMgYXJndW1lbnRzCiAgICAgLy8gYW5kIHNwYWNlIGZvciB0aGUgMTYg
Ynl0ZSByZXR1cm4gYXJlYS4KICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQUkluZm86Om5vbkFyZ0dQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigzMiksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKQEAgLTEwMCw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICNl
bHNlCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc2xvd1Bh
dGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlk
YXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpu
b25BcmdHUFIwKTsKQEAgLTEyNyw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigK
ICAgICBqaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sgb3IgaW4gdGhlIGxpbmsgcmVn
aXN0ZXIuIFdlIHdpbGwgaGVuY2UKICAgICAvLyBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0
aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwKQEAgLTEzNSw0
NSArMTU2LDE1MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyCiAg
ICAgLy8gdG8gYmUgaW4gcmVnVDAvcmVnVDEgKHBheWxvYWQvdGFnKSwgdGhlIENhbGxGcmFtZSB0
byBoYXZlIGFscmVhZHkKICAgICAvLyBiZWVuIGFkanVzdGVkLCBhbmQgYWxsIG90aGVyIHJlZ2lz
dGVycyB0byBiZSBhdmFpbGFibGUgZm9yIHVzZS4KICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
LSAgICAKKworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5
KGppdCwgZW50cnlQb2ludHMpOwogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxp
bmtDYWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxp
bmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNv
ZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRo
dW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBv
aW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAg
Zm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdzOyBlbnRyeUluZGV4IDwgIFRodW5r
RW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7CisgICAgICAgIGNhbGxFbnRyeVBv
aW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUlu
ZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50
cnlJbmRleF0pKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOworfQorCitK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK3sKKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNr
IG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxsIGhlbmNlCisgICAgLy8gc2F2ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5j
dGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9ybSBsaW5raW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9u
IGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRoZSBDYWxsTGlua0luZm8KKyAgICAvLyB0byBiZSBp
biBHUFJJbmZvOjpub25BcmdHUFIwLCB0aGUgY2FsbGVlIHRvIGJlIGluIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSwKKyAgICAvLyB0aGUgQ2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeSBiZWVu
IGFkanVzdGVkLCBhbmQgYXJndW1lbnRzIGluIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIC8vIGFu
ZC9vciBpbiB0aGUgc3RhY2sgYXMgYXBwcm9wcmlhdGUuCisgICAgQ0NhbGxIZWxwZXJzIGppdCh2
bSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50
cnlQb2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50
cnkoaml0LCBlbnRyeVBvaW50cyk7CisKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7IC8vIFNhdmUgY2FsbGVlJ3MgZnJhbWUgcG9p
bnRlcgorICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOworCisgICAgaWYg
KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50
cyhHUFJJbmZvOjpub25BcmdHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwLCBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGlmICht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBH
UFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOwor
ICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmdDb3VudFJlZyk7CisKKyAgICAvLyBsb2Fk
ICJ0aGlzIgorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9n
dWUoMCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMCkpOworCisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGZpbGxVbmRlZmluZWRbTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSU107CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFy
Z0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5k
ZXgrKykgeworICAgICAgICBmaWxsVW5kZWZpbmVkW2FyZ0luZGV4XSA9IGppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpOworICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJh
bWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKworICAgIENDYWxsSGVscGVyczo6SnVt
cCBkb25lRmlsbGluZyA9IGppdC5qdW1wKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gMTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdJbmRleCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdLmxpbmsoJmpp
dCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgZG9uZUZpbGxpbmcubGluaygmaml0KTsKKyNl
bmRpZgorCisKKyAgICBqaXQucmV0KCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBkaXJlY3QgY2FsbCB0aHVuayIp
KTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMg
PSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtF
bnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9p
bnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5k
ZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRy
eUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQog
CiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25zLCB3ZSBvbmx5IGluY2x1ZGUgY2FsbHMsIHNp
bmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBmb3IKIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24g
dGhlbiB5b3UncmUgZ29pbmcgdG8gbG9zZSBiaWcgdGltZSBhbnl3YXkuCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CiAgICAgCisgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF07
CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBlbnRyeVBvaW50
cyk7CisKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWND
YWxsKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsg
cG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3Jw
aGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNr
QXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgr
KykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1
bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzdGluZ3Vp
c2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwgY2FsbCB2cy4gYSBzbG93CiAvLyBwYXRo
IHZpcnR1YWwgY2FsbCBzbyB0aGF0IHdlIGNhbiBlbmFibGUgZmFzdCB0YWlsIGNhbGxzIGZvciBt
ZWdhbW9ycGhpYwogLy8gdmlydHVhbCBjYWxscyBieSB1c2luZyB0aGUgc2h1ZmZsZXIuCiAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODMxCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3Io
Vk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICAvLyBUaGUgY2FsbGVl
IGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0LCB0aGUgdGFnIGlzIGluIHJlZ1QxKS4KLSAg
ICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayBy
ZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQotICAgIC8vIGp1bXAgdG8gdGhlIGNhbGxlZSwgb3Igc2F2
ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UKLSAgICAvLyBt
YWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24u
CisgICAgLy8gVGhlIGNhbGxlZSBpcyBpbiBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgKGZv
ciBKU1ZBTFVFMzJfNjQsIGl0IGlzIGluIHJlZ1QxOnJlZ1QwKS4KKyAgICAvLyBUaGUgQ2FsbExp
bmtJbmZvIGlzIGluIEdQUkluZm86Om5vbkFyZ0dQUjAuCisgICAgLy8gVGhlIHJldHVybiBhZGRy
ZXNzIGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuCisgICAgLy8vIFdl
IHdpbGwgaGVuY2UganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVz
cyB0byB0aGUgY2FsbAorICAgIC8vIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24g
Y2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KIAogICAgIENDYWxsSGVscGVy
cyBqaXQodm0pOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7Ci0g
ICAgCi0gICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0aCBleGVjdXRpb24sIGFuZCByZWdUMiBjb250
YWlucyB0aGUgQ2FsbExpbmtJbmZvLiBDb3VudCB0aGUKLSAgICAvLyBzbG93IHBhdGggZXhlY3V0
aW9uIGZvciB0aGUgcHJvZmlsZXIuCisKKyAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRS
ZWdpc3RlckZvckNhbGxlZSgpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgR1BSUmVnIGNh
bGxlZVRhZ1JlZyA9IEdQUkluZm86OnJlZ1QxOworI2VuZGlmCisgICAgR1BSUmVnIHRhcmdldFJl
ZyA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CisgICAgLy8gVGhpcyBpcyB0aGUgQ2FsbExpbmtJbmZv
KiBvbiBlbnRyeSBhbmQgdXNlZCBsYXRlciBhcyBhIHRlbXAuCisgICAgR1BSUmVnIGNhbGxMaW5r
SW5mb0FuZFRlbXBSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIwOworCisgICAgaml0LmZpbGxBcmd1
bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHJlZ2lzdGVyRW50cnkgPSBqaXQubGFiZWwoKTsKKyNlbmRpZgorCisgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6VmlydHVhbENhbGwpOworCisgICAgLy8gVGhpcyBpcyBhIHNsb3cgcGF0
aCBleGVjdXRpb24uIENvdW50IHRoZSBzbG93IHBhdGggZXhlY3V0aW9uIGZvciB0aGUgcHJvZmls
ZXIuCiAgICAgaml0LmFkZDMyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBDYWxsTGlu
a0luZm86Om9mZnNldE9mU2xvd1BhdGhDb3VudCgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhjYWxsTGlua0luZm9BbmRUZW1wUmVnLCBDYWxsTGlua0luZm86Om9mZnNldE9mU2xv
d1BhdGhDb3VudCgpKSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBm
b3IgZWxpbWluYXRpbmcgdGhlc2UgY2hlY2tzLiBJbiBtYW55IGNhc2VzLAogICAgIC8vIHRoZSBE
Rkcga25vd3MgdGhhdCB0aGUgdmFsdWUgaXMgZGVmaW5pdGVseSBhIGNlbGwsIG9yIGRlZmluaXRl
bHkgYSBmdW5jdGlvbi4KQEAgLTE4MSw1NCArMzEwLDY5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsVGh1bmtGb3IoVk0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHNsb3dDYXNlLmFw
cGVuZCgKICAgICAgICAgaml0LmJyYW5jaFRlc3Q2NCgKLSAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBjYWxsZWVSZWcsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOwogI2Vsc2UKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGpp
dC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86
OnJlZ1QxLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlVGFnUmVn
LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKICNlbmRpZgotICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQ
UkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uVHlwZSkpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQu
YnJhbmNoSWZOb3RUeXBlKGNhbGxlZVJlZywgSlNGdW5jdGlvblR5cGUpKTsKICAgICAKICAgICAv
LyBOb3cgd2Uga25vdyB3ZSBoYXZlIGEgSlNGdW5jdGlvbi4KICAgICAKICAgICBqaXQubG9hZFB0
cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKKyAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICB0YXJnZXRSZWcpOwogICAgIGppdC5sb2FkUHRyKAog
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdU
NCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSkpLAotICAgICAg
ICBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDQpKTsKKyAgICAgICAgICAgIHRhcmdl
dFJlZywgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoCisgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpLAorICAgICAgICAgICAgICAgIGVudHJ5
UG9pbnRUeXBlRm9yKGNhbGxMaW5rSW5mby5hcmd1bWVudHNMb2NhdGlvbigpKSkpLAorICAgICAg
ICB0YXJnZXRSZWcpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIHRhcmdldFJlZykpOwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHRo
YXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBm
YXN0CiAgICAgLy8gY2FsbC4KICAgICAKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdp
bGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGpp
dCwgR1BSSW5mbzo6cmVnVDQpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIHRhcmdl
dFJlZyk7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAgaml0
LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
IGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKKyAgICAgICAgaml0
LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAg
aml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChjYWxsTGlua0luZm9BbmRUZW1wUmVn
KTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3codGFyZ2V0UmVnKTsKICAgICB9
Ci0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDQpOwotCisgICAgaml0Lmp1bXAodGFyZ2V0UmVn
KTsKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwotICAgIAorCisgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VmlydHVhbFNsb3dDYWxsKTsKKwogICAgIC8vIEhlcmUgd2UgZG9uJ3Qga25v
dyBhbnl0aGluZywgc28gcmV2ZXJ0IHRvIHRoZSBmdWxsIHNsb3cgcGF0aC4KKyAgICBqaXQuc3Bp
bGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOwogICAgIAogICAgIHNs
b3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZpcnR1YWxDYWxsKTsKICAgICAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKAotICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZp
cnR1YWwgJXMgc2xvdyBwYXRoIHRodW5rIiwKICAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxNb2Rl
KCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBjYWxsTGlua0luZm8uY2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6VGFpbCA/ICJ0YWlsIGNhbGwiIDogImNvbnN0cnVjdCIpKTsKKyAgICBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0Nh
bGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKworICAgIGNhbGxFbnRyeVBvaW50
cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NFbnRyeSwgY29kZVJlZi5jb2RlKCkpOworCisjaWYgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZWdpc3RlckVudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihyZWdpc3Rl
ckVudHJ5KTsKKworICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9IFJlZ2lzdGVyMUFyZ0Vu
dHJ5OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsr
KQorICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtF
bnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksIHJlZ2lzdGVyRW50cnlQdHIpOworI2VuZGlmCisK
KyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQogCiBlbnVtIFRodW5rRW50cnlUeXBlIHsg
RW50ZXJWaWFDYWxsLCBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzLCBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzIH07CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9y
R2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVua0VudHJ5
VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCitzdGF0aWMgSklURW50cnlQb2ludHNXaXRo
UmVmIG5hdGl2ZUZvckdlbmVyYXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFDYWxsKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIGxvZyBTaGFkb3dDaGlja2VuIHByb2xvZ3VlIHBh
Y2tldHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4OQpAQCAtMjM3LDggKzM4MSwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZUZvckdlCiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBzdGFja0FyZ3NFbnRyeTsKKwogICAgIHN3aXRjaCAoZW50cnlUeXBl
KSB7CiAgICAgY2FzZSBFbnRlclZpYUNhbGw6CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyAgICAgICAgc3RhY2tBcmdzRW50cnkg
PSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzOgpAQCAtMzc5
LDI1ICs1MjksMzMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQog
ICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0g
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50
cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNh
dmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CisgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUg
JXMlcyB0cmFtcG9saW5lIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3Mg
PyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5n
KGtpbmQpLmRhdGEoKSkpOworICAgIGlmIChlbnRyeVR5cGUgPT0gRW50ZXJWaWFDYWxsKSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIGNvZGVS
ZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0VudHJ5UHRyKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2Rl
UmVmLmNvZGUoKSk7CisKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3Io
Vk0qIHZtKQogewogICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxs
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCwg
RW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRv
cih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MpLmNvZGVSZWYoKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
c0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwg
Q29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpOworICAgIHJldHVybiBu
YXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2
ZWRUYWdzKS5jb2RlUmVmKCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2
bSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CkBAIC01MzYsNiArNjk0LDQzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJ1bnJlYWNoYWJsZSB0aHVuayIpKTsKIH0KIAorI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKK3N0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2Fk
UmVnQ2FsbChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKK3sKKyAgICAvLyBsb2Fk
IHN0cmluZworICAgIEdQUlJlZyB0aGlzUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoMCk7CisgICAgR1BSUmVnIGluZGV4UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMik7CisgICAgR1BSUmVnIGxlbmd0aFJlZyA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpOworICAgIEdQUlJlZyB0ZW1wUmVnID0gU3BlY2lhbGl6
ZWRUaHVua0pJVDo6bm9uQXJnR1BSMDsKKworICAgIGppdC5jaGVja0pTU3RyaW5nQXJndW1lbnQo
KnZtLCB0aGlzUmVnKTsKKworICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5k
IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1Qw
CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzUmVnLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6anNTdHJp
bmdWYWx1ZU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcFJlZykpOworCisgICAgLy8gbG9h
ZCBpbmRleAorICAgIGppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KDEpLCBpbmRleFJlZyk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJ
bnQzMihpbmRleFJlZykpOworCisgICAgLy8gRG8gYW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11
bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5kaWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBsZW5ndGhSZWcpKTsKKworICAgIC8v
IExvYWQgdGhlIGNoYXJhY3RlcgorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlz
MTZCaXQ7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CisgICAg
Ly8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIGxlbmd0aFJlZyk7
CisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcFJlZywgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgdGVtcFJlZyk7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgbGVuZ3RoUmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzT25lLCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQuYXBwZW5kKGppdC5q
dW1wKCkpOworICAgIGlzMTZCaXQubGluaygmaml0KTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgodGVtcFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c1R3bywgMCksIHRlbXBSZWcpOworICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7Cit9CisjZWxzZQog
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSog
dm0pCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKQEAgLTU2NSw2ICs3NjAsNyBAQCBzdGF0aWMgdm9p
ZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRoCiAgICAgaml0LmxvYWQxNihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwogICAgIGNvbnQ4Qml0LmxpbmsoJmppdCk7CiB9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZt
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzcmMsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKQEAgLTU3NCwz
NCArNzcwLDY5IEBAIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhTcGVjaWFsaXplZFRodW4KICAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgZHN0KSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5SZWdpc3RlcnMpOworICAgIHN0
cmluZ0NoYXJMb2FkUmVnQ2FsbChqaXQsIHZtKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOwor
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwg
ImNoYXJDb2RlQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNoYXJDb2RlQXQiKTsKKyNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5LCBTcGVjaWFs
aXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5nQ2hhckxvYWRSZWdDYWxsKGpp
dCwgdm0pOworICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpu
b25BcmdHUFIwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhl
cmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlI
ZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1wKCkp
OworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJjaGFyQXQiKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckF0Iik7CisjZW5kaWYKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGpp
dCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OkluUmVnaXN0ZXJzKTsKKyAgICAvLyBsb2FkIGNoYXIgY29kZQorICAgIGppdC5tb3ZlKGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDEpLCBTcGVjaWFsaXplZFRodW5rSklU
Ojpub25BcmdHUFIwKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdElu
dDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjApKTsKKworICAgIGNoYXJUb1N0cmlu
ZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpub25BcmdHUFIwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoMykpOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1
bWVudFJlZ2lzdGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEFsbCk7CisgICAg
aml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZyb21DaGFyQ29kZSIpOworI2Vs
c2UKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpT
cGlsbEFsbCk7CiAgICAgLy8gbG9hZCBjaGFyIGNvZGUKICAgICBqaXQubG9hZEludDMyQXJndW1l
bnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGNoYXJUb1N0cmluZyhqaXQs
IHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZW5kaWYK
IH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
SklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub25JbnRBcmdKdW1wOwpAQCAtNjIyLDExICs4NTMsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNsejMyVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjbHozMiIpOwogfQogCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJl
ZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogICAgIGppdC5sb2FkRG91Ymxl
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtNzgyLDEyICsxMDEzLDEy
IEBAIGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKTsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7CiAgICAgCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxv
b3JUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaWYgKCFVbmFyeURv
dWJsZU9wV3JhcHBlcihmbG9vcikgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0t
PmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkSW50MzJBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0
LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1w
LmxpbmsoJmppdCk7CkBAIC04MjUsMTEgKzEwNTYsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmbG9vciIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
ZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtLCAxKTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZt
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50
MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg0OCwx
MSArMTA3OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yCiAg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImNlaWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIVVu
YXJ5RG91YmxlT3BXcmFwcGVyKHRydW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgp
KQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVy
biB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC04NzEsMTEgKzExMDIsMTEgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJ0cnVuYyIpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIo
anNSb3VuZCkgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5q
aXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1
bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDApOwpAQCAtOTA1LDM3ICsxMTM2LDM3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBy
b3VuZFRodW5rR2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicm91bmQiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBleHBU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihl
eHApKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJl
dHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRE
b3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdS
ZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhwKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZXhwIik7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dp
dGhSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVP
cFdyYXBwZXIobG9nKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQ
cmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1
cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgcmV0dXJuIGppdC5m
aW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImxvZyIpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50
cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1Bv
aW50QWJzKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAg
ICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgdW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXggPSBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0KDApOwpAQCAtOTg4LDcgKzEyMTksNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImFicyIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAyKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsK
QEAgLTEwMTksMTEgKzEyNTAsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dl
bmVyYXRvcgogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVU
YWlsQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21U
aHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsK
ICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRF
bnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqaXQuZW1pdFJh
bmRvbVRodW5rKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QzLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKQEAgLTEwMzEsMTYgKzEyNjIs
MjIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdAogCiAgICAgcmV0
dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJh
bmRvbSIpOwogI2Vsc2UKLSAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAg
cmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGxHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIENDYWxsSGVscGVycyBqaXQodm0pOworICAg
IEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
ZmFpbHVyZXM7CisKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQ
cm9sb2d1ZSgpOwogICAgIAotICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OkxhYmVsIHN0YWNrQXJnc0VudHJ5KCZqaXQpOwogICAgIAorICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZy
YW1lLgogICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsK
ICAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpAQCAtMTExMCwyMCAr
MTM0NywyMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNl
OjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAorICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKENv
ZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpLAogICAgICAgICBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAgIGZhaWx1cmVzLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7
CiAgICAgCiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7Ci0gICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIGxpbmtCdWZmZXIubGluayhub0Nv
ZGUsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRo
b3V0U2F2ZWRUYWdzKHZtKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBs
aW5rQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3
aXRoIG5vIGFyZ3VtZW50cyIpKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlcywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZl
ZFRhZ3Modm0pKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlv
biBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
c3RhY2tFbnRyeVB0ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkpOwor
CisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBjb2RlUmVmLmNvZGUo
KSwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBzdGFja0VudHJ5UHRyLCBzdGFja0Vu
dHJ5UHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zNiwzNCArMzcsMzUgQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcihWTSopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0Nh
bGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rRm9yKFZNKiwgQ2FsbExpbmtJbmZvJik7CitKSVRKU0NhbGxUaHVua0VudHJ5
UG9pbnRzV2l0aFJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5y
ZWFjaGFibGVHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2Rl
QXRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRv
cihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
KFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVu
a0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBj
aGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFy
QXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNsejMyVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmcm9tQ2hhckNvZGVUaHVua0dl
bmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGFic1RodW5rR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bG9nVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByb3VuZFRodW5r
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKik7CitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qIHZtKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3Io
Vk0qKTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkocmV2aXNpb24gMjA5NTkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDEyICs0NiwyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5
cG9pbnQoVk0mIHZtCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSgKKyAgICAgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lz
dGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAg
ICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdp
c3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciku
Y29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVn
aXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCkBAIC01OSwxMiArNzMsMjYgQEAgc3RhdGljIHZvaWQgc2V0RnVu
Y3Rpb25FbnRyeXBvaW50KFZNJiB2bQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAg
ICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVM
TEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjaykpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKQEAgLTcyLDE0ICsxMDAsMjggQEAgc3RhdGljIHZvaWQgc2V0RXZh
bEVudHJ5cG9pbnQoVk0mIHZtLCBDbwogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
aykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAg
ICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
dm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAg
ICAgICAgICAgICB2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkp
LAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcg
RGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAor
ICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCkp
LAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
QEAgLTg3LDE0ICsxMjksMjggQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0m
IHZtLAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtMTAyLDE0ICsxNTgsMjggQEAg
c3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoVgogI2lmIEVOQUJMRShKSVQp
CiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIo
bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZih2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAor
ICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDkgKzM3Myw5IEBA
IHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgIk9TUiBlbnRyeSIsICgiaW4gcHJvbG9ndWUiKSk7CiAgICAg
CiAgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCi0gICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFT
U0VSVChraW5kID09IEFyaXR5Q2hlY2spOwotICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRk
cmVzcygpLCAwKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5h
ZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgMCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlw
ZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IGNoYXIqLCBFbnRyeUtpbmQpCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRh
YmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKKyAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgU3RhY2tBcmdzTXVzdENoZWNrQXJp
dHkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
CiAKQEAgLTEzMDYsMTIgKzEzMDYsMTIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRV
cENhbGwoRXhlYwogICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBlcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tTbG90OwogICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CisgICAgICAgIEVudHJ5UG9pbnRU
eXBlIGVudHJ5VHlwZTsKICAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICAg
ICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlw
ZSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCEhY29kZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDEwICs1MSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVu
dHJ5CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCitlbnVtIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgeyBDcmVhdGVS
ZWdpc3RlckVudHJ5LCBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSB9OworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZNKiB2bSwgdm9pZCAoKnRh
cmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kLCBTaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5
IHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgPSBEb250Q3JlYXRlUmVnaXN0ZXJFbnRyeSkKIHsK
ICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9PSBDcmVhdGVSZWdpc3RlckVudHJ5
KQorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7
CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0
byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKQEAgLTYzLDI0ICs3Miw0NCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdl
bmVyYXRlVGh1CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTExJbnQg
JXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihW
TSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgImZ1
bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwiLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dl
bmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZt
LCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNhbGwiKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBjb25zdHJ1Y3QiLCBDcmVhdGVSZWdpc3Rl
ckVudHJ5KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjb25z
dHJ1Y3QiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIGNhbGwiKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHJlZ2lz
dGVyIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0Iik7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9u
IGZvciBzdGFjayBhcmdzIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENv
ZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
ImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIiwg
Q3JlYXRlUmVnaXN0ZXJFbnRyeSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rp
b24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAyMDk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklW
QVRFIHZtRW50cnkKIAogbmFtZXNwYWNlIExMSW50IHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0q
KTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01v
ZGUuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJpdHlDaGVja01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGVudW0gQXJpdHlDaGVja01vZGUgeworICAgIFJlZ2lzdGVyRW50cnksCiAg
ICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLAogICAgIE11c3RDaGVja0FyaXR5CiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAko
cmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2ppdENvZGVGb3JD
YWxsID0gbnVsbHB0cjsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBudWxscHRyOwotICAg
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKKyAg
ICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAjZW5kaWYKICAgICBt
X251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAg
IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxF
RDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJh
c2UuaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbERh
dGEuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgi
CiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNs
dWRlICJKSVRFbnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE0NSw0NyArMTQ1
LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1
Y3QoKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnRG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBBcml0eUNoZWNrTW9kZSBhcml0eSkKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKICAgICB7CiAgICAgICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5
IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAgICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50
IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJl
Y3RseSBpbgogICAgICAgICAvLyBtYWNoaW5lIGNvZGUuCi0gICAgICAgIGlmIChhcml0eSA9PSBN
dXN0Q2hlY2tBcml0eSkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAg
ICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBy
ZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JDYWxsLmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHJlc3VsdCA9IG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5lbnRyeUZvcihlbnRyeVR5cGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAgICAgICAgICAg
IGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGFyaXR5KTsKLSAgICAg
ICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgICAgICAvLyBDYWNoZSB0
aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZpcnR1YWwgY2FsbCBv
cHRpbWl6YXRpb25zLgotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1
Y3RXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NG
b3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMg
bmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlvbnMuCisgICAg
ICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAg
ICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAg
ICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVENvZGVXaXRoQXJp
dHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIEVudHJ5UG9pbnRUeXBlIGVudHJ5UG9pbnRUeXBlKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFz
ZSwgbV9qaXRFbnRyaWVzRm9yQ2FsbCkgKyBKSVRFbnRyeVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZv
cihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNvbnN0cnVjdCkgKyBKSVRFbnRy
eVBvaW50czo6b2Zmc2V0T2ZFbnRyeUZvcihlbnRyeVBvaW50VHlwZSk7CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yMzMsOCArMjI4LDggQEAgcHJvdGVjdGVkOgogICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsK
ICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRzIG1f
aml0RW50cmllc0ZvckNhbGw7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRyaWVzRm9yQ29u
c3RydWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTU5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZFRoaXNObwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGFyZ2V0
RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZv
ckNhbGwoKSkgewogICAgICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMg
YXJpdHkgZW50cnlwb2ludC4KLSAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2Rl
Rm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKENvZGVGb3JDYWxsLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodGFy
Z2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENy
ZWF0aW9uKFZNCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIG1faml0Q29kZUZv
ckNhbGwgPSBjYWxsVGh1bms7CiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0
VGh1bms7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9y
Q2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwotICAgIG1faml0Q29kZUZvckNv
bnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9y
Q2FsbChNdXN0Q2hlY2tBcml0eSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5zZXRFbnRyeUZv
cihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNh
bGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1
Y3Quc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIG1faml0Q29kZUZvckNvbnN0
cnVjdC0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpKTsKICAgICBtX25h
bWUgPSBuYW1lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUo
Vk0mIHYKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAg
ICBtX2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2st
PmppdENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX2ppdEVudHJpZXNGb3JD
YWxsLmNsZWFyRW50cmllcygpOwogICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gZ2Vu
ZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA6IE5VTV9Q
QVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlRm9y
Q29uc3RydWN0OgogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJs
b2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmNsZWFyRW50cmllcygpOwogICAg
ICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2Vu
ZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJ
TEVEOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODIsNiArMjgyLDcgQEAgQ29kZUJsb2Nr
KiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbQogCiBzdGF0aWMgdm9pZCBzZXR1cExMSW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CisgICAgY29kZUJsb2NrLT5zZXRQcmVm
ZXJzU3RhY2tBcmd1bWVudHMoKTsKICAgICBMTEludDo6c2V0RW50cnlwb2ludCh2bSwgY29kZUJs
b2NrKTsKIH0KIApAQCAtMjg5LDYgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwSklUKFZNJiB2
bSwgQ29kZUJsb2NrKiAKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIENvbXBpbGF0aW9uUmVzdWx0
IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0
U3VjY2VlZCk7CisgICAgY29kZUJsb2NrLT5zZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDIwOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCwxMCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNp
emUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9w
KHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjbGVhckNv
dW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2
ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7CiAg
ICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdU
YWJsZSk7CkBAIC00NzYsNyArNDgwLDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06OmVuc3VyZVNh
bXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogI2lmIEVO
QUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5z
aWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRvciB0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIHN3aXRjaCAo
aW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAtOTIzLDQgKzky
NywzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291bnRlcnMoKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7IGkrKykKKyAg
ICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3VudGVycygpCit7
CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSArIGNv
dW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRhTG9n
KCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRv
dGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQmFzZWxpbmUg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEw
enUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRhdGFMb2dGKCIl
MTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxsKSk7CisgICAg
ZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERpcmVjdENhbGwp
KTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJGb3Io
UG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBz
bG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAgIGRhdGFMb2dG
KCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NOb0Fy
aXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50
ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBh
cmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJlZ0Fy
Z3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNrXG4i
LCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFyaXR5
IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWlyZWQpKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjA5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwxNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAg
ICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHViKEpJVEVudHJ5
R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0
RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENhbGxUaHVua0Vu
dHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+
aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0czsKICAgICAKQEAgLTU3Miw2ICs1ODIsNTAgQEAgcHVibGljOgogICAgIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJlbnRKU0xvY2sg
bV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAgZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAgICAg
ICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERGR0NhbGxlciwKKyAgICAgICAgRlRMQ2FsbGVy
LAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAgICAgVGFpbENhbGwsCisgICAgICAgIENhbGxF
dmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAgICAgICBQb2x5bW9ycGhpY0NhbGwsCisgICAg
ICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0dWFsU2xvd0NhbGwsCisgICAgICAgIFJlZ0Fy
Z3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NOb0FyaXR5LAorICAgICAgICBSZWdBcmdzRXh0
cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAgICAgICAgU3RhY2tBcmdzQXJpdHksCisgICAg
ICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAgICAgTnVtYmVyVk1Db3VudGVyCisgICAgfTsK
KworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBzaXplX3QgbV9jb3VudGVyc1tOdW1iZXJW
TUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNvdW50ZXJzKCk7CisKKyAgICBzaXplX3QqIGFk
ZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fY291bnRlcnNbY291bnRlclR5cGVdOworICAg
IH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisg
ICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jb3VudGVyc1tjb3Vu
dGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291bnRl
cnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+
IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBBTFdBWVNfSU5MSU5FIEhhc093blByb3BlcnR5
Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5Q2Fj
aGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0
eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcu
Y3BwCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBXYXNtVG9KU1N0
dWIgaW1wb3J0U3R1YkdlbmVyYXRvcihWTSogdm0sCiAgICAgLy8gRklYTUUgVGFpbCBjYWxsIGlm
IHRoZSB3YXNtIHJldHVybiB0eXBlIGlzIHZvaWQgYW5kIG5vIHJlZ2lzdGVycyB3ZXJlIHNwaWxs
ZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0ODgKIAogICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvcy5hZGQoKTsKLSAgICBj
YWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4oKSwg
aW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlu
a0luZm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbigpLCBpbXBvcnRKU0NlbGxHUFJSZWcp
OwogICAgIEpJVDo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUOjpUcnVzdGVk
SW1tUHRyIGluaXRpYWxSaWdodFZhbHVlKDApOwogICAgIEpJVDo6SnVtcCBzbG93UGF0aCA9IGpp
dC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBpbXBvcnRKU0Nl
bGxHUFJSZWcsIHRhcmdldFRvQ2hlY2ssIGluaXRpYWxSaWdodFZhbHVlKTsKQEAgLTIyNSw3ICsy
MjUsNyBAQCBXYXNtVG9KU1N0dWIgaW1wb3J0U3R1YkdlbmVyYXRvcihWTSogdm0sCiAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtLT5n
ZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3Io
U3RhY2tBcmdzKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwg
Y2FsbFJldHVybkxvY2F0aW9uKHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93Q2Fs
bCkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbihwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mKHRhcmdldFRvQ2hlY2spKTsKICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBob3RQYXRo
T3RoZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdENhbGwpOwpJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiAyMDk1OTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1LDE3IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQg
MQogI2VuZGlmCiAKKyNkZWZpbmUgRU5BQkxFX0NBTExFUl9TUElMTFNfQ0FMTEVFIDAKKyNkZWZp
bmUgRU5BQkxFX0NBTExFUl9TUElMTFNfQVJHQ09VTlQgMAorI2RlZmluZSBFTkFCTEVfU1RBQ0tf
RU5UUllfRklMTFNfQ0FMTEVFX1JFRyAwCisjZGVmaW5lIEVOQUJMRV9TVEFDS19FTlRSWV9GSUxM
U19BUkdDT1VOVF9SRUcgMAorI2RlZmluZSBFTkFCTEVfVk1fQ09VTlRFUlMgMAorI2RlZmluZSBF
TkFCTEVfQkFTRUxJTkVfUkVHSVNURVJfQVJHVU1FTlRfQ0FMTFMgMAorCisjaWYgIWRlZmluZWQo
VVNFX1JFR0lTVEVSX0FSR1VNRU5UUykgJiYgRU5BQkxFKEpJVCkgJiYgVVNFKEpTVkFMVUU2NCkg
JiYgKE9TKERBUldJTikgfHwgT1MoVU5JWCkpCisjZGVmaW5lIFVTRV9SRUdJU1RFUl9BUkdVTUVO
VFMgMQorI2VuZGlmCisKIC8qIFRoZSBGVEwgKmRvZXMgbm90KiB3b3JrIG9uIDMyLWJpdCBwbGF0
Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21lb25lIGFza2VkIHVzIHRvIGVuYWJsZSBpdC4g
Ki8KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI3VuZGVmIEVOQUJMRV9GVExfSklUCg==
</data>
<flag name="commit-queue"
          id="319059"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>296639</attachid>
            <date>2016-12-08 22:03:22 -0800</date>
            <delta_ts>2016-12-09 14:56:22 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews101 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>989404</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
2b5gtVLyqCb8vRoH/QBHt3Onc08loiLMijQPoiQ+MO3wCv3QynqPbke2Q3ID63XTgjGoGBLN/Ehk
ecq8y0o3C+hxezyjdEsiS/W6vYPRChyqMfP09wLH+N7eSGIJ8oS8tIQbVBo+5EfpRAQiCflT7awb
Ouz5zsCAxJ+yN9Xz179AMqNbZEJM41H1j/hH/C7iAVBLAwQUAAIACAAFqYhJtdaEpL8AAADyBgAA
PAAcAGNvbXBvc2l0aW5nL3Nob3ctY29tcG9zaXRlZC1pZnJhbWUtb24tYmFjay1idXR0b24tc3Rk
ZXJyLnR4dFVUCQADOTxKWDk8Slh1eAsAAQT1AQAABBQAAADtzzELwjAUBODdX5FRhzZtWrUVHLQo
OIiCo0h5pg+Nxqa8RiH/XsVBB1cHIdvddPdtRTyKslGUhyLJd0xZvEDrallu0K7JNEjWsVYdatAa
K4ZE4yAWw6zPuue5OkyhxdX+hNLOiAyVi/oGWlVgseqxrvpsYBnfmCtJLEAekReGcImVgncK4v5A
hCKN+GPaGusabPlag0Pij7FXKifPf6FkWtXIhMiTztYjPOIniDT9RBSmcX+hiLLMK7zCK74o7lBL
AwQKAAAAAAD8qIhJAAAAAAAAAAAAAAAAEgAcAGNvbXBvc2l0aW5nL3ZpZGVvL1VUCQADKzxKWKs+
Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA+6iISVeOzKewAAAA3gMAADAAHABjb21wb3NpdGlu
Zy92aWRlby92aWRlby1ib3JkZXItcmFkaXVzLXN0ZGVyci50eHRVVAkAAyo8SlgqPEpYdXgLAAEE
9QEAAAQUAAAA7c+9CsIwFAXg3afIqINNG60NgoMWBQdRcBQp1/Si0ZiUmyjk7f0b7EN0O2c65zuI
bJoW03yUTGR2ZDrgHXy0qipdE3fkGqQQmddnC8ZgzZBoNsxEIXPWv630eQEet6crqrAkclSt7ROM
riFgPWB93W4QGN+7ByksQV2Ql45wg7WGfxpm+UQkYpzy93RwITbo+c5AROLvsV+q5p+DiWJGW2Qi
lbJ3aClEp+gUneKreAFQSwMEFAACAAgA/KiISWQZpQO/AAAA8gYAADIAHABjb21wb3NpdGluZy92
aWRlby92aWRlby1jbGlwLWNoYW5nZS1zcmMtc3RkZXJyLnR4dFVUCQADKzxKWCs8Slh1eAsAAQT1
AQAABBQAAADtzzELwjAUBODdX5FRB5s22hoFBy0KDqLgKFKe6UOjsSmvUci/V3HQwdVByHY33X1b
kYziwSjtR1LIHdMOL9D4ShUbdGuyNZLzrNGHCozBkiHRuJuIgUxZ+zzXhyk0uNqfULkZkaViUd3A
6BIclh3W1p8NHOMbeyWFOagj8twSLrHU8E7dJM1EJPoxf0w763yNDV8b8Ej8MfZKxeT5L1LM6AqZ
EMNeaxsQAfETRJZ9InJb+79QxFIGRVAExRfFHVBLAwQKAAAAAAAAqYhJAAAAAAAAAAAAAAAABwAc
AGNyeXB0by9VVAkAAzA8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAACpiEkAAAAAAAAA
AAAAAAAOABwAY3J5cHRvL3N1YnRsZS9VVAkAAzA8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AgAAAACpiEkl4NMILAAAACwAAAA+ABwAY3J5cHRvL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LW1h
bGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAkAAzA8SlgwPEpYdXgLAAEE9QEAAAQUAAAA
Q291bGQgbm90IGdlbmVyYXRlIGEga2V5IHBhaXIsIHN0YXR1cyAtNDMwNApQSwMEFAACAAgAAKmI
STA7uLFLAAAAaAAAADwAHABjcnlwdG8vc3VidGxlL3JzYS1pbXBvcnQta2V5LW1hbGZvcm1lZC1w
YXJhbWV0ZXJzLXN0ZGVyci50eHRVVAkAAzA8SlgwPEpYdXgLAAEE9QEAAAQUAAAAbcuxDYAwDETR
niluHxpWsGRLsYA4ci5EbA8NHfV/f0u/hIbd7o7pLDEIUXV6VDmgQoGkoQbRR2uRNF3Wj+OMN7JI
BWegpZ/Wf4YHUEsDBAoAAAAAAACpiEkAAAAAAAAAAAAAAAAPABwAY3J5cHRvL3dvcmtlcnMvVVQJ
AAMwPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAAqYhJAAAAAAAAAAAAAAAAFgAcAGNy
eXB0by93b3JrZXJzL3N1YnRsZS9VVAkAAzA8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAA
AACpiEkl4NMILAAAACwAAAAxABwAY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1nZW5lcmF0ZS1r
ZXktc3RkZXJyLnR4dFVUCQADMDxKWDA8Slh1eAsAAQT1AQAABBQAAABDb3VsZCBub3QgZ2VuZXJh
dGUgYSBrZXkgcGFpciwgc3RhdHVzIC00MzA0ClBLAwQKAAAAAAD8qIhJAAAAAAAAAAAAAAAABQAc
AGNzczMvVVQJAAMsPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAD8qIhJAAAAAAAAAAAA
AAAADQAcAGNzczMvZmxleGJveC9VVAkAAyw8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAA
APyoiEkAAAAAAAAAAAAAAAATABwAY3NzMy9mbGV4Ym94L2Nzc3dnL1VUCQADLDxKWKs+Slh1eAsA
AQT1AQAABBQAAABQSwMECgAAAAAA/KiISQAAAAAAAAAAAAAAAB4AHABjc3MzL2ZsZXhib3gvY3Nz
d2cvZmxleC1saW5lcy9VVAkAAyw8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPyoiEmt
pET7rAAAABQDAABMABwAY3NzMy9mbGV4Ym94L2Nzc3dnL2ZsZXgtbGluZXMvbXVsdGktbGluZS13
cmFwLXJldmVyc2Utcm93LXJldmVyc2Utc3RkZXJyLnR4dFVUCQADLDxKWCw8Slh1eAsAAQT1AQAA
BBQAAADtj7EOgjAURXe/oiMOUKgCSuKgRBMHIwkjMeRZXrBaKXlUE/5ejIN+gCPbudO5pxBB4sdJ
GHlhEJ2YsniHrm9kmaPNyLRItmedqhvQGiuGRCs3EPEiZM5tp+oNdHg8X1HaLZGhct88QasKLFZT
5qjfBZbx3DxIYgrygjw1hAesFHzJDcJIeGLu80Ftje1b7HimoUfig+xD5fr9z5NMqwaZEMvZpBgj
xoj/RbwAUEsDBAoAAAAAAAKpiEkAAAAAAAAAAAAAAAANABwAZGlzcGxheWxpc3RzL1VUCQADNDxK
WKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAAqmISaNX/ehQAAAAjgAAADIAHABkaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUCQADNDxKWDQ8Slh1
eAsAAQT1AQAABBQAAABzL0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgs
yUzKSVUozyzJUChKTc4vSsnMSwfKgLUV63G5oxtUjGYQMYYAAFBLAwQUAAIACAACqYhJ8paV1UcA
AABJAAAAKQAcAGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1zdGRlcnIudHh0VVQJAAM0
PEpYNDxKWHV4CwABBPUBAAAEFAAAAHMvSizIyEwuds7PK0mtKLGySk8tcQ7x1dBUyCxWyMsvUahM
LVFIzs8tSCzJTMpJVSjPLMlQKEpNzi9KycxLB8qAtRXrcQEAUEsDBBQAAgAIAFCqiEkk6GlRpgsA
AJdEAAANABwAZXJyb3JfbG9nLnR4dFVUCQADpz5KWCI8Slh1eAsAAQT1AQAABBQAAADtW3lv20YW
/38/xcDYNjYQ3sMTCBZZWW28dR2vZTcLBIFBkSNpEpLDcoY+utjvvm9IyaYUji3JduO2hgFdJt/x
e2/eNZyPp7Ma7ZMEmQGyrcj0I+zpjoN9G76blvcJfeQ8iy7jqoCPJU2RH/jmJ/T2nWmFZhghy/Z1
E/6sCGMnMhEn1QWpUEIqQSc0iQVBKSMcHb0/RbRIsjolKC7QwT66nNFkhvJYJDP4v5iRxb1FnJO/
fewTDFuB4/lqwaxWsMB3InRQUBGhEeGcsgINYuCCKEcFEyhhxYRO64qk6OOMFvKy0eH8yubCT0r2
rns/+2+BS+j61kKwvMzPy4pMWPUlAnVpQlZFhOsAobel1NWwdaxbHto9K+jVHjp+d2y4uqs7Hnpf
kgKAMUw91IPfpl3YNA1VhNc5LaaAaJXHGWIlqWIBCHKljJ7pLWRMWEVUwpkhjtCA5XlcpCijBYnQ
K6PmlcHHtDBmQpQgwAQZv7Cszgk39mMRG8MPI+MDGf9ExfztnzXNUuOEZCTmxMjia1YLTRAuNCl5
JnhLSZdaIW2A9lkC1ApxwsBDdpTEDxtCp0CnJWBIknwHaQk6vS4JHzQgbUJACmDkNCe6kAQaUmCF
g6ODfVptSqi5e1BzwfJDdpcY64IUJwksjPOMTXVxJXbACfIc1hNwGVYVqx6HCZGkbnlIAGj6A80I
MkReLqi19pK+Ahe8zWjMkfGZ31BidQWirgnYzfU7HWI5SWm8ManmriUyLCVVobXUwCiiYtm6xHTd
GDXc5T8HsEiMn1laZ3BXL9Uu2xu5G5ecQWQCw+kJ3xiS1fvvZ/L5YTw+38+iIiWrxAMZ3RDZkQv+
DMIq2hlL5xwz0fx0SLkgRSd2BxCNOv/4GEXWp9Ufu1cHfVcHiqshMXx9dfNjIhPS4DZVtEths4hy
ScZfqNDmi4bkr74Ky2FkYt30/NCyF2E5albiPCIHphPKUJ1RCIsdwV3b8d1PiCcVLQWE5s1CpQEe
1TFPSiAgkHRAqyQjejkrXzUpesJqCP6sQnURj0F5wRAXsXgNaWdCKlJFSFKMDGPZVg1xNv5MEqFN
QPs5dY3mU41fTPWZyLN+HHzHcoObFJpM6TIUlgUa7/rAItg7jsEwkPHm0QvFFUEXcQaXjWuByorJ
iCkzI5QbkNpZXmZEQBLrQxLbbls02LYbtSEV6MapvL0iv9aAGIJ7qLhGKcDbJ7unu64TmDc2LMgU
8mqTilfN6SjM6Xlt5vUCP0JHnftRSnnCoPiAnD8BJ9zle21l0pEvQpt6QA5EOy4QJzR1DF6XcnVq
sV4C7d0jVhBINnUGqBK00Imke/q9PtCQb4gq7e3rHlQZYfh7+v2Sz4NDaCWA+HCPL+ILOm2sZUiC
WixERcERiREXyYxVkCvYF0qUUAS6i0Pw/X4orNDqhwL7cDGUKegDxFbgGyEQHIq1L7vGRVwZE5ZB
uuKGXxjcsxPbmrm4BEZZUhbuBbh7noDw5rQwTg3tVgVtWQVtoULFONdYRae00CYVy5uwxhud9AZG
qBv2wHUBsxqKZ+mqEsqUVhAJWHUN63BjL+0AqzQdglJIVqgIr9iJLxsKovoahrpDy37LQUHtOv42
TvwtLPeMzbXNslrVTGEiaMzM4K8QZ9pfi1QDD8rYJdTRrT21yxkpNE4KmdRaYVRwhboXOh5UQM/Y
ozl04X9Kh15VrN9APjYt3/9z+zMUYPdlzVAPLAi9bi8QfhhgVdZ0vjEQmyWmBokN0xJA43oY238B
H1knBYR6aNqW+RdYMmsEEMvSceCagaNstGzT6wfEdYN5p2RBpwTNO2ITUIAWVDZj9DfoUKAJqwn6
+/Dol//uvDs9PT4/O/7x5O3+8PzgaDQcnJ0Mz0+G/z4bjk5HO/+TERn6ZNldF41KaFffk5hw0Aka
kFhsHLA5SeoKOjXZfwNVMZp/P2YZTa6NupxWcUo0WjQXEm3eP3XNRSASt8tLm0EXSCq9zNoAH+jR
cxHoXj/Zmm+Xkcbr8UKOO9zJ9aA39/tG30sRuTP5tqLFQB2cNpmB3/wcX520InyAG6FUgAuEAC94
LV2E01ReG9Omp5fzeOX1fSK6egirOXBU/ZXC3bHnPEVNQ/N4SrSMxSnAr5XwZQbqaTOo2zIw7h+0
oFlDqz7TeLpjhbaqgfq2pgGK8tOfyjA9OvWZxdctzwkd9TDOtlWWCb2Nc8T7k4MfD46eNiG0SfFd
E9c6EJdAWCwyJmj5CJF+TU7rh/AlgvMicB6gIcpqUyKUdgz00AtN7CvtaDqBwo423tiO/zk/hcx+
/m4ICf/EehJ7XuWZ/DZPV3LCrsVlyQ3TxM0u1K0N8RY2XIf6vXa7g4jSTqGOfew66prM9DpDwCiS
FvLkLHkoq8jJokoFncpaoLHMvgS1PsIj1G4gLnastHHMaSLdRpvENNMKCHycygn5Vuq16Xdplrwm
t8+8Bwrb093A9T2sDj0OXoUidN2NnXU0PD0fvH//08HwSRy1bV67uECBMmh/vHVSqJ6iRyf90OKw
3aNbbjoLNm/HeTtLgmh2AWhp44pdyqJMI00fk8o81WdVcPAgMLGnaMHwqkkdUyaYbZuvGwVvIZpW
BMSmE63BBsDR6E3feF9X1q+QC02UZ6kUchUtVPgoPSU2cZPXtxbd9d0/puieZdqBp5j5hLYimcmQ
sbUzXUw74oPDfyHzSnFLFcLAcm0F+jb2e1VwTMt8mvUAK3uxJLbWx/FcrNDHxwp9HOc5r28HpHSx
G6rTkBU4X6UhHD6DjLw2bUUxIlUPPOw+s1g9qbNMq6tsK2s6euAE2FItOt9ROGkQbK/Yillu1Vvs
yjx8GrjCYilj3+z9AOOSFZycnRwqTQ74QPlp2y/4KPFxTT/EL/j04+PqvgWtv6vAJ+ifsDuW9xT4
zKvaR4dHTk7gPiiNyQXQ12R7cRcigW1Z6vxhuu5q/sCW2WljPtCUoGQWV3EiSCVblGaE8KApyBXn
b+uUClatDpiBMqlEPNVSkrCUaJY3pkKDHkp+uxmB+95DJiPbc1+/penwaB1Lk2QvqZgtE1U+mOR4
Oobq2FPtgJuWYq3bD6gxe8d/XG7hS6eT/VVL+VE3kJboy4ltC1Pz8y27PogC3W3mg2rnxopK3PXX
HCs9/d6QfFb8fdk8Lt8FvXWaBomV/R/Le4QNoA24ru/0efOAsizl5UPsmnyIXeXe2NQdbHWOAayE
aitQuHf4GDWeauCwwAGqUyKH6g/38w2CDkD9Dynnm96b4KNWVkxAKmyeSImrZt4xH+Z9Lw9QTK73
Qe431vfNI6hzA77B3//65jtn0GL2nTOMM+C2O2r8V5eb+AOI7QMIRbvmlRu8hhenednbg7uMm9vg
SwlvB5PvbBPAhVdOCLyKGeXwBlbgsHThU1yk8FowePlXfBGPWgLwe8N3r7mFFO2bfAWN4e347Wg0
3NclS8lm1WMsM3JC3XEcbKu2zz2z12OwHVirezTtDBvl8fXiEJCIYaEfnR2i8TUItM3OibIMWOmD
4uaJqIzCPUubKd7XrpSxJM5mjIveMuCWw7xSIleQobXFM7nQt1Rx3r/+5mji0MPWC5oPRtOKsK2H
vgWgqafFQf9GlRwxdzLRoHnMWcIInTIC0arr6PHAK0F7Tcacbfp5+dgeVC0pmQDAafN4XwG98F2Q
BDjwnBdIWkicyLR0HNr27QPWa0PimW7YgWTXcvaOSZXT9kRjSgpK0giRK+AGdczjtTAFG7SZ8pAU
UzGTGL1Ccn4j2T0ll00tsfy13SZoSGpZQ1NjxXHFppU8Y3SndRx/W+usNXB7Dqr6cm1aoQ/ENzon
GkYoievpTKDRwY+nw5OfXyM+q5unXVDKLouvGAWR7eieC/01VpyUDRtIf++Tsq1gvoM921ML5j/V
CeIb9oHl3sv+W+Di+k54r2fciPj7niC+ldHH6hPEt8K9nCB+OUH8coL45QTxywniJz1BDGHZsfQQ
u51p3Fqp496i4v9QSwMECgAAAAAAHKmISQAAAAAAAAAAAAAAAAUAHABmYXN0L1VUCQADaDxKWKs+
Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAD6mISQAAAAAAAAAAAAAAAAwAHABmYXN0L2NhbnZh
cy9VVAkAA048SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAA6piEmhGWY9rwAAAN4DAABM
ABwAZmFzdC9jYW52YXMvY2FudmFzLWNzcy1zaXplLWFmdGVyLWhlaWdodC1jaGFuZ2Utd2l0aC1k
aXNwbGF5LWZsZXgtc3RkZXJyLnR4dFVUCQADSzxKWEs8Slh1eAsAAQT1AQAABBQAAADtz7EOgjAU
BdDdr+iIAxQaEULioEQTByOJIzHkWV6wWil5VJP+vaiDfATbvdO9pxRRFqaZSAKRRGemLD6gd62s
ctO5gkyHZB3rVdOC1lgzJFr5kUjSmHn3nWo20OPxckNpt0SGqn37Aq1qsFjPmafGDSzjJ/MkiTnI
K/LcEB6wVvBPfhQvRSAWIR+mrbGuw54XGhwSH8Z+qVp/DgaSadUiE2GazsqRQkyKSTEpvoo3UEsD
BBQAAgAIAA+piElFRkQDgwAAABgBAAAmABwAZmFzdC9jYW52YXMvY2FudmFzLWxpbmVEYXNoLXN0
ZGVyci50eHRVVAkAA048SlhOPEpYdXgLAAEE9QEAAAQUAAAAzc47DsIwEEXRnlW8DRDFUBAsRBMj
GiqgQxRD8iQiOWM0cfitniyD8p7qBjZAhYXzZeWXJfgaXOmKmBqJCGP/OFJb2tnIy2q9cFdsdmbJ
th71vk6a+c4n5kOnDDLcPTp9SuxatFNBzOTjIRmRMmQkJRjZUzP6cYIboUnnX1oqZuGPXn5QSwME
CgAAAAAAG6mISQAAAAAAAAAAAAAAAAwAHABmYXN0L2ltYWdlcy9VVAkAA2U8SlirPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBAoAAgAAABqpiElRp4IYMQAAADEAAAAtABwAZmFzdC9pbWFnZXMvbGFyZ2Ut
c2l6ZS1pbWFnZS1jcmFzaC1zdGRlcnIudHh0VVQJAANkPEpYZDxKWHV4CwABBPUBAAAEFAAAAGlu
aXRJbWFnZUFwcGxlSlBFRzoxNDE2OiBmYWxsaW5nIGJhY2sgdG8gbGliSlBFRwpQSwMEFAACAAgA
G6mISSGPvTgyAAAAMwAAACwAHABmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3Rk
ZXJyLnR4dFVUCQADZTxKWGU8Slh1eAsAAQT1AQAABBQAAABzy0ksSXVJTc5PSbVSSAHRmXnpCqlF
RflFVgqZecn5RUWpySUKKYkliQrJGanJ2XpcAFBLAwQKAAAAAAAdqYhJAAAAAAAAAAAAAAAACQAc
AGZhc3QveHNsL1VUCQADaTxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAHKmISXL9ZfKF
AAAA6QAAACUAHABmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQJAANoPEpY
aDxKWHV4CwABBPUBAAAEFAAAAK1OMQ7CQAzb+4p8oGRguxkm2EB0TttUnJS7VLmc1P6eg36BxbJs
y/akaY1CHjUDm6kFWKLwDwIivlRq4oIXcsLr8MCBx1t0vNOu1Z9cvOBCxXErgsZFq00tvr2tn3U6
NRUkZoYzsHDi7BDTquZdc8JBIUDNNLZRVxCl+U/j/VHP8/dF9wFQSwMEFAACAAgAHKmISc4JKAKN
AAAA8AAAACcAHABmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAkAA2g8
SlhoPEpYdXgLAAEE9QEAAAQUAAAApY4xDsIwDEX3nsIXKB7YMsMEG4jOTuuKSE5cOY4EtyfQI7B8
+f9nW3/WvCUhT1qAzdQCrEn4JwERHyotc8UTOeF5uuHE8ZIcr/TW5neuXnGl6viqgsZVm819vTsf
Iy1jypuaj83SoWcgqTAcgYUzF4edDp2EfYQArVDsBVxBlJZ/ixStbX5+n/Q7keEDUEsDBBQAAgAI
ABypiEnPj2YOUAAAAKAAAAAkABwAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0
VVQJAANoPEpYaDxKWHV4CwABBPUBAAAEFAAAAK3MsQ3AIAwF0Z4p/gZR2myDwAhLNkaWiTJ+yA5p
rrtXTCdLDrYBcje/0FgIEB6EEySkNAK2Yq5IPO4sXLG7CM0cStGt7ssslb+wp4fK8ZEvUEsDBBQA
AgAIAB2piEmBSnetSwAAAKwAAAA0ABwAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21l
bnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQADaTxKWGk8Slh1eAsAAQT1AQAABBQAAAC1zLENgDAMRNE+
U9wKtGzjwAVZcmxkLOZHomAD6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdXxMBh0cW+
juJVbfvl+gBQSwMEFAACAAgAUaqISfZlLefAAQAAPAMAABEAHABmdWxsX3Jlc3VsdHMuanNvblVU
CQADqj5KWKs+Slh1eAsAAQT1AQAABBQAAAClUl1v2zAM/CuGnjbArp0lGxrvKViyDzTbijhbtydD
kZlYqCwJJN0mKPLfJ9lBMWDAXvomEuTd8U6L5bLerKof62316kkwEJMon4S25EGxw1go10CnEcfK
IzCfPGrL2h4yRZRhb4CuWu5MHEDwDlmUYrP6FKCrL9+/iVTAMQJCE/q3i6oKHam4l2FDfNgsqs/i
fD6nomX2EeNZSAeNlvHRmqF+0A24TDnL6AxlRj9ARowgu3/5P64XN7//T71d/doml2YrqSZuAMOZ
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
cM/ltHu2/9lsAJh/BRmDH8M8kNnm3y3+B1BLAwQKAAAAAAAlqYhJAAAAAAAAAAAAAAAAEQAcAGh0
dHAvdGVzdHMvY2FjaGUvVVQJAAN1PEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAkqYhJ
LBlrWOwAAAB9BAAAMAAcAGh0dHAvdGVzdHMvY2FjaGUvbWVtb3J5LWNhY2hlLXBydW5pbmctc3Rk
ZXJyLnR4dFVUCQADdDxKWHQ8Slh1eAsAAQT1AQAABBQAAADt0sFKAzEQBuCz+xRztJclq4e2QTy4
e1BQKIgoiIfZZJqGxklJZiu+vYl68yQVTz0mZL5k/sxABmABZ51WS60WQG+5U10bosEASUyiXUzi
2T3Pl+r8BS5ueB0vNYToXNmFLJgkt23bDL+VBhonV6hMckc5o6PbL/Sq1Gw1lLpA9gC3Pq2PvPZu
Sig+8qOXTR9fd4Hq6hrZBkoaejQbsqCAGMdyJYxotsQ2H9TTQ6ZUwxq8Ef2D1nDanMyOof1zaGy/
U/vsCoVcTO+F5SmEI/wXsGcvVbwveJmX+pkanlY9mMhMps5QObPH4G3zAVBLAwQUAAIACAAlqYhJ
U+zZ0oIAAAC+AAAAPQAcAGh0dHAvdGVzdHMvY2FjaGUvbmV0d29yay1lcnJvci1kdXJpbmctcmV2
YWxpZGF0aW9uLXN0ZGVyci50eHRVVAkAA3U8Slh1PEpYdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDh
vU9xoy6S6mAbxKVZHATBQUEcYnrGg3AnyVXx7Y2v4Prz8zkMAB0sW2t6azrAd2lNu0gSfIKsIeNT
shLHy7o3qytsHN6muLVQkMc9luIjnkgfg1eMkj8WZjylNG/cvzAx6U88VpyEd3wXC+fDAEGYMWht
9Xn5RGPzBVBLAwQKAAAAAAAhqYhJAAAAAAAAAAAAAAAAEgAcAGh0dHAvdGVzdHMvY2FudmFzL1VU
CQADbTxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAIamISQAAAAAAAAAAAAAAABgAHABo
dHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9VVAkAA208SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIACGpiEn8xTAgyAAAADECAAA7ABwAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNs
ZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAkAA208SlhtPEpYdXgLAAEE9QEAAAQUAAAAtZAx
b8IwEIVn+BU3tksUs7RYiIFkaKV2rBgQw8W+GAtzRvZFVf99HWBjQhHjPel9795ryQC8w0Lpeqlr
BfSbVa2qEA0GSGISnWMSz273tlyoPaw+uY9rDSE6V1TIgklyVVXz9lFSS93gCiqTfFPO6OjrCt0U
z1FD8QWyE7jja03k3rshofjIWy+HJp7OgcbrA9kGShoaNAeyUAMxdiUSOjRHYpsndfrJlMaxWm9E
36E1vMxnr1MC2N5Wu7RCIRfTX8HyEMITwf9QSwMECgAAAAAAIamISQAAAAAAAAAAAAAAABkAHABo
dHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvVVQJAANtPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACAAhqYhJLimRi4EAAAC+AAAARwAcAGh0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5
LWRlbGVnYXRlLWJhc2ljLTMwMi1yZWRpcmVjdC1zdGRlcnIudHh0VVQJAANtPEpYbTxKWHV4CwAB
BPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMuknTRBnFpFgdBcFAQh5ie6UG4k+Sq+PbWV3D9+fk8RoAN
tNaZzhkL+K7W2FWWGDIUjQWfUpQ4Xddda2+w9Xif0s5BRR4OWGtIeCYd+6CYpHwcLHjKedn4f2Fi
0p94mnES3vNDHFyOPURhxqhzm59XyDQ0X1BLAwQKAAAAAAAiqYhJAAAAAAAAAAAAAAAAFQAcAGh0
dHAvdGVzdHMvaW5zcGVjdG9yL1VUCQADcDxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA
IqmISQAAAAAAAAAAAAAAAB0AHABodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL1VUCQADcDxK
WKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAIqmISROK0gDfBwAAZSsAADcAHABodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRpbWluZy1zdGRlcnIudHh0VVQJAANwPEpY
cDxKWHV4CwABBPUBAAAEFAAAAMVaa2/bNhT93l9BCBiQbLZMinp6yAcvSdugSRrELjqgLQZaom0t
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
LuWv/CiDsuuGaKW+Jz80wB55RlxQysMc4+xwLvkWPONhcf/wXt5BqJ/PXF05GQBxvn51bJsHXEP+
QjNquwLcuYauXySj6OWbcztoL9Q9KNgr7porl7JAoKgCo4DHiHL8wbn7/oefDnrD/lbfKoxeQ8/G
e3Ty6db5+U7p4k+56Mu36K8hYZN+vu9ofKjvqy59/Wv3/wFQSwMEFAACAAgAJ6mISTZl8IuBAAAA
vgAAADoAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1z
dGRlcnIudHh0VVQJAAN6PEpYejxKWHV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0riYBnFp
FgdBcFAQh5ie6UG4k+Sq+PbWV3D9+fk8RgALa+PazhkD+K6mNassMWQoGgs+pShxum6s7W6w9Xif
0s5BRR4OWGtIeCYd+6CYpHwcLHjKedn4f2Fi0p94mnES3vNDHFyOPURhxqhzm59XyDQ0X1BLAwQU
AAIACAApqYhJPswRmC0AAAAuAAAAPAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWR1cmF0
aW9uLWFjY2Vzc2liaWxpdHktYWN0dWFsLnR4dFVUCQADfTxKWH08Slh1eAsAAQT1AQAABBQAAADj
cg1z9QvRKC5JzMlJTdFUCHENDtFIS8wpTtVUcHP09OFy9XNR8HcDi3NxAQBQSwMEFAACAAgAKamI
SaZX2Zc0AQAAyAMAADoAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nl
c3NpYmlsaXR5LWRpZmYudHh0VVQJAAN9PEpYfTxKWHV4CwABBPUBAAAEFAAAAMXSQU/CMBgG4Pt+
xeeJkdE1Mx68kExlRIKCkQW8lvXDNZZ2ab8a+PduCAcP3lw8NX2bPO97KGMM+NrqsEfPJ4IELzYr
vsHtXNH5uA9KS/6KGoVHrsXRBmKEnphDHzR5XhM1vEs836NUgtfa808l0TIZnCBlDRNVhd6rrdKK
jgwPDVaEMqUDRUmS/McGUVEQ+rQgz4Flo+wWkmx0A3keQcSKdbEo40qYpq2j2tnwXg8vcZd1l7eX
4qEsJhCfmtJLE1yNYWZ2yrQ9MB7DgFzAwRCW8wvgET9Q/iBQi8ajLNUeXSrRV041HZYqI/Gw3MWD
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
ljzEuFq0vwUHDjoS7ws8CF/zViw83TXghJmcll6ZecUY+m8i9RT3+mX+RrwvA5uys7dQ9iLN4Som
bYS3wQ8JR6+f4cjhGGmsrpD7SMlCg25HPVRAjF2RhA7dvkSaZ73pIVMaA2uDU/sDXW6zOFnNEZhy
8r8CG/OfwVN+/wdQSwMECgAAAAAAI6mISQAAAAAAAAAAAAAAAB4AHABodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9VVAkAA3E8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACOpiEme
S7AbiwAAAJsAAABcABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
cGxheS10aGVuLXNlZWstYmFjay13aXRoLXJlbW90ZS1jb250cm9sLXN0ZGVyci50eHRVVAkAA3E8
SlhxPEpYdXgLAAEE9QEAAAQUAAAADcixDoIwEADQ3a+4H8C0JQpl07CYOClxMQ5He0CT0pIrxNSv
l+3lKSHPhVSFqEHJRuhGnI6l1tBu8/KgYIk7JnpXWlWNrGUpKv2B2xgiuzCCiWHl6Ds3U4+JINEK
fQbjHYVdZHDb9/J64rx4um7DQNy6tHjMd8zE8MUEaC1ZWCMgpBzMxDG4H/HhD1BLAwQKAAAAAAAl
qYhJAAAAAAAAAAAAAAAAJwAcAGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xz
L1VUCQADdTxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAJamISQAAAAAAAAAAAAAAADkA
HABodHRwL3Rlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9za2lwLWJhY2stc3VwcG9y
dC9VVAkAA3U8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACWpiEnk01WJMgIAAJcJAABi
ABwAaHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2tpcC1iYWNrLXN1cHBv
cnQvc2tpcC1iYWNrLXN1cHBvcnQtYnV0dG9uLWNsaWNrLXN0ZGVyci50eHRVVAkAA3U8Slh1PEpY
dXgLAAEE9QEAAAQUAAAA7VNNb9NAED2TXzFHOMRfIbVjoCjEhVRKkJUm4lD1sLEnttX17rK7btV/
33FsRS0gRISQihT54tmdeTPv7ZvrwI+9SeyFznh0dgPz9Tpd4fcGjYVdVcytVX2YVPkKM6zucIVG
SWFwxjjfsuw2BiEhk8KisLBAUdgSdJeawxBQ65nMESoDgecNrn/fkMKkqdXnSjC+WS2mgrrW0uI0
zzUaEwPrfsAPQsejz6cyyoVGcyhp3Nh1D1dx5HmeW2NeMZeKZKMzNG7JjVugQM0sDu9k7qhSfcwb
CispPrQlfzBkH840EsqF1pJI1jUpEAOKTDakhib6TLT8pY5h+2ARNBMF0mH+VDLeSTbsMun412KF
N/D+6uJLulmm5zC1Fmtlv6K9l/p2KUVlpb5C26j2NSwYtLYSBTQKRJcDdZf07qAg9eAyY/xZl+if
dUkwA4ig7xUB3hvf8539JWibaVRSt3DXYTQZ0xiXYifPY6ouiraJsUxb4zjO8UgJbpuCoGjeJc3E
Clx0oJ+ohvxLdRzzgw6RM34bvhwdDtO3AsykIAf2Zv1W2ZJspzi20Zx8xZGsNmNZSd7zyIlsS8Sg
3VIUufkr5TYGdfskSZXtTf4cOobXg1dvBrXCIlBMUy6kaFItaePM2qSslTnrLV4JSC8T8L0ATCkb
TjAI/qjVyKMF4whyt6OWMArPjoX0n0COf0YcR0H0gwyTY2QQee+gvfa0+4XUD0ReNJyf6J/ov3z6
p0f6D+g/AlBLAwQKAAAAAAAmqYhJAAAAAAAAAAAAAAAANgAcAGh0dHAvdGVzdHMvbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL3N0YXR1cy1zdXBwb3J0L1VUCQADeDxKWKs+Slh1eAsAAQT1AQAA
BBQAAABQSwMEFAACAAgAJamISRb0ydFhAQAAVQUAAF4AHABodHRwL3Rlc3RzL21lZGlhL21vZGVy
bi1tZWRpYS1jb250cm9scy9zdGF0dXMtc3VwcG9ydC9zdGF0dXMtc3VwcG9ydC1saXZlLWJyb2Fk
Y2FzdC1zdGRlcnIudHh0VVQJAAN1PEpYdTxKWHV4CwABBPUBAAAEFAAAAO2STUvDQBCGz/ZXzFEv
IR/GJqsUtBEtWAnU4qF42G4m26Wb3bC7ofjv3Vg/ij0VERQ8hsw877xPsogjEuYkzII0yZ/gYnZ9
U86n5QguncOmdffoNtqsp1oJp80MXdcSUNqBReeE4tC1oLYz0GyHzoFWlUFrQViQmlE5WHymnEY/
llIgA8jgPQtwY6MwCl5fgnHMYKtNj1sM8yT1Z0xUrUfEb3Peh1hHjbNBEBxOKnDZcY/y9079TZTj
3RZ65XfWBPyexGrXQzr8PR4+ru8FjLWqBe8MdUKrR+FWY920EvunW6oqiYbAmLIVVhACKrr0xWBJ
2RpVZb9lbm7R9J+kEMyRPTSB48HRyaBpkcctNX4WSrSl0cyXf7Al7TUzQGO0AaGgnBQQhTHYle6k
xyBESe8ohFpIBF3XPhKS4dmhyGgHme4T0yzOvmjID9Ggqrc/6NU9dci1efblVSflf/0/Uf8FUEsD
BBQAAgAIACapiElNBIvuggAAAL4AAABXABwAaHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvc3RhdHVzLXN1cHBvcnQvc3RhdHVzLXN1cHBvcnQtbG9hZGluZy1zdGRlcnIudHh0
VVQJAAN4PEpYeDxKWHV4CwABBPUBAAAEFAAAAJ3MMQoCMRCF4X5PMaU2slFEN4jNprEQBAsFsYjZ
MQ6EGUlmFW9vvILwqp/H5zAArGFubNvVAb6Lac0sSfAJsoaMT8lKHC+rbrG8wsbhbYxbCwV52GMp
PuKJ9NF7xSj5Y2HCY0rTxv0LE5P+xGPFSXjHd7FwPvQQhBmD1lY/L59oaL5QSwMEFAACAAgAKqmI
SQKsB4ztAAAAXwEAAC0AHABodHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMtcGRmLXN0ZGVy
ci50eHRVVAkAA388Slh/PEpYdXgLAAEE9QEAAAQUAAAAhY9PT8MwDMXv+xQ+7damrYCtkSo0DRAH
Dqgap4lDlnhtpPwjcZD27UkF2xX78p5+z5Z97Fre9Lzt6/vu4RNeD4f3Eb8yJoKznhb7lG140U6Y
j/Ft59SI1hPulIqYEgfxK6DtNnVTui1jJQs5GpiJAmfshvi2aRpmUWnBvrVCX9EcPZFBVRkvVC0n
/eiExaGs9DlKTIzKJXVQ5/U1OvRLrekScBAhGC0Fae9YyayO/z7zZ/cRBeFzjD7uvbXoiAM66bMj
jKhAOMAFcjhdCCEKNyEYdBPNYHWyguQMFaTZZ6PgdGMd6HTVm357t/oBUEsDBBQAAgAIACypiEkB
Q2sbBwEAABcCAAAvABwAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0ZXItZGlhbG9nLXN0ZGVy
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
zcurYgZtxGcTyzKaL1ISh7KCEJJJiz4xNiT4rnxI+wG738pFWo/9cKsM10/N/dLEhr0NuJQydvAM
+AXAz6t4Fr0wOv2HFp9QSwMEFAACAAgALqmISWVAoWHBAAAAHAMAACwAHABodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUCQADiDxKWIg8Slh1eAsAAQT1AQAABBQA
AADtkbFOwzAQhmfyFDe2C0qy0FiIoclAJRgrhqrDxb44Vsw5si9Cffuaio2tYWQ86f7v093fkQbY
QV2pslH1DugrVWX16INGD1F0pDlEcWxPT03VnOG5o36xLwoSyTulhJbegrV5YZ8zk4Kc82SK7m6u
YJQ28ODsElFc4A8nYxs+Z0/f0yuy8RQVtKhHMlACMfZZCT3qidikFW6SY6J44CF0Tov6hVawKR62
awRsfr52uwqFbIiXjOXF+1Xg/zb+vI0rUEsDBBQAAgAIAC6piEkHzLcq3wAAAGMDAAAvABwAaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLXN0ZGVyci50eHRVVAkAA4g8SliIPEpY
dXgLAAEE9QEAAAQUAAAA1ZFBSwNBDIXP9lfkaC+y24vdQTx092BBQRBREA/Z2XQ6dJqUmazivzcr
3jwI7UWPCXlfXl468gBLWNSuatxiCfRe6qq+SOIxQVaf6SBZI4eXy6ZuXuGqo34M1w4K8XBHpWCg
p6jbFpWC5A8H5zymNJ91x4IjR52IDwaPwmveiIPn+xa8MJNX69nMG6Y4HL/kv7vXb/O3EoINrEyz
c2C6RKdwFbO2wpsYxoyT169wZH9INFU3yEOi7KBFv6UBKiDG3lZCj35nkZaTbnoslKfAuujV/UDb
b2Zn8z/48t/An1BLAwQUAAIACAAwqYhJpkChSIQAAAC+AAAAPQAcAGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tcGxheS1zdGFsbC1iZWZvcmUtbWV0YS1kYXRhLXN0ZGVyci50eHRVVAkAA4w8SliMPEpY
dXgLAAEE9QEAAAQUAAAAjcyxCsIwEIDhvU9xoy7SdLEJ4tIsDoLgoCAOMT3Tg3CR5Kr49sbRzfXn
57PoAXrolGm16XrAV1GtWsXkXYQsPuMjZSEOl7VW+gobi7c5bA0U5HGPpbiAJ5JpcIIh5beBBc8x
Lhv7A+v/YWKSr3isOCXe8T0ZOB8G8IkZvdRWn6eLNDYfUEsDBBQAAgAIADCpiElHeYYPuQAAAI4B
AAArABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1xdWVyeS11cmwtc3RkZXJyLnR4dFVUCQADjDxK
WIw8Slh1eAsAAQT1AQAABBQAAAClkLGOwjAQRGvyFVtCg5JQQCx0xSUFSFCiK04UG3sxFmYd2Rsh
/h4fuo4OypF23tNORxpgBXWlykYtaqBbqspq7oNGD1F0pCFEcWx/l03VHGHdUT/aLwWJZE8poaVd
sDYffOfORUHueTJF9zZXMEob+OTsGFFc4B8n5zZcB09/aYNsPEUFLeozGSiBGPushB71hdikD9wk
h0Rxy6fQOS3qBa1gWkxmnwjY/K/2/AqFbIj3jOXR+1nxAFBLAwQUAAIACAAwqYhJiw0ZKukAAABK
BQAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQADjDxK
WIw8Slh1eAsAAQT1AQAABBQAAADtksFKA0EMhs/2KXJsL7JbD7qD9NDdg4KCIKWCeMjOptOhY6bM
ZJW+fbPiSW9dPAg9JiTfn/xJQxbgBualKSpzNQf6zGVRXoZoMUASm2gfk3h2r9dVWb3BbUNt7xYG
MnH3SDmjo7WXbY1CLqaDgSn3Icwmzalgz14G4rPCfeR73kQDL0812MhMVjSnNR8YfHe6SCb5Hv4h
OqcFS+3ZGdC+QGO4gknqyBvv+oTDrF/mxPd9oCG6Q+4CJQM12i11UAAxtioJLdqdWppH7bTKlAbD
Gm/F/ELrbSYXszECf3Ty/wc+P+n5SX+Aj1BLAwQUAAIACAAxqYhJmCKBZdwAAABMAgAAKwAcAGh0
dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0ZGVyci50eHRVVAkAA408SliNPEpYdXgL
AAEE9QEAAAQUAAAApZFBSwNBDIXP9lfk2F5k1x50B+nB3UMFBUFEQTxkZ9Pp0DEpM1nFf29WvAke
useEvO8lLx15gCu4qF3VuPUa6LPUVX2exGOCrD7TUbJGDq+XTd28wXVH/Rg2DgrxcE+lYKDnqPsW
lYLkLwdLHlNaLbpTwZGjTsRHg0fhW96Jg5eHFrwwk1fr2cwHpjicblJIf5e/kxBs4MY0BwemSzSH
q5i1Fd7FMGacdv0JR96PiaZqizwkyg5a9HsaoAJi7M0SevQHi7TMuumpUJ4C66JX9wdtv1mcreYY
/P/yb1BLAwQKAAAAAABAqYhJAAAAAAAAAAAAAAAAEAAcAGh0dHAvdGVzdHMvbWlzYy9VVAkAA6c8
SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACupiEnZvBDrxAAAAP4AAAA/ABwAaHR0cC90
ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1zdGRlcnIudHh0
VVQJAAOCPEpYgjxKWHV4CwABBPUBAAAEFAAAAE2Oy2rDMBRE9/mKWbbQFEnuwxIlm7hZmRL6WIUQ
hH2TXGpLRr5Oab++CrSQgVkMHJhjlH6YazNXJYx2yjpjbo0tUE398EqhpfSeiDaPpS2cLtW9LewW
6xQHSvKNjkcBh5PvuMU+pnN7Lw5aKVwNl9iIxocQBU0M4jng5aOur2ebi9e7LZ5ysKqW613NPQu1
WORgxYe/XfH4ufTNkbLDibPe7o3k38fhOaVs8ZVYOBwQp3x3hrHnjm4gaQqNF4JE/FCKs19QSwME
FAACAAgAK6mISc5kFc3EAAAA/gAAAFsAHABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1
cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIu
dHh0VVQJAAOBPEpYgTxKWHV4CwABBPUBAAAEFAAAAE2OTWvCQBRF9/6Ku2yhlpmxtkkQN6auQpF+
rERkSJ72YTITXl4s7a/vCC144S4uHLjHGfs4tW5qMjhbmLxw9t66B5Rj179SaEjehWj7lOWzwmZm
ns/yHTYSexL9RsuDgsPZt9zgEOXSzmsBawxu+mtsQO1DiIo6BvUc8PJRVbeT7dXrfIdFCtblarOv
uGOlBssUrPn4t0seTitff1JyOHPS27+R/vsUeBZJFl/CyuGIOKa7C4wDt3QHlTHUXgka8UMSJ79Q
SwMEFAACAAgAQKmISRU1NZJ6AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1w
b3J0LXN0ZGVyci50eHRVVAkAA6c8SlinPEpYdXgLAAEE9QEAAAQUAAAAjY5BDsMgDATveYU/QCDt
oRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2
/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwMECgAA
AAAAJKmISQAAAAAAAAAAAAAAABkAHABodHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvVVQJAANzPEpY
qz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAkqYhJpcmF74EAAAC+AAAAOAAcAGh0dHAvdGVz
dHMvbm90aWZpY2F0aW9ucy9ldmVudC1saXN0ZW5lci1jcmFzaC1zdGRlcnIudHh0VVQJAANzPEpY
czxKWHV4CwABBPUBAAAEFAAAAJ3MMQoCMRBA0X5PMaU2ktjsJojNprEQBAsFsYjZMQbCjCSzirc3
XsH283kOA8AAa22VsaoHfFet9Cpz8BmKhIJPLpIoXvrBmCtsHN7muLVQkaY91uojnpI8Ri8YuXws
LGjOedm5f+FESX7iseGJaUd3tnA+jBCYCIO01p6Xz2nqvlBLAwQKAAAAAAA4qYhJAAAAAAAAAAAA
AAAAFAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQJAAOcPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAArqYhJNyyZgscAAADYAQAAVQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJl
bW90ZS1yZWFkLXJlbW90ZS12aWRlby1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLXN0ZGVyci50eHRV
VAkAA4I8SliCPEpYdXgLAAEE9QEAAAQUAAAApZCxjsIwEERr8hVbQhMlaQ4sREFSHNJdiSgQxcZe
jIVvjeyNTvw9DncdFUq5I82bnelIAyyhqVW1Uk0D9Jvqqi590Oghio50C1Ec2+PHclWfYL3jc9go
8MHarEISjJLKsiy6d0kd9YPNqETyTSmhpa8/6DZ7rgqyz5OZwB1fawOfnR0iigt8cHJpw8/N03h9
IhtPUUGL+kIGKiDGPkdCj/pKbNKkTvtEcRyrc1rUC1rBvJgtpgSw+V/t2QqFbIj3jOXB+0XxAFBL
AwQUAAIACAAsqYhJnqSY+eAAAAClAgAASAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJl
bW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3Qtc3RkZXJyLnR4dFVUCQADgzxKWIM8Slh1
eAsAAQT1AQAABBQAAADNkTFLBEEMhWvvV6T0GtldC+8GucLdQkFBEFEQi+xsbm64MTlmsor/3qxY
KQiyjWVC8r2Xl448wAqa2lVr1zRAb6Wu6pMkHhNk9ZkOkjVyeDpbretnOO+oH8PGQSEebqgUDPQQ
ddeiUpD87uCYx5SWi+7fgSNHnYh3Bo/CV7wVB4+3LXhhJq/Ws5lXTHH4JnL6F/f6Zf5aQrCBC9vZ
O7C9RHO4illb4W0MY8bJ62c48nJINFWXyEOi7KBFv6MBKiDG3iShR7+3SMusm+4L5SmwLnp1P9D2
m8XRco7A7y//AFBLAwQUAAIACAAtqYhJoubwIuAAAAClAgAARwAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQJ
AAOGPEpYhjxKWHV4CwABBPUBAAAEFAAAAM2RQUsDQQyFz/ZX5NheZLeCtoN4cPegoCCIKIiH7Gw6
HTpNykxW8d+bFU8KguzFY0LyvZeXljzACpa1q9ZueQL0VuqqPk7iMUFWn+kgWSOH57PVun6B85a6
IVw4KMT9LZWCgR6jbhtUCpLfHcx5SGkxa/8dOHLUkXhv8Ch8zRtx8HTXgBdm8mo9m3nFFPtvIqd/
ca9f5m8kBBu4tJ2dA9tLNIWrmLUR3sQwZBy9foYj+0OisbpC7hNlBw36LfVQATF2Jgkd+p1FWibd
9FAoj4G10av7gbbfzI4WUwR+f/kHUEsDBAoAAAAAADKpiEkAAAAAAAAAAAAAAAAqABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJAAOQPEpYqz5KWHV4CwABBPUB
AAAEFAAAAFBLAwQKAAAAAAAlqYhJAAAAAAAAAAAAAAAALgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9VVAkAA3U8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIACWpiElvmOX20wAAAFUEAABHABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL2Jhc2UtdXJpLWFsbG93LXN0ZGVyci50eHRVVAkAA3U8Slh1PEpYdXgL
AAEE9QEAAAQUAAAA7c4xa8MwEAXgPb/ije1SbAc3jghd4iVDQdBCC6WDIp8VUUVndHJL/n3UrdAp
S+kQuOm49907TuSaySShBE2iE1sSeRZtPhSsBaXECT5C73rUVQM58BwG7An1El5QYfSBwOMolLFc
3S+Ol5H1D7L9LbZd011KXlteW/5Jy54s0KGpVbUuA/qSErwLbE1AyjbRxCn76N5W3bp9x6an/ewe
FITi8Fi+G0cvPh+2JpPjdFK4iXMIt/8Q9tHnb/Gp4J7jLo6s8Kq3sBwj2Vx25ebTBD8szlBLAwQU
AAIACAAlqYhJtl89B9UAAADzAQAASwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADdjxKWHY8Slh1
eAsAAQT1AQAABBQAAAClkEFLAzEQhc/ur5hjvcimILVBeujuoYIFQURBPMwm0zQ0Tkoyq/jvnRVv
3tzjg/e+x3s9OYAbWBrbrq1pgT6rac1Vyg4TFHGFzrlI5PC6WpvrN7jtaRjDxkIl2VOtGOg+h6CG
rWZOFjSXyDf9v7mCRbrMhxjGghIzP0c5dvn9nGhSO2SfqFjo0B3Jg6IZB62EAd2J2NcZ3SRPlcod
H3Ifndg/aAuL5uJyTgH739d+VqFQyOVLsTymNAMcOcpEfFS4njQtsPDy0IHLzOSm49TzgSn65htQ
SwMEFAACAAgAJamISbeNMofjAAAAPQIAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAN1PEpY
dTxKWHV4CwABBPUBAAAEFAAAAKWQQUsEMQyFz86vyHG9DDOC6BbZgzOHFRQEEQXxkGmz3bI1XdqM
4r83VW+eZCCXhLwveW8kC3AJZ73p1lpAH6Xv+jYmixGy2EzHlCWwf7lY9+evcHXDu7QxEJP3OoUi
mKW0bduM/yWNNM1eUYXkjkpBT7c/0GvVHAyoLpJbwK2vDYl3wc8ZJSR+CrIf0tsxUu22yC5SNjCg
3ZODDohx0pMwoT0Qu7LI02OhXMMagxXzB21g1ZycLjnA7je1b1co5FP+VCzPMS4ABw5SiQ8K15Cq
AwPP9wPYxEy2Bqc77xiDa74AUEsDBBQAAgAIACWpiEkJ5n72pwAAAIoBAABYABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYmxvYi11cmwtZG9lcy1ub3QtbWF0Y2gt
c291cmNlLXNlbGYtc3RkZXJyLnR4dFVUCQADdjxKWHY8Slh1eAsAAQT1AQAABBQAAADdj7EOgjAU
RXe/oiMOUKiiQOKgRBMHIwkjMeTZvmC1UvKoJvy9GAf9Brdzp3NuJaIsTLMoDOIkPTHt8A790Mq6
RFeQ7ZDcwHrdtGAMKoZEKz8SyyRm3m2nmw30eDxfUbotkaV63z7BaAUO1ZR5+neBY7y0D5KYg7wg
zy3hAZWGL/lRvBCBmId8VDvrhg57XhgYkPgo+1C9fvcFkhndIhMinU2qfzjxAlBLAwQKAAAAAAAp
qYhJAAAAAAAAAAAAAAAARAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvVVQJAAN9PEpYqz5KWHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAApqYhJYU+BOPEAAAAmAwAAeQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3Vy
ZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAkAA308Slh9PEpYdXgLAAEE
9QEAAAQUAAAAzVE9T8MwFNz5FW+EoUmcRE7xVqWgDgwoKlPVwXVei0VsB38w8Ot5LRVioEUsFfLy
Pu7dnXyrkoniVjCeNVO+hsVy+djha8IQYat339rWo4x4573zrTMGbRSAVrlkI3rsQVrA/VJAsh6V
21n9TuPnGEfwGEZnA0JdFFer84qEP7Zz3XeoUL9hd7xv5TBspHoRxHhY/MAP1wcbMGEl580NbKne
g0Ses7LJCnpMTOu6yunKJa8w5JHUMjPWv3mjdp7MeK+tHJ66h5klg8ZFnPU9kQUB8rOALyU6Iywk
P/zdRJNVvLpoJCcU/0Ukp3/jApF8AFBLAwQKAAAAAAAqqYhJAAAAAAAAAAAAAAAAPQAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9V
VAkAA388SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACWpiEk/n6nW1AAAAPMBAABTABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93
RE9NL2FsbG93LWF1ZGlvLXN0ZGVyci50eHRVVAkAA3Y8Slh2PEpYdXgLAAEE9QEAAAQUAAAApZAx
S8RAEIVr8yum1EYSGy+LWFxSKCgIIgpiMdmd21tunTl2J4r/3onY2ZnywXvf472RPMAGLjrX9q5r
gT5r13bnWTxmKOoLHaVo4vh6uen7N7gaaZrjtYNKek+1YqQ7idEMW8scHFguU2jGf3MViw7CuxTn
gpqEn5PuB3k/ZlrUDXLIVBwM6PcUwNCMk1XChP5AHOqKbtKnSuWWdzImr+4P2sFpc3K2poDD72s/
q1ApSvkyLM85rwAnTroQHw1uJy0LHLw8DOCFmfxynHk+MKfQfANQSwMEFAACAAgAJqmIScVJof+5
AAAAjgEAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2Vy
QWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8tc3RkZXJyLnR4dFVUCQADdzxKWHc8Slh1eAsAAQT1
AQAABBQAAAClkDFvwjAQhefmV9xYliruArGqDiQDSDBWHSqGi31xrJhzZF+E+Pd1KzY2GJ907/t0
ryMDsIF3petGKwV0yapWbyEaDJDEJJpjEs/uZ71pmhN8dNQv7lNDJjlSzujoEJ0rB9vSmTSUXiBb
dQ9zBZO0kQfvloTiI397Gdt4ngP9pR2yDZQ0tGhGslADMfZFCT2aidjmJ9wkX5nSnofYeSP6Dq3h
tXpZPSNge1vt/ysUcjFdC5aXEFbVL1BLAwQUAAIACAAqqYhJcJUE8IEAAAC+AAAAawAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9k
ZWZhdWx0LXNyYy1vYmplY3QtZGF0YS11cmwtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAN/PEpYfzxK
WHV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0rjYBHFpFgdBcFAQh5ie6UG4k+Sq+PbWV3D9
+fk8RoAO1sa11hkD+K6mNassMWQoGgs+pShxum46a2+w9Xif0s5BRR4OWGtIeCYd+6CYpHwcLHjK
edn4f2Fi0p94mnES3vNDHFyOPURhxqhzm59XyDQ0X1BLAwQUAAIACAAyqYhJJ/iTwN0AAABMAgAA
SwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGly
ZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADjzxKWI88Slh1eAsAAQT1AQAABBQAAAClkUFLA0EM
hc/2V+RoL7KrFO0gHtw9KFgQRBTEQ3Y2nQ4dkzKTbem/NyveBA/dY0Le95KXljzADVzWrlq6qwXQ
odRVfZHEY4KsPtNOskYOH9fLevEJty11Q7hzUIj7FZWCgd6ibhpUCpKPDs55SGk+a08FR446El8M
HoUfeS0O3p8b8MJMXq1nM3tMsT/dpJD+Lv8kIdjAvWm2DkyXaApXMWsjvI5hyDju+hOOfO0SjdUD
cp8oO2jQb6iHCoixM0vo0G8t0jLpptdCeQysjV7dH7T9ZnY2n2Lw/8u/AVBLAwQUAAIACAAxqYhJ
bPzsl7oAAACOAQAATAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAkAA448SliOPEpYdXgLAAEE9QEA
AAQUAAAApZAxb8IwEIVn8itubBaUtCDAQgwkA0hlRAxVh4t9GAv3jOyLUP89BrGxkfFJ975P91rS
AHP4rFW1UF8ToGuqq3rsg0YPUXSkS4ji2P7MFvX0F5Ytdb1dKUgkO0oJLX0Ha/PBOnfOCnLPkyna
t7mCUZrAR2f7iOICH5ycmvB38XRPG2TjKSpoUJ/IQAXE2GUldKjPxCYNcJPsE8UtH0PrtKgXtIKP
YlQOEbB5rvb4CoVsiP8Zy733ZXEDUEsDBBQAAgAIADKpiEkn+JPA3QAAAEwCAABmABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1h
bGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJAAOPPEpYjzxKWHV4CwAB
BPUBAAAEFAAAAKWRQUsDQQyFz/ZX5GgvsqsU7SAe3D0oWBBEFMRDdjadDh2TMpNt6b83K94ED91j
Qt73kpeWPMANXNauWrqrBdCh1FV9kcRjgqw+006yRg4f18t68Qm3LXVDuHNQiPsVlYKB3qJuGlQK
ko8OznlIaT5rTwVHjjoSXwwehR95LQ7enxvwwkxerWcze0yxP92kkP4u/yQh2MC9abYOTJdoClcx
ayO8jmHIOO76E4587RKN1QNynyg7aNBvqIcKiLEzS+jQby3SMumm10J5DKyNXt0ftP1mdjafYvD/
y78BUEsDBBQAAgAIADKpiEmLIyVkggAAAL4AAABZABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWJsb2Nrcy1ldmFsLXN0
ZGVyci50eHRVVAkAA488SliPPEpYdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy7SKEUbxKVZ
HATBQUEcYnqNB+FOkqvi21tfwfXn53MYADawNLZu7aoBfBdTm0WS4BNkDRmfkpU4XtetaW6wdXgf
485CQe4PWIqPeCZ9dF4xSv5YmPGY0rxy/8LEpD/xNOEkvOdBLFyOHQRhxqBTm56XT9RXX1BLAwQU
AAIACAAyqYhJY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA5A8SliQPEpYdXgLAAEE9QEAAAQU
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAAyqYhJY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxl
LXNyYy0yLXN0ZGVyci50eHRVVAkAA5A8SliQPEpYdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVe
EDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbv
IUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN
1PGavlBLAwQUAAIACAAtqYhJVHvQZ4IAAAAXAQAANQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29y
cy1wb3N0LXJlZGlyZWN0LTMwMS1zdGRlcnIudHh0VVQJAAOGPEpYhjxKWHV4CwABBPUBAAAEFAAA
AM3MsQrCMBCA4b1PcaMu0nTQNohLszgIgoOCOMT0TA/CnSRXxbe3voXrz8/nMAC00Bhbd7ZZA76L
qc0qSfAJsoaMT8lKHK+btjM32Dq8T3FnoSAPByzFRzyTjr1XjJI/FhY8pbSs3N/BxKQ/8TTjJLzn
h1i4HHsIwoxB5zY/L59oqL5QSwMEFAACAAgAMqmISZezYKy6AAAAjgEAAD0AHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAOQ
PEpYkDxKWHV4CwABBPUBAAAEFAAAAKWQu47CMBBF681XTEmaVQISDwtRkBQgQYm2WG0xsSfGwowj
eyLE32PQdtst5ZXmnqO5LWmAJUxrVa3UbA50S3VVf/qg0UMUHWkIURzb78VyVf/AuqVutBsFieRI
KaGlQ7A2H2xz56Ig9zyZov03VzBKE7h3dowoLvCXk3MTroOnZ9ohG09RQYP6TAYqIMYuK6FDfSE2
6Q03ySlR3HMfWqdF/UErmBQf5TsCNr+rvb5CIRviPWN59L4sHlBLAwQUAAIACAAyqYhJP4rgnYIA
AAC+AAAAOgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3JjLWZyb20tcmVtb3Rl
LXN0ZGVyci50eHRVVAkAA5A8SliQPEpYdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy7SKGgb
xKVZHATBQUEcYnqNB+FOkqvi21tfwfXn53MYABpYGlu3drUGfBdTm0WS4BNkDRmfkpU4XjdNa26w
dXgf485CQe4PWIqPeCZ9dF4xSv5YmPGY0rxy/8LEpD/xNOEkvOdBLFyOHQRhxqBTm56XT9RXX1BL
AwQKAAAAAAAqqYhJAAAAAAAAAAAAAAAAIQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L1VUCQADfzxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAKqmISVqNfW32AAAAfQQA
AE4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRl
by1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAkAA388Slh/PEpYdXgLAAEE9QEAAAQUAAAAzZGx
TsMwEIZn8hQ30iVKurS2EEOTASSQKiEEEmJw7Ktr1Zwr+wLi7bGBjQlFgY5n3X3n+78eNcAalq1s
hGzXgG+pbdraB608RNYRjyGyI/u0EsvVM1xc0y5cSvDB2vwKiVXkVNd11f+W1OMw2oxKyLeYkrJ4
8wXd5JmDhDzn0Uzglq91gXbOjlGxC/TgeN+Fl6PHUl0pMh6jhE7pPRpoAEkNeSUMSh+QTJp0033C
WMLqnWb5Ay3hvDpbTFlA5ju1z6sUow3xPWNp9P7PwGImzeIfNYu5NYuTsDET2JHjQrzL8Jx+iUbC
47YDHYhQFyO551V5Z6oPUEsDBBQAAgAIACqpiEl/W41cgQAAAL4AAABCABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLWluLWlmcmFtZS1zdGRlcnIudHh0VVQJ
AAN/PEpYfzxKWHV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0nSpCeLSLA6C4KAgDjE940G4
k+Sq+PbWV3D9+fk8RoA1dMa11hkL+K6mNassMWQoGgs+pShxuvS266+w8Xib0tZBRR73WGtIeCJ9
DEExSfk4WPCU87Lx/8LEpD/xOOMkvOO7ODgfBojCjFHnNj+vkGlsvlBLAwQUAAIACAA2qYhJIErL
lOEAAACMBAAAOQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hp
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
CwABBPUBAAAEFAAAAFBLAwQUAAIACAAxqYhJPaiLWh0BAACwBwAANgAcAGltcG9ydGVkL21vemls
bGEvc3ZnL2ltYWdlL2ltYWdlLW9wYWNpdHktMDEtc3RkZXJyLnR4dFVUCQADjTxKWI08Slh1eAsA
AQT1AQAABBQAAADtz0FLwzAUwPH7PsU7boe1Tbq5tqigncIOw0EPCmOMLH120ZiUl0zptzdjiDt4
EjwIvb2E8H/5zVECZMBZkeRFmgJ+OJawSFspNJCXhK0lr0yznuUs38DlHHeH5roAh6ZeonOiwUfl
96Xw2FjqChiag9ajwfy3YWWUPxarEFfWLMyzLeBpVYK0xqD04S68eRda1YP1Vz6aZHwDyuObcJ2R
2wr9imyL5DtwqjFCa6wBia7GjM+yKQxf71VzKxw+7F5C9I7I0nZxygZKPYKhOj8JD3FlDySxFHKP
cWkJl1gr8T2N2fSCR3ySxGG1t75r0cUrLTqkOCw7Tdub4/8iCVoZBM7ztEf0iD9C5OwcUdq2+xeK
JMt6Ra/oFT8oPgFQSwMECgAAAAAAPamISQAAAAAAAAAAAAAAAA0AHABpbXBvcnRlZC93M2MvVVQJ
AAOlPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAA5qYhJAAAAAAAAAAAAAAAAGgAcAGlt
cG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvVVQJAAOdPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAAA9qYhJAAAAAAAAAAAAAAAAJgAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvZ2VuZXJh
dGVLZXkvVVQJAAOlPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAA5qYhJjzQacEQAAACg
CQAARwAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9mYWlsdXJl
c19SU0EtT0FFUC1zdGRlcnIudHh0VVQJAAOdPEpYnTxKWHV4CwABBPUBAAAEFAAAAHPOL81JUcjL
L1FIT81LLUosSVVIVMhOrVQoSMws0lEoLkksKS1W0DUxNjDhch5VO6p2VO2o2lG1o2pH1Y6qHVVL
c7UAUEsDBBQAAgAIAD2piElUAsmyNgAAAMACAABQABwAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQ
SS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12MV81LXN0ZGVyci50eHRV
VAkAA6U8SlilPEpYdXgLAAEE9QEAAAQUAAAAc84vzUlRyMsvUUhPzUstSixJVUhUyE6tVChIzCzS
USguSSwpLVbQNTE2MOFyHlU7qnaQqQUAUEsDBAoAAAAAAEypiEkAAAAAAAAAAAAAAAAgABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9VVAkAA788SlirPkpYdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAAEKpiEkAAAAAAAAAAAAAAAAlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL1VUCQADrDxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAPamISQAAAAAA
AAAAAAAAACkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL1VUCQAD
pTxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAPamISRb2R6rBAAAATgIAAEcAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL3JlZmxlY3Rpb24tZW1iZWRkZWQt
c3RkZXJyLnR4dFVUCQADpTxKWKU8Slh1eAsAAQT1AQAABBQAAADNkDELwjAQhXd/xY06aJLaYs0m
ijgIStFJHGJztcW0qUnq7/ekzg4uyi3v8d5xH3eKhORzmSSTOOFn2BwO+wzvHfoARXXdhNC+7arS
GeZYPTBD39rG41IZc1H5TYLrAw0l9cn1OcQ8hiE6Zx2MRTSfpiMoSL9KkjFjc2VK64NMU85ZGWrD
tK1ZoGPjhzId7orB6TMe2VVXt+uqUeaYbRcNMdY24EJrovASVC9ARLMJpxG0Rl3onPmaQ/z3m8QP
3/QEUEsDBAoAAAAAAEKpiEkAAAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAkAA6w8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AAAAAESpiEkAAAAAAAAAAAAAAABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUCQADrzxKWKs+Slh1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAASqmISQAAAAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJ
AAO7PEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABCqYhJEoBxauEAAAA+BQAAZwAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA6w8SlisPEpY
dXgLAAEE9QEAAAQUAAAA7ZNBSwQxDIXPzq/IUS8yXQS1yB6cOaygIIgoiIdMm+2W7SZLm1H893bE
myddj3MMvPc98kh6cgAXsDDWtLY9A3ovpjWnSRwmyOoy7SVr5PByfrkwr3DV0zCGpYVCekelYKBb
CaEKrqtna6H6Evmm/zNXMWsnvI5hzKhR+CnqppPdPtE0rZB9omyhQ7chDy0Q41AjYUC3JfblgGzS
x0L5htfSR6f2B9rCcXN0clDAXNrvA9h/t/a1FSoFyR8Vy2NKM3gG/ys4ctSJ+FDh9XWmu7bwfN+B
E2Zy0ztVzRum6JtPUEsDBBQAAgAIAEKpiEl+G3Z86AAAAJgEAAByABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAOsPEpYrDxKWHV4
CwABBPUBAAAEFAAAAO2TQUsDQQyFz/ZX5GgvslME6yA9uHuooCAUURAP2dl0OnSaKTNZpf++WfHm
rYvQg8eE5HuZ95iGHMAcZsaaylbXQF/FVOYqJocRsrhM+5QlsH+/uZ2ZD7hrqO39wkIh7p6oFPT0
GmRTo5BP+WDhkvsYp5PmVHDgIANxpfCQ+IHXycLbcw0uMZMT7enMJ8bQnS5SSH6Of0ze68C97mwt
6F6kMVzBLHXidfB9xuHWb3PSbh9pqJbIXaRsoUa3oQ4qIMZWJaFFt1VLy6g3vRTKg2FNcGJ/oTWb
ycV0jMAfRf6fxnmlcQY/+whQSwMEFAACAAgAQ6mISSJwZCftAAAA/AUAAG4AHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUCQADrTxKWK08Slh1
eAsAAQT1AQAABBQAAADtlEFLQzEMgM/uV+ToLvI6FLWMHXzvoOBAEFEQD3l9WVdW09HmTfz35ok3
T244dtixIfmSfiVtyAFcwcRYU9nqHOijmMqcxeQwQhaXaZ2yBPavl9cT8wbThtrezywU4m5OpaCn
5yDLGoV8yp8WTrmPcTxqtgUHDjIQHxUeEt/xIll4eajBJWZyojHN2WAM3fZNCsnP8PfJe0240ZqV
Ba2LtAtXMEudeBF8n3GY9VtOel9HGk63yF2kbKFGt6QOKiDGVltCi26lSstOd3oqlAdhTXBif6H1
bUYn46O0PUv7pz05EPDFEXxI4L/8nl9QSwMEFAACAAgAQ6mISTKlAHPmAAAAmAQAAHkAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAOtPEpYrTxKWHV4CwABBPUBAAAEFAAAAO2TwUoEMQxAz+5X5OheZLogahEPzhwUFAQR
BfGQ6WS7ZWuytBnFvzcj3jy5i4LgMSF5SV9JRwHgGBbOu8Y3h0Cv1TXuIEvADEVDoY0UTRwfj04W
7glOO+rHeOahEg/XVCtGuk+6alEpSnnzsM9jzvNZty04cdKJeGvwJHzJS/HwcNNCEGYKajmrecGc
hu2HVNLP5a8kRis4t561B+vLtAtXsWgrvExxLDjt+iFHnjeZpugCechUPLQYVjRAA8TY20joMaxN
ad3pTXeVyiSsS0H9F7T9zWxv/i/tl6X90J38PfB3LvsdUEsDBBQAAgAIAEOpiEmyIq226AAAAPwF
AABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVU
CQADrTxKWK08Slh1eAsAAQT1AQAABBQAAADtlMFKAzEQQM/2K+ZoL7IplGqQHtw9WFAoiCiIh9ns
NA2Nk5LMKv69s+LNWxc97THDzJvJC5OGHMAlLIw1la2WQB/FVOYiJocRsrhMx5QlsH9ZXS3MK1w3
1PZ+baEQd/dUCnp6CrKvUcin/GnhnPsY57PmVHDgIAPxQeEh8YZ3ycLztgaXmMmJxjTnHWPoTm9S
SH6Gv0vea8KN1hwsaF2kMVzBLHXiXfB9xmHWbznp7RhpON0id5GyhRrdnjqogBhbbQktuoMqLaPu
9FgoD8Ka4MT+QuvbzM7mk7R/lvZHezKBJ/C43/MLUEsDBBQAAgAIAEOpiEnD5aeS6AAAAJgEAAB1
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQJAAOuPEpYrjxKWHV4CwABBPUBAAAEFAAAAO2TQUsDQQyFz/ZX5GgvstOD1kF6cPdQ
QUEooiAesrPpdOg0U2aySv99s+LNWxehB48Jyfcy7zENOYA5zIw1la2ugb6KqcxVTA4jZHGZ9ilL
YP9+czszH3DXUNv7hYVC3D1RKejpNcimRiGf8sHCJfcxTifNqeDAQQbiSuEh8QOvk4W35xpcYiYn
2tOZT4yhO12kkPwc/5i814F73dla0L1IY7iCWerE6+D7jMOt3+ak3T7SUC2Ru0jZQo1uQx1UQIyt
SkKLbquWllFveimUB8Oa4MT+Qms2k4vpGIE/ivw/jfNK4wx+9hFQSwMEFAACAAgAQ6mISQ0+KHnn
AAAAmAQAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGEtc3Rk
ZXJyLnR4dFVUCQADrjxKWK48Slh1eAsAAQT1AQAABBQAAADtkz1LBEEMQGvvV6T0Gtm5wo9BLNwt
FBQEEQWxyM7m5oYbk2Mmq/jvzYqdlXcoCJYJyUvmDekoABzDwnnX+OYQ6LW6xh1kCZihaCi0kaKJ
4+PRycI9wWlH/RjPPFTi4ZpqxUj3SVctKkUpbx72ecx5Puu2BSdOOhFvDZ6EL3kpHh5uWgjCTEEt
ZzUvmNOw/ZBK+rn8lcRoBefWs/ZgfZl24SoWbYWXKY4Fp10/5MjzJtMUXSAPmYqHFsOKBmiAGHsb
CT2GtSmtO73prlKZhHUpqP+Ctr+Z7c3/pf2ytB+6k78H/s5lvwNQSwMEFAACAAgARKmISSSyzo7r
AAAAmAQAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQJAAOvPEpYrzxKWHV4CwABBPUBAAAEFAAAAO2TsU4DMQxAZ/oV
HulSXTpQiBADdwNIrVQJIZAQgy/nplGDUyW+Iv4eX8XG1FYgBkZb9rPzIjfkAC5haqypbHUB9F5M
ZSYxOYyQxWXapiyB/cvsampe4bqhtvc3Fgpxt6BS0NNTkHWNQj7lDwvn3Mc4HjXHggMHGYgPCg+J
73mVLDwva3CJmZxoTmt2GEN3/JBC8rX8PHmvBbfas7GgfZFO4QpmqROvgu8zDrvu5aS3baQhukPu
ImULNbo1dVABMbY6Elp0G1VaTnrTY6E8CGuCE/sNrX8zOhv/S/tlaT90J4eBZ38AfMhlfwJQSwME
FAACAAgARKmISSe14MnmAAAAmAQAAGkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9h
ZHN0YXJ0LXN0ZGVyci50eHRVVAkAA688SlivPEpYdXgLAAEE9QEAAAQUAAAA7ZPBSgQxDEDP7lfk
6F5kupfVIh6cOSgoCCIK4iHTyXbL1mRpM4p/b0a8eXIXBcFjQvKSvpKOAsAxLJx3jW+WQK/VNe4o
S8AMRUOhrRRNHB+XJwv3BKcd9WM881CJh2uqFSPdJ123qBSlvHk45DHn+azbFZw46US8NXgSvuSV
eHi4aSEIMwW1nNW8YE7D7kMq6efyVxKjFZxbz8aD9WXah6tYtBVepTgWnHb9kCPP20xTdIE8ZCoe
WgxrGqABYuxtJPQYNqa07vWmu0plEtaloP4L2v5mdjD/l/bL0n7oTv4e+DuX/Q5QSwMEFAACAAgA
RKmISSe14MnmAAAAmAQAAHQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0
X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADrzxKWK88Slh1eAsAAQT1AQAABBQAAADtk8FKBDEM
QM/uV+ToXmS6l9UiHpw5KCgIIgriIdPJdsvWZGkzin9vRrx5chcFwWNC8pK+ko4CwDEsnHeNb5ZA
r9U17ihLwAxFQ6GtFE0cH5cnC/cEpx31YzzzUImHa6oVI90nXbeoFKW8eTjkMef5rNsVnDjpRLw1
eBK+5JV4eLhpIQgzBbWc1bxgTsPuQyrp5/JXEqMVnFvPxoP1ZdqHq1i0FV6lOBacdv2QI8/bTFN0
gTxkKh5aDGsaoAFi7G0k9Bg2prTu9aa7SmUS1qWg/gva/mZ2MP+X9svSfuhO/h74O5f9DlBLAwQU
AAIACABEqYhJbMWrGe0AAAD8BQAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRl
cl9jYW5wbGF5X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA7A8SliwPEpYdXgLAAEE9QEA
AAQUAAAA7ZRBSwMxEIXP9lfM0V5k00trEA/uHixUEEQUxMNsdpqGxpmSzCr+e7PiSU/rngo9Jsx8
7+U9SEMOYAULY01lqyXQRzaVuYjiMEJSl+ggSQP7l+XlwrzCVUNt768tZOLujnJGT09BdzUqeUmf
Fs65j3E+a/4LDhx0ID4UeBBe81YsPN/X4ISZnJa7MvOOMXS/RFZj3OuP+Y14XwZuys7eQtmLNIWr
mLQW3gbfJxy8focjb4dIw+kWuYuULNTodtRBBcTYFklo0e1LpHnSmx4zpSGwJji1f9Clm9nZfIrA
mMpPbRxtGyfw0YLH/J5fUEsDBBQAAgAIAESpiEmAUOTc6wAAAPwFAAB1ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQJAAOwPEpY
sDxKWHV4CwABBPUBAAAEFAAAAO2UMU8DMQyFZ/orPNIFXbq0RIiBuwEkKlVCCCTE4Mu5adRgV4mv
iH9PDrGx3akTHW3Z33Pek9KQA1jBwlhT2WoF9JlNZa6iOIyQ1CU6SNLA/m15vTDvcNNQ2/tbC5m4
W1PO6Okl6K5GJS/py8Il9zHOZ81YcOCgA/GpwIPwA2/FwuumBifM5LT0yswRY+jGi2TS3+Mfxfsy
cFd29hbKXqQpXMWktfA2+D7hcOuPOfJxiDRU98hdpGShRrejDiogxrZIQotuXyzNk970nCkNhjXB
qf2DLtnMLuZTBE4U+QnB55j/Rcxn8Ijf8xtQSwMEFAACAAgARamISancAivwAAAA/AUAAH8AHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0
YS1zdGRlcnIudHh0VVQJAAOxPEpYsTxKWHV4CwABBPUBAAAEFAAAAO2UQUsDQQyFz/ZX5NheZKcX
20E8uHtQUBBEFMRDdjadDp1mykxW8d+bFW+e7FIo2GNC8r3MezANOYAFzI01la0WQB/FVOY8JocR
srhMu5QlsH+9WM7NG1w21Pb+ykIh7u6pFPT0HGRdo5BP+dPClPsYZ5NmX3DgIAPxUeEh8S2vkoWX
hxpcYiYn2tOZd4yh21+kkPwcf5e814Fr3dlY0L1IY7iCWerEq+D7jMOt3+ak7S7SUN0gd5GyhRrd
mjqogBhblYQW3UYtLaPe9FQoD4Y1wYn9hdZsJmezMQIHivyA4FPM/yLmowAvjwD8l9/zC1BLAwQU
AAIACABFqYhJobl07OgAAAD8BQAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRl
cl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADsTxKWLE8Slh1eAsAAQT1AQAABBQA
AADtlLFOAzEMQGf6FR7pgi5d2kaIoXcDSEVCQggkxODLuWnU4FSJr4i/x4fY2HqC6cZY9rPzIqch
B7CChbGmstUa6KOYylzF5DBCFpfpmLIE9q/L9cK8wXVDbe9vLBTi7p5KQU/PQfY1CvmUPy1cch/j
fNacCw4cZCA+KjwkvuNdsvDyUINLzOREY5pzwhi685sUkp/ht8l7TdhozcGC1kUawxXMUifeBd9n
HGb9lpPej5GG0y1yFylbqNHtqYMKiLHVltCiO6jSMupOT4XyIKwJTuwvtL7N7GI+SftnaX+0JxN4
Ao/7Pb8AUEsDBBQAAgAIAEWpiElqgjHT8AAAAPwFAABlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAkAA7I8SliyPEpYdXgLAAEE9QEAAAQUAAAA7ZRBSwMx
EIXP9lfM0V4k6UUbxEN3DxYUBJEWxMNsdpqGppOSzCr++2aLN0/u0oPQ4wwz35u8B6nJAtzBTBut
jJoDfWWt9E2IFgMksYkOMYln9347n+kPuK+p6dyDgUzcPlPO6GjlZVuhkIvp28A1dyFMJ/VQsGcv
PfG1wH3kJW+igfVLBTYyk5XSKzOfGHw7XCST/Bz/FJ0rA4uyszNQ9gKN4QomqSJvvOsS9reezIn7
Q6C+ekRuAyUDFdottaCAGJsiCQ3aXbE0j3rTW6bUG1Z7K+YXumQzuZqOEThT5GcEX2L+pzFrdQEP
AP/l9zwCUEsDBBQAAgAIAEWpiEkuCXK25gAAAJgEAABwABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADsjxKWLI8Slh1eAsAAQT1AQAA
BBQAAADtk0FLQzEMgM/uV+S4XWTdRS3iwfcOCgqCiIJ4yOvLurIuGW2e4r83T7x5ckNBGPTSknxJ
vpKWAsApLJx3cztAb9XN3XGWgBmKhkJbKZo4Pp+cLdwLnLfUDfHCQyXub6lWjPSYdNWgUpTy7mHK
Q86zSbsrOHHSkXhv8CR8zUvx8HTXQBBmCmpvFvOKOfW7F6mkX83fSIwWcGk5aw+Wl2kfrmLRRniZ
4lBw7PVTjmy2mcbbFXKfqXhoMKyoB0MzdlYSOgxrU1r3mumhUhmFtSmo/4a2v5kczQ7S/ljaL+3J
/wP/ZLM/AFBLAwQUAAIACABFqYhJLxfYf+YAAAD8BQAAZAAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9wbGF5LXN0ZGVyci50eHRVVAkAA7I8SliyPEpYdXgLAAEE9QEAAAQUAAAA7ZTBSgQx
DEDP7lfk6F5kuxe1iAdnDgoKgoiCeMh0st2yNVnajOLfmxFv3nbQ00AvLclL8krbUgA4g7XzbmUL
6KO6lTvJEjBD0VBoL0UTx5fT87V7hYuWuiFeeqjE/R3VipGekm4bVIpSPj0c85DzctEeCk6cdCQ+
GDwJ3/BGPDzfNxCEmYLamcW8Y0794UUq6U/ztxKjBVxZzs6D5WWawlUs2ghvUhwKjr1+y5G3faZx
d43cZyoeGgxb6sHQjJ2VhA7DzpTWSTM9ViqjsDYF9b/QdjeLo+Us7Z+l/dE7mcEzeNrv+QVQSwME
FAACAAgARqmISZdJlanmAAAAmAQAAG8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxh
eV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA7M8SlizPEpYdXgLAAEE9QEAAAQUAAAA7ZNBS0Mx
DIDP7lfk6C6y7qIW8bD3Dg4UBBEF8ZDXl3VlXTLaPMV/b55487QNPIjQS0vyJflKWgoAFzB33s3s
AL1XN3NnWQJmKBoK7aRo4vhyfjl3r3DVUjfEaw+VuL+jWjHSU9J1g0pRyoeHUx5ynk7aQ8GJk47E
B4Mn4SWvxMPzfQNBmCmovVnMG+bUH16kkn43fysxWsDCcjYeLC/TMVzFoo3wKsWh4NjrlxzZ7jKN
txvkPlPx0GBYUw+GZuysJHQYNqa0HjXTY6UyCmtTUP8DbX8zOZn+S/tlafvsifvL4H02+xNQSwME
FAACAAgARqmISTyJRrLnAAAA/AUAAGcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxh
eWluZy1zdGRlcnIudHh0VVQJAAOzPEpYszxKWHV4CwABBPUBAAAEFAAAAO2UsU4DMQxAZ/oVHumC
Ll0KEWLgbqBSKyFVCCTE4Mu5adTgVImviL/Hh9jYeoLpxlj2s/MipyEHcA0LY01ljQH6KKYyVzE5
jJDFZTqmLIH96/JmYd7gtqG293cWCnG3oVLQ03OQfY1CPuVPC5fcxzifNeeCAwcZiFuFh8Qr3iUL
L481uMRMTjSmOSeMoTu/SSH5GX6dvNeEe605WNC6SGO4glnqxLvg+4zDrN9y0vsx0nB6QO4iZQs1
uj11UAExttoSWnQHVVpG3empUB6ENcGJ/YXWt5ldzCdp/yztj/ZkAk/gcb/nF1BLAwQUAAIACABG
qYhJiDcJPu0AAACjBQAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25v
YXV0b3BsYXktc3RkZXJyLnR4dFVUCQADtDxKWLQ8Slh1eAsAAQT1AQAABBQAAADtlMFKAzEQQM/2
K+ZoL7LZizWIB3cPChYKIgriYTY7TUPjpCSzFf/eWfEiXtRiQegxw8ybyQuTlhzADGpjTWWNAXop
pjInMTmMkMVl2qQsgf3j6VltnuC8pW7wFxYKcT+nUtDTfZBVg0I+5VcLxzzEOJ20n8D198GBg4zE
W4WHxNe8TBYeFg24xExONKY5W4yh/32TQvIx/E3yXhMutWZtQesi7cIVzNIkXgY/ZBxnfZeTnjeR
xtMVch8pW2jQraiHCoix05bQoVur0rLTne4K5VFYG5zYL2h9m8nR9CBtz9L+aE8O4H8M/skn9wZQ
SwMEFAACAAgARqmISUgtlD/nAAAA/AUAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADtDxKWLQ8Slh1eAsAAQT1AQAABBQAAADtlLFOAzEMQGf6
FR7pgi63tESIgbsBJCpVQggkxODLuWnUYFeJD8Tfk0NsbD3BdGMs+9l5kdOSA1hDbayprKmBPrKp
zEUUhxGSukRHSRrYv6wua/MKVy11g7+2kIn7DeWMnp6C7htU8pI+LZzzEONy0Z4KDhx0JD4UeBC+
451YeN424ISZnJZYyXnHGPrTm2TSn+HvxfuScFNqDhZKXaQpXMWkjfAu+CHhOOu3HHk7RhpPt8h9
pGShQbenHiogxq60hA7doSjNk+70mCmNwtrg1P5Cl7dZnC1naf8s7Y/2ZAbP4Gm/5xdQSwMEFAAC
AAgAR6mISRGSWrzmAAAAmAQAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jl
c3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAO1PEpYtTxKWHV4CwABBPUBAAAEFAAAAO2TwUoE
MQxAz+5X5OheZLoe1CIenDkoKAgiCuIh08l2y9ZkaTOKf29GvHlyFwXBY0Lykr6SjgLAMSycd413
h0Cv1TXuIEvADEVDoY0UTRwfj04W7glOO+rHeOahEg/XVCtGuk+6alEpSnnzsM9jzvNZty04cdKJ
eGvwJHzJS/HwcNNCEGYKajmrecGchu2HVNLP5a8kRis4t561B+vLtAtXsWgrvExxLDjt+iFHnjeZ
pugCechUPLQYVjRAA8TY20joMaxNad3pTXeVyiSsS0H9F7T9zWxv/i/tl6X90J38PfB3LvsdUEsD
BBQAAgAIAEepiElbswry6AAAAPwFAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Rp
bWV1cGRhdGUtc3RkZXJyLnR4dFVUCQADtTxKWLU8Slh1eAsAAQT1AQAABBQAAADtlLFOAzEMQGf6
FR7pgi7tUIhQB+4GKoFUCSGQEIMv56ZRg1MlPhB/jw+xsfUE042x7GfnRU5DDuASFsaaypol0Ecx
lbmIyWGELC7TMWUJ7F9WVwvzCtcNtb1fWyjE3T2Vgp6eguxrFPIpf1o45z7G+aw5FRw4yEB8UHhI
vOFdsvC8rcElZnKiMc15xxi605sUkp/h75L3mnCjNQcLWhdpDFcwS514F3yfcZj1W056O0YaTrfI
XaRsoUa3pw4qIMZWW0KL7qBKy6g7PRbKg7AmOLG/0Po2s7P5JO2fpf3RnkzgCTzu9/wCUEsDBBQA
AgAIAEepiEkDT9s16wAAAPwFAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1
cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAO2PEpYtjxKWHV4CwABBPUBAAAEFAAAAO2U
QUsDQQyFz/ZX5GgvslMK1UE8uHtQaEEQURAP2dl0OnTMlJms4r83K9687dKTPSYk38u8B9OQA7iE
hbGmsmYJ9FlMZS5ichghi8t0SFkC+9fV1cK8wXVDbe9vLBTibkOloKfnILsahXzKXxbOuY9xPmvG
ggMHGYiPCg+J73mbLLw81OASMznRns58YAzdeJFC8nv8OnmvA7e6s7ege5GmcAWz1Im3wfcZh1t/
zEnvh0hDdYfcRcoWanQ76qACYmxVElp0e7W0THrTU6E8GNYEJ/YPWrOZnc2nCBwp8iOCTzH/i5hP
4BG/5zdQSwMEFAACAAgAR6mISUJOuoOCAAAAvgAAAGwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAkAA7Y8Sli2PEpYdXgLAAEE9QEAAAQUAAAA
ncyxCsIwEIDhvU9xoy7SFEEN4tIsDoLgoCAOMT3Tg3AnyVXx7Y2v4Prz8zkMAGvojDWtNUvAdzGt
WSQJPkHWkPEpWYnjdbXpzA22Du9T3FkoyMMBS/ERz6Rj7xWj5I+FGU8pzRv3L0xM+hNPFSfhPT/E
wuXYQxBmDFpbfV4+0dB8AVBLAwQKAAAAAABCqYhJAAAAAAAAAAAAAAAAWgAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9pbnRlcmZhY2VzL1VUCQADrDxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMECgAA
AAAAQqmISQAAAAAAAAAAAAAAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9U
ZXh0VHJhY2svVVQJAAOsPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABCqYhJF2N0y7gA
AACOAQAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hY3Rp
dmVDdWVzLXN0ZGVyci50eHRVVAkAA6w8SlisPEpYdXgLAAEE9QEAAAQUAAAApZAxiwIxEIVr91dM
qc2RVcEziIW7hYKWYiFXzCZjDMaJJLOI/97cYWd3lg/mfR/zWjIA3zCuda20mgLdc63qrxANBkhi
Et1iEs/uOJuryQ8sWup6t9SQSXaUMzraRufKwap0LhpKL5Ct2n9zBZM0kU/e9QnFRz54OTfxegv0
m9bINlDS0KA5kwUFxNgVJXRoLsQ2f+Am2WdKGz7F1hvRb2gNw2ow+kTA9rXa31co5GJ6FCz3IYyq
J1BLAwQUAAIACABCqYhJugGhvYIAAAC+AAAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRl
cmZhY2VzL1RleHRUcmFjay9hZGRDdWUtc3RkZXJyLnR4dFVUCQADrDxKWKw8Slh1eAsAAQT1AQAA
BBQAAACdzDEKAjEQQNF+TzGlNpKooAax2TQWgmChIBYxOxsHwowks4q3d72C7efzPEaANcyts8aZ
JeC7WmNnWWLIUDQWfEpR4nRdbcziBluP9yHtHFTk7oC1hoRn0kcbFJOUj4MJDzlPG/8vTEz6E08j
TsJ77sXB5dhCFGaMOrbxeYVMXfMFUEsDBBQAAgAIAEipiEnio07n4AAAANoDAAB3ABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRV
VAkAA7c8Sli3PEpYdXgLAAEE9QEAAAQUAAAA7ZExSwQxEIVr91dMqY1sDg41iIW7hcIJghwniMVs
MpcLF2eOZFbx35sVOzsXwcJy4L3vMe/15ADOYWGsaa1ZAr0V05rTJA4TZHWZDpI1cng6u1iYZ7js
aRjDlYVCekelYKCVhFAF19Wzt1B9iXzT/5irmLUT3sYwZtQovIm66+TlkGi6bpB9omyhQ7cjDy0Q
41AjYUC3J/ZlRjbpulC+5a300an9hrZw3BydzAlg/9Xa51eoFCS/VyyPKc0C/6/xl9b4JXDkqBPx
ocJr+1M1Fh7vO3DCTG5apGpeMUXffABQSwMEFAACAAgASKmISWvCXHSCAAAAvgAAAG4AHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUCQADtzxK
WLc8Slh1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtIURA3i0iwOguCgIA4xPdODcCfJVfHt
ja/g+vPzOQwAa+iMNa01S8B3Ma1ZJAk+QdaQ8SlZieN1tenMDbYO71PcWSjIwwFL8RHPpGPvFaPk
j4UZTynNG/cvTEz6E08VJ+E9P8TC5dhDEGYMWlt9Xj7R0HwBUEsDBBQAAgAIAEipiEkfSA1J4QAA
AD4FAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxheS1z
dGRlcnIudHh0VVQJAAO3PEpYtzxKWHV4CwABBPUBAAAEFAAAAO2TQUsEMQyFz86vyFEvMl0Qtcge
nDmsoCCIKIiHTJvtlu0mS5tR/Pd2xJsnXY9zDLz3PfJIenIAF7Aw1rTWnAG9F9Oa0yQOE2R1mfaS
NXJ4Ob9cmFe46mkYw9JCIb2jUjDQrYRQBdfVs7VQfYl80/+Zq5i1E17HMGbUKPwUddPJbp9omlbI
PlG20KHbkIcWiHGokTCg2xL7ckA26WOhfMNr6aNT+wNt4bg5OjkoYC7t9wHsv1v72gqVguSPiuUx
pRk8g/8VHDnqRHyo8Po6011beL7vwAkzuemdquYNU/TNJ1BLAwQUAAIACABIqYhJb6QLqOYAAACY
BAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3Rk
ZXJyLnR4dFVUCQADtzxKWLc8Slh1eAsAAQT1AQAABBQAAADtk8FKBDEMQM/uV+ToXmS6IGoRD84c
FBQEEQXxkOlku2VrsrQZxb83I948uYuC4DEheUlfSUcB4BgWzrvGu0Og1+oad5AlYIaiodBGiiaO
j0cnC/cEpx31YzzzUImHa6oVI90nXbWoFKW8edjnMef5rNsWnDjpRLw1eBK+5KV4eLhpIQgzBbWc
1bxgTsP2Qyrp5/JXEqMVnFvP2oP1ZdqFq1i0FV6mOBacdv2QI8+bTFN0gTxkKh5aDCsaoAFi7G0k
9BjWprTu9Ka7SmUS1qWg/gva/ma2N/+X9svSfuhO/h74O5f9DlBLAwQKAAAAAABDqYhJAAAAAAAA
AAAAAAAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJj
ZS9VVAkAA648SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAEOpiElSW5quuAAAAI4BAACR
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNl
LW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQADrjxKWK48Slh1eAsAAQT1AQAA
BBQAAAClkDGLAjEQhWv3V0ypzZFV0DOIhbuFgpZiIVfMJmMMxokks4j/3txhZ3eWD+Z9H/NaMgDf
MK51rbSaAt1zreqvEA0GSGIS3WISz+44m6vJDyxa6nq31JBJdpQzOtpG58rBqnQuGkovkK3af3MF
kzSRT971CcVHPng5N/F6C/Sb1sg2UNLQoDmTBQXE2BUldGguxDZ/4CbZZ0obPsXWG9FvaA3DajD6
RMD2tdrfVyjkYnoULPchjKonUEsDBBQAAgAIAEOpiEnwT0Hn3AAAAEwCAACPABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGlu
LWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA648SliuPEpYdXgLAAEE9QEAAAQUAAAApZE/SwRBDMVr
71OkvGtkVsE/g1i4WygoCCIKYpGdzc0NN5ccM1nFb29W7ASL2zIh7/eSl44CwAWcNL5x3p0BfdbG
NcdZAmYoGgrtpWji+HZ+6U7f4aqjfozXHirx8EC1YqSXpJsWlaKULw9LHnNeLbpDwYmTTsQngyfh
O16Lh9fHFoIwU1Dr2cwH5jQcblJJf5e/lxht4MY0Ww+myzSHq1i0FV6nOBacdv0JR3b7TFN1izxk
Kh5aDBsawAEx9mYJPYatRVpn3fRcqUyBdSmo/4O23yyOVnMM/n/5N1BLAwQUAAIACABDqYhJnl1J
/dwAAAD+AgAAjwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNv
dXJjZS9wYXVzZS1yZW1vdmUtZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAOuPEpYrjxKWHV4
CwABBPUBAAAEFAAAAM2RP0sEQQzFa+9TpDwbmT3BP8Nh4W6hoCCIKIhFdjY3N9yYHDNZxW9vVuws
LLa5MiHvl5eXjgLABawa3zjvzoA+a+OakywBMxQNhfZSNHF8Pb90p2+w7qgf45WHSjzcU60Y6Tnp
tkWlKOXLw5LHnI8X3cGBEyediI8GT8K3vBEPLw8tBGGmoNazmQ/MaZjjXn/N30mMNnBtmp0H02Wa
w1Us2gpvUhwLTl5/wpH3faapukEeMhUPLYYtDeCAGHtbCT2GnUVaZ930VKlMgXUpqP+Dtt8sjg7x
5f+BvwFQSwMEFAACAAgAQ6mISeV50qCCAAAAFwEAAIEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVyci50eHRVVAkAA648
SliuPEpYdXgLAAEE9QEAAAQUAAAAzcw9CgIxEEDhfk8xpTaSKPgTxGbTWAiChYJYxOxsHAgzkswq
3t71FraPx+cxAqxhbp01ziwB39UaO8sSQ4aiseBTihKn62pjFjfYerwPaeegIncHrDUkPJM+2qCY
pHwcTHjIedr4v4OJSX/iacRJeM+9OLgcW4jCjFHHNj6vkKlrvlBLAwQUAAIACABIqYhJtoAqWYUA
AAC+AAAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wcmVsb2FkX3JlZmxlY3RzX25vbmVfYXV0
b3BsYXktc3RkZXJyLnR4dFVUCQADuDxKWLg8Slh1eAsAAQT1AQAABBQAAACNzD0LwjAQgOG9v+JG
XaQp+BXEpVkcBMFBQRxieo0H4U6Sq+K/t45uri8vj8MAsILGWFNbMwd8FVObWZLgE2QNGR+SlThe
luvGXGHj8DbErYWC3O2xFB/xRHpvvWKU/LYw4SGlaeV+4MX/MDHpVzyOOAnvuBcL50MLQZgx6NjG
5+kTddUHUEsDBBQAAgAIAEipiEkdcQ3C4gAAAD4FAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQADuDxKWLg8Slh1eAsAAQT1
AQAABBQAAADtkz9LBEEMxWv3U6TURnau8M8gV7hbnKAgiCiIRXYmNzfcXHLMZBW/vbNiZ6VnuWXg
vd8jj6QnB3ABC2NNa80Z0HsxrTlN4jBBVpdpL1kjh5fzy4V5hauehjEsLRTSOyoFA91KCFVwXT1b
C9WXyDf9n7mKWTvhdQxjRo3CT1E3nez2iaZphewTZQsdug15aIEYhxoJA7otsS8HZJM+Fso3vJY+
OrU/0BaOm6OTgwLm0n4fwP67ta+tUClI/qhYHlOawTP4X8GRo07EhwqvrzPdtYXn+w6cMJOb3qlq
3jBF33wCUEsDBBQAAgAIAEipiEmCcVVf6wAAAPwFAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA7g8Sli4PEpY
dXgLAAEE9QEAAAQUAAAA7ZQxTwMxDIVn+is80gVdOrQQIQbuBpBaCQkhkBCDL+emUYNTJT4Q/x4f
YmO7Uyc62rK/57wnpSEHcAkLY01lzRLos5jKXMTkMEIWl+mQsgT2r6urhXmD64ba3t9YKMTdhkpB
T89BdjUK+ZS/LJxzH+N81owFBw4yEB8VHhLf8zZZeHmowSVmcqI9nfnAGLrxIoXk9/h18l4HbnVn
b0H3Ik3hCmapE2+D7zMOt/6Yk94PkYbqDrmLlC3U6HbUQQXE2KoktOj2ammZ9KanQnkwrAlO7B+0
ZjM7m08ROFLkRwSfYv4XMZ/AI37Pb1BLAwQUAAIACABJqYhJlceScucAAAD8BQAAdgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50eHRV
VAkAA7k8Sli5PEpYdXgLAAEE9QEAAAQUAAAA7ZSxTgMxDEBn+hUe2wVduhQixNC7oUithIQQSIjB
l3PTqMGuEh+IvyeH2Nh6gunGWPaz8yKnIQdwBUtjTWXNCugjm8pcRnEYIalLdJKkgf3L6nppXuGm
obb3txYycbejnNHTU9BDjUpe0qeFOfcxLmbNueDAQQfiQ4EH4Tvei4Xn+xqcMJPTEis57xhDd36T
TPoz/Fa8LwnrUnO0UOoijeEqJq2F98H3CYdZv+XI2ynScNogd5GShRrdgTqogBjb0hJadMeiNI+6
02OmNAhrglP7C13eZnaxmKT9s7Q/2pMJPIHH/Z5fUEsDBBQAAgAIAEmpiEl6tOsS5gAAAJgEAAB6
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZG1ldGFkYXRh
LXN0ZGVyci50eHRVVAkAA7k8Sli5PEpYdXgLAAEE9QEAAAQUAAAA7ZPBSgQxDEDP7lfk6F5kupfV
Ih6cOSgoCCIK4iHTyXbL1mRpM4p/b0a8eXIXBcFjQvKSvpKOAsAxLJx3jXdLoNfqGneUJWCGoqHQ
Voomjo/Lk4V7gtOO+jGeeajEwzXVipHuk65bVIpS3jwc8pjzfNbtCk6cdCLeGjwJX/JKPDzctBCE
mYJazmpeMKdh9yGV9HP5K4nRCs6tZ+PB+jLtw1Us2gqvUhwLTrt+yJHnbaYpukAeMhUPLYY1DdAA
MfY2EnoMG1Na93rTXaUyCetSUP8FbX8zO5j/S/tlaT90J38P/J3LfgdQSwMEFAACAAgASamISXIB
HNLsAAAA/AUAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxh
eWluZy1zdGRlcnIudHh0VVQJAAO6PEpYujxKWHV4CwABBPUBAAAEFAAAAO2UsU4DMQxAZ/oVHumC
Ll1aIsTA3QASlSpVCCTE4Mu5adRgV4mviL8nh9iYuAoG1DGW/ey8yGnIASxgZqyprJkDvWVTmYso
DiMkdYn2kjSwf55fzswLXDXU9v7aQibulpQzenoMuq1RyUt6t3DOfYzTSTMWHDjoQFwXeBC+441Y
eFrV4ISZnJZYyTlgDN34Jpn0a/h78b4k3JSanYVSF+kYrmLSWngTfJ9wmPVTjrzuIw2nW+QuUrJQ
o9tSBxUQY1taQotuV5Tmo+70kCkNwprg1H5Dl7eZnE1P0v5Y2i/tyQk8Erz4z+Cf/J4fUEsDBBQA
AgAIAEmpiEkoCjI4gQAAAL4AAABsABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVf
aW5pdGlhbC1zdGRlcnIudHh0VVQJAAO6PEpYujxKWHV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1P
caMu0utiDeLSLA6C4KAgDjE904NwJ0mq+PbGV3D9+fkseYAeOjTYGuyB3hlbXEX1LkIqPtFTU2EJ
1/WmwxtsLd3nsDOQScYD5ewCnblMgysUNH0MLGSOcdnYf2EWLj/xVHFW2ctDDVyOA3gVIV9qq8/L
RR6bL1BLAwQUAAIACABJqYhJy4nkNNgAAADCAgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9z
cmNfcmVmbGVjdHNfYXR0cmlidXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQAD
ujxKWLo8Slh1eAsAAQT1AQAABBQAAADVkL1OAzEQhHueYktSXGwfITjuIiKUIgU6hSqicOy9nBX/
HLYvz8+io6ZDAm0zn2ZWmt1TK5TgSsjl40a+w/54fO3wY8JSoXeXfa3jN+6c7dCgu2GHZUyx4LP2
/qzNVUGeDQsD5YlmH1Z8BfeYc8rQiHbzIBfQk/4KKcZ8MtoPqVQlJedsqMGzgkHH6kxhGM5oLdrG
pFgxVhbQOt2gx0BUWJ/S3enn7oS7KYwvLmr/1h22kQ4IqeLWWqpYFOhZgGiflpxG0BplYcr+N0qu
Of+3D15z8Vcf/AlQSwMECgAAAAAAQ6mISQAAAAAAAAAAAAAAAFUAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvdHJhY2svVVQJAAOuPEpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABDqYhJAAAA
AAAAAAAAAAAAYwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L1VU
CQADrjxKWKs+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAQ6mISb5zkmWhAAAANQEAAIIAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1hcGktdGV4dHRy
YWNrcy1zdGRlcnIudHh0VVQJAAOuPEpYrjxKWHV4CwABBPUBAAAEFAAAAKWNsQ7CIBRFZ/sVb9TF
gINaYhwsgyY6GgfjQOGVkiI08Bp/X5zddLzJPedI1ABbWHHBmWBrwFfmjC991MpDIp1wjIlcsPdN
zesH7CS2k90LyEgXzFlZPEdry+FQmEFA4TyaSv7sJZWoiaFzdkqKXAw3R30Tn6PHzzqqYDwmAY3S
PRpggEG1JQmt0gMGk/9oI10zplPoonSaxJdawLyaLao3UEsDBAoAAAAAAEOpiEkAAAAAAAAAAAAA
AABeABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3VzZXItaW50ZXJmYWNlL1VUCQADrjxKWKs+Slh1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAQ6mISc9B4JiCAAAAFwEAAG4AHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvdXNlci1pbnRlcmZhY2UvbXV0ZWQtc3RkZXJyLnR4dFVUCQADrjxKWK48Slh1eAsA
AQT1AQAABBQAAADNzLEKwjAQgOG9T3GjLtI4qA3i0iwOguCgIA4xPdODcCfJVfHtjW/h+vPzOQwA
G1gaa1rbrgDfxbRmkST4BFlDxqdkJY7XdWe6G2wd3qe4s1CQhwOW4iOeScfeK0bJHwsznlKaN+7v
YGLSn3iqOAnv+SEWLscegjBj0Nrq8/KJhuYLUEsDBBQAAgAIAEqpiElGD27+vAAAAOcBAABjABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvXzAwOC1zdGRlcnIudHh0VVQJAAO7PEpYuzxKWHV4
CwABBPUBAAAEFAAAALWQMYsCMRCFa/0VU2ojGxs1HBbuFgpaisVxxWwyxmCcSDKL+O+Nh5VXqVz5
YN73Ma8hAzCFsdKq0moKdMmqUqMQDQZIYhKdYxLP7nsyG6sf+Gqo7dxcQybZUM7oaB2dKweL0jlq
KL1Att+8zRVMUkfee9clFB955+VQx9M50D0tkW2gpKFGcyALFRBjW5TQojkS2/yBm2SbKa14Hxtv
RP9Baxj0e8MnwewVAdvHar9foZCL6Vqw3IXwj+AbUEsDBBQAAgAIAEqpiEkBhtTPgQAAAL4AAABs
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvX3ZvbHVtZV9jaGVjay1zdGRlcnIudHh0VVQJ
AAO7PEpYuzxKWHV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0uuiDeLSLA6C4KAgDjE904Nw
J0mq+PbGV3D9+fkseYANdGiwNdgDvTO2uIrqXYRUfKKnpsISruu+wxtsLd3nsDOQScYD5ewCnblM
gysUNH0MLGSOcdnYf2EWLj/xVHFW2ctDDVyOA3gVIV9qq8/LRR6bL1BLAwQKAAAAAABEqYhJAAAA
AAAAAAAAAAAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAkAA688SlirPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAESpiEnaoGRR3QAAANACAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1l
bGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAkAA688SlivPEpYdXgLAAEE9QEA
AAQUAAAA1ZCxTgMxDIZ3nsIjHY4kR0Wv2apWqAMDOpWpYkgTl4twkiPJ8fy4HDNMSCAv/u3f1mcf
W6WV1HJ1I7u7Z9gfDo89vk1YKpz9y77W8UvuvOvRon/HHsuYYsGtIToZ+6ohzw0HA/tZzX1YyiVc
Y84pQ6Pa9W23gDPnF5MWgpI1NKRSdddJKYYaSBQMJlZvi8BwQufQNTbFirGKOmBjJudTg4ThUinZ
Xh2/x2e5m8J476Ohp/5hE/mGkCpunGPKosHMCaiWN3AoHmMvTJl+jXP1v94cJ6Kf+P/Enz9BPwBQ
SwMECgAAAAAAVamISQAAAAAAAAAAAAAAAC0AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9VVAkAA9E8SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAEyp
iEkgFKJvuAAAAD0EAABXABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtYWN0aXZlc291cmNlYnVmZmVycy1zdGRlcnIudHh0VVQJAAO/PEpY
vzxKWHV4CwABBPUBAAAEFAAAAM3SvQ6CMBQF4N2nuC+AoaV/sGlYTJyUuBiHAhdsAi1pIQafXh5A
ZthOzvTl5NCYiIjQKFZASUbijNJjwhPIp364oa3RFx7xKVXKM6Ko5Iy84NJa541toXJ29K4rTI+l
DggBRyhnqDqDdklY6WlpT4+77ocOz1PToM9NGDo9X/WMHj46gK5rrGF0oCHMtnp7Z80X/YH+oTFF
VmkpE1vSuBRrNKGY3JYm12gqFhvT1G5X2/HXFNsD7QdQSwMEFAACAAgATKmISem5zG+LAAAAmwAA
AFAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1hcHBlbmR3aW5kb3ctc3RkZXJyLnR4dFVUCQADvzxKWL88Slh1eAsAAQT1AQAABBQAAAAN
yLEOgjAQANDdr7gfwLQVsLJpWEyclLgYh6M9sElpyRVi6tfL9vKUkHUhVSE0KNlI0ajDvioFtOs0
3ylY4o6JXkd9qhqpVa3L6g3XMUR2YQQTw8LRd26iHhNBogX6DMY7CpvI4Lrt+fnAafZ0WYeBuHVp
9phvmInhiwnQWrKwREBIOZgPx+B+xLs/UEsDBBQAAgAIAEypiEkyG35TIQEAACkDAABMABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXZ0
cmFja3Mtc3RkZXJyLnR4dFVUCQADvzxKWL88Slh1eAsAAQT1AQAABBQAAADN0cFOwzAMBuA7T+EX
2NqGru16g46xSZs0dR0XxCFLvC1SmxQnGSpPT4uQkNDgCJz8y/Lhs83CKBlFbBRmwKI8CnN2PU6T
GGa+aUvUEqkixMc0m07yKGPpNE6eYHnUhpQ+gjDakakr1eCeWwSLDvYdiFqh7hMK7vvuzcOWN22N
t/5wQJop29a8W/EOCV64BS4lSnAGONhOixMZrV6RrthFWvIdLcni9G9p6Q+0yW/Rgq3xJLDg4oRB
YQjXKBX/TKNokrAxi8NgQ8YZ17Vog7k6LqpqM9TiXbHgWtYoC2+daXblqp89q36tsfhgfh0oCLnD
Em1rtMWZEm5u6B5dic8ercuhML6WoI0b1j8jOdhVy8G/Xq7vYGDkcPmuafYfXv4GUEsDBBQAAgAI
AEypiEmBe0UaqwAAAAcDAABMABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtYnVmZmVyZWQtc3RkZXJyLnR4dFVUCQADwDxKWMA8Slh1eAsA
AQT1AQAABBQAAADN0bEOgjAUBdDdr3g/gGkr0gebhsXESYmLcSjlgU2gJS3E4NfLB6grbDd3OrlX
MJ5EXEQMQfCMs0zEWy4l5GPXX8hW5AtPdJeY7jOOIsFYPuDUWOeNbUA7O3jXFqajUgWCQAOUE+jW
kJ0TaTXO7eF2VV3f0nGsa/K5CX2rprOayMNLBVBVRRUMDhSEyeqnd9a8yW/EVxr+oiFL0kVpyP7Q
ll0N+WoPxd0aaB9QSwMEFAACAAgATamISb6zICIqAQAAyAMAAF8AHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1w
NC1hLWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADwjxKWMI8Slh1eAsAAQT1AQAABBQAAADlkc1qwkAQ
x+8+xdzUg+bDuAWhF1OlPQQE6UlE1t2JLm52wmTT1rfvBrEWKX0BT/M9/H8zmzSZJfEszcZPWbyF
kuWhkM6UZPVu1TbH+dljA405OGktakDm51Ei4kzA4LQ0P80LZuLdu8OvGpVH/eaMf5FeDmGwRkVO
Q7/057oP0lMF6BS1ziOjHoYMRGtqWWEu1RGjnBgL1EbevFEyFek4zeJoxeQpLMImWhJX0r9Kpy1y
ExX0YTDqJHXOMoBU6PxV31iBNQ4hEZO4t7lBT5NHhBYPCC3Cp/NiLava4rwtS+Q8gIbVi6Dlkr6j
T2AQTODayD2xN+4AlqgGlGzPoFsET10jcbhmYFVhdC/VafsP6S7cvcJP4lPzF/Rl5lLqCH/LvY+v
oBMhJr1vUEsDBBQAAgAIAE+piEmjCj60lQEAAGMEAABmABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYXYt
YXVkaW8tYml0cmF0ZS1zdGRlcnIudHh0VVQJAAPFPEpYxTxKWHV4CwABBPUBAAAEFAAAAOWRy27b
MBBF9/6K2cVZ2Ho5kmWgi8aO0QA1ENRpN4ZhjMiRTZgihSHVVP36UHDTBEHRH8iKw+E87rncpcki
iRdpMY2LYg8143GDRtVWy8ND5063vScHTh0Nak0SiPnTJMnjWQ7j81r9Lb5jtnz4buhXS8KTvDfK
r9DjNYy3JKyRcFX7vr0C9LYBMsJ2xhOTvA4ZiLa2Y0FLFCeKlpZpQ1LhazRJbvJ0ms7i6IGtt2EQ
uWhtuUH/BY3UxC7a2J+KokHSEKwDSEPGv+ibCtDKECR5Fo92r9Dz7CNClx8Qusz3sNxssWk13XZ1
TbwMoGH0XdBySb+jT2AcjsC1w8qyV+YI2toWCFn3IDsCb4dCy8HNwCpCa4XivP8P6SH43tCT5bP7
F/Sl5/I0EL6V+/7+AprleTZK4ySfJOkknsMf5HKaJSmsuqb9RkYSPzLRrpiXN4tknhblLNhxfzSW
B6zwbZ6tflQNVeiCD+Sh6kFoFYyFigR2Ifv5x9v1K+Vajf1X7InhCR2glMG4YAmC6404sTXqN/Ho
GVBLAwQUAAIACABQqYhJ4GHhPJcBAABjBAAAZgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWF2LXZpZGVv
LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADxzxKWMc8Slh1eAsAAQT1AQAABBQAAADlkU1u2zAQhfc+
xeziLGyJkiUrBrpo7BgNUANBnWZjGMaIHNmEKVIYUU3V05eCkSYIgl4gKw6H8/O+x10iFiJeJDfT
TBR7qBiPG7S6ckYdHrr2dNt7aqHVR4vGkAJi/jIReTzLYXxe63/Fd8yODz8t/W5IelL3VvsVeryG
8ZakswquKt83V4De1UBWus56YlLXIQPR1nUsaYnyRNHSMW1IaXyNJiLLk2kyi6MHdt6FQdRGa8c1
+m9olSFuo437pSkaJA3BOoDUZP2LvqkEoy2ByNN4tHuFTvJPCJ3OPiH0LNnDcrPFujF021UV8TKA
htF3Qcsl/Y5ewDgcgWuHpWOv7RGMcw0QsulBdQTeDYWOg5uBVYbWEuV5/x/SQ/C9pmfH5/Yj6EvP
5WkgfCv3/f0FNM3zdJTEIp+IZBIXcEFOxXSezWHV1c0Psor4kYl28+ImW4giyYtZtof7o3U8YIVv
8+zMo66pxDb4QB7KHqTRwVgoSWIXsl+f3q5f6bYx2H/HnhiesQVUKhgXLEFoeytP7Kz+Qzz6C1BL
AwQUAAIACABRqYhJ+wAmkT0BAAB6AwAAXwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtYml0cmF0ZS1z
dGRlcnIudHh0VVQJAAPJPEpYyTxKWHV4CwABBPUBAAAEFAAAAOWQzU7DMBCE7zzF3loOaeIkDWkl
DkCpQKJSRYFLhaqtvUktHDtaO0B4elKJv3fgNhqNduebbSrmIplnYjJLs2eoGOsVWl05o3brzh8u
+0AevK4tGkMKiPk8EkWSFzB+Weqf8DWz492jpfeWZCB1a3VYYMBTGG9IOqtgVIW+HQEG1wBZ6Tob
iEmdDg7EG9expCuUB4qvHNOKlMZfFYlpkU7SPInX7IIbDpGPl44bDDdolSH28cq9aoqPlY5iOYA0
ZMN3v4kEoy2BKLLkZPsHevYPobP8v0CniSgikUZJCV/42aQsM1h0TXtPVhE/MNH2rJxN56JMizKf
PsNtbR1rW8NAE9iZB93QHj2BpwD7HqTRwz/Yk8RucC+eNti0hi67qiJeaN8a7O+wJ4Y39IBKDWsG
Bwi+t/LAzuoP4pNPUEsDBBQAAgAIAFKpiEn8A2/SPQEAAHoDAABhABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1t
cDQtdi1mcmFtZXJhdGUtc3RkZXJyLnR4dFVUCQADzDxKWMw8Slh1eAsAAQT1AQAABBQAAADlkM1u
wjAQhO88xd6AAyQOEAhSDwWKilQkVNpeEEKLvQGrjh2tnbbp0zdI/XsHbqPRaHe+2SViKuLpYNDP
JskecsbTGq3OnVGHTeXPszqQB69PFo0hBcR80xNpPEyh87rUv+E7ZseHZ0sfJclAamV1WGDALnS2
JJ1V0M5DXbYBgyuArHSVDcSkuo0D0dZVLGmO8kzR3DGtSWn8Uz0xSpN+MoyjDbvgmkPko6XjAsM9
WmWIfbR2b5qiS6WLWDYgBdnw068vwWhLINJB3Nr9gx5fIXQ2uBboJBZpTyS9eALf+KN+NhSwqIry
kawifmKi3XiSjaZikoyzYbqH1ck61vYEDU1gZ550QUf0BJ4CHGuQRjf/4EgSq8a9fdliURqaVXlO
vNC+NFg/YE0M7+gBlWrWDA4QfG3lmZ3Vn8StL1BLAwQUAAIACABTqYhJX0XkpT0BAAB6AwAAYQAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWNvbmZpZy1jaGFuZ2UtbXA0LXYtZnJhbWVzaXplLXN0ZGVyci50eHRVVAkAA848SljOPEpYdXgL
AAEE9QEAAAQUAAAA5ZDNbsIwEITvPMXegAMkDhBSpB4KFBWpSKjQXhBCi70Bq44drZ226dM3SP17
B26j0Wh3vtklYiLiySDtx2Oxh5zxtEKrc2fUYV3587QO5MHrk0VjSAEx3/ZEGg9T6Lwu9G/4ntnx
4dnSR0kykFpaHeYYsAudDUlnFbTzUJdtwOAKICtdZQMxqW7jQLRxFUuaoTxTNHNMK1Ia/1RPjNKk
nwzjaM0uuOYQ+WjhuMDwgFYZYh+t3Jum6FLpIhYNSEE2/PTrSzDaEoh0ELd2/6DHVwidDa4FOolF
2hNJL87gGz/rx4MhzKuifCKriLdMtBtnN6OJyJI0G472sDxZx9qeoKEJ7MxWF3RET+ApwLEGaXTz
D44ksWrcu5cNFqWhaZXnxHPtS4P1I9bE8I4eUKlmzeAAwddWntlZ/Unc+gJQSwMEFAACAAgAU6mI
SetDCcoHAQAAFQIAAEoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1kZXRhY2gtc3RkZXJyLnR4dFVUCQADzjxKWM48Slh1eAsAAQT1AQAA
BBQAAADVkMFqwkAYhO8+xf8CmmxaNc2tjbUKChJjL6WHdXfUhWQ3/XfXkj59DRR66Qv0NMMwDB+T
7F1khVKqC5LSMbbQRv66sZjOskl2nyY7dsGFvoNPlua8quvdoGVjYMNKWt1Al9EH1x6qza17NRo8
UaT+LJQMGVDBd856LIwKS8cvCBU+InwoqHSx0WRdIOXsFRzoUK8pONqut880YBQ0ylIxG4tsnOaU
iUKkxV0+EdOcFrHtKtgbQM3A2zx/mBYiz/J0nr7T+mwdG3sehgO7pjYtjtKDPAId+x9gOkLJeEsf
X/ey7Ro8xdMJvDC+a2S/kT2YPqUnqTX0wCXJ91Zd2FnzBR4l//nXb1BLAwQUAAIACABUqYhJI8Bi
HBEBAACEAQAASAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLXBsYXktc3RkZXJyLnR4dFVUCQAD0DxKWNA8Slh1eAsAAQT1AQAABBQAAABd
ULFuwkAM3fkKjzAQciGkAalDG4pUqSwFdUGoci5OOHE5R04ilH59D1GpiMn2s5/t9w6RWqlwNU+D
ZRweIdvusG4svfZlSZKhtRuWN9SnGwytqZwHqQASeVYw9mEC4wPmLJ1xFVjmBgjFDlD0BB1fB1mg
FK5Be2qO+nycAHYw23EvmjK/nWYZC22pMPhdCtZ0YTm3/+BULZIoiOLwj3NrzTamun/3sQ40WOMI
5kkyH0WhSqYqmoYp3CTHYaCSJaz7uvkkV5DshejwlC4XK5VGSRovjvBeOZarLM2uE7Z7U1OOrfeB
OsgH0NaQ8xlp7D368nV/fm3axuLwgQMJXLAFLApvnLcEoR2cPgk780My+gVQSwMEFAACAAgAU6mI
SVSPvkKLAAAAmwAAAFcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1wbGF5LXRoZW4tc2Vlay1iYWNrLXN0ZGVyci50eHRVVAkAA848SljO
PEpYdXgLAAEE9QEAAAQUAAAADcixDoIwEADQ3a+4H8C0VaGwaVhMnJS4GIejPbBJackVYurXy/by
lJBlIVUhNCjZSNEc9F4fK2jXab5TsMQdE70qXZ8aqZUWZf2G6xgiuzCCiWHh6Ds3UY+JINECfQbj
HYVNZHDd9vx84DR7uqzDQNy6NHvMN8zE8MUEaC1ZWCIgpBzMh2NwP+LdH1BLAwQUAAIACABUqYhJ
6bmdupoAAAD0AgAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLXByZWxvYWQtc3RkZXJyLnR4dFVUCQAD0DxKWNA8Slh1eAsAAQT1AQAA
BBQAAADtzrEOgjAUheHdp7gvIFWiDqxVlEQSg/AApD3RJtir7a2Jb69MLi7uTOcM//CpM6dgoHtz
hdIcUMO6/vvmy/Umz/LVQp0CC8vrjqhKdzm07WlcPTh4OfTeDrA6ReFb1xw/7dNZhMyQ+RnogF7Q
IN7ZR2ydkZLDHtLgkRClIM1psORZyLB/Igh1bUXCVFf1jkZGQTM14Sf8//g3UEsDBBQAAgAIAFSp
iEk+vjtyiwAAAJsAAABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtcmVkdW5kYW50LXNlZWstc3RkZXJyLnR4dFVUCQAD0DxKWNA8Slh1
eAsAAQT1AQAABBQAAAANyLEOgjAQANDdr7gfwLQVsLJpWEyclLgYh6M9sElpyRVi6tfL9vKUkHUh
VSE0KNlI0ZRirw8a2nWa7xQsccdEr6M+VY3UqtZl9YbrGCK7MIKJYeHoOzdRj4kg0QJ9BuMdhU1k
cN32/HzgNHu6rMNA3Lo0e8w3zMTwxQRoLVlYIiCkHMyHY3A/4t0fUEsDBBQAAgAIAFWpiElWmKCo
NwEAAHQFAABKABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtcmVtb3ZlLXN0ZGVyci50eHRVVAkAA9E8SljRPEpYdXgLAAEE9QEAAAQUAAAA
5ZPPa8IwFMfv+yveUQ9q0x+xFXbY6oTBvEzZpchI09caTJPy2iLdX7+Ig8nAs8JOefm+vOTz/UIy
ny2YtwjZlLFoB+l6I+pG43Nflkip0Hpl6UXI/VmGVlXGiVgAEj0yGLllDKNM5JY6ZSrQ1jaAgvQA
RY/Q2dNBS1CSrUG60VzIw24MooPZxvYkMXW34yy1hGsslPgsSdR4tHRof8UJi7g/9UPvZ+bcmq1U
dYn7dz+VoJVBCDgPHrL/YtT3GJ8wf+LF8GvZ57Ds6+YdTYG0JcRsHifRgsV+7PFkB6+VsXSyJa3p
yOqtqjEXrcsBO8gHkFqhcRVK0Tv16ePy+aVqGy2GNzEgwVG0IIrCBeciEdAORu7JGvWFdAUtuYY2
T0J+U7QguJ7a3LstWny3aCG/W7QouIdv8A1QSwMEFAACAAgAVamISe35h9qbAAAANgEAAFQAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS10
aW1lc3RhbXAtb2Zmc2V0LXN0ZGVyci50eHRVVAkAA9E8SljRPEpYdXgLAAEE9QEAAAQUAAAAvc4x
DoIwFIDh3VO8C2DaCrSyaVhMnJS4GIfSPrAJtOQVYurp5QC6uv35p08wXmZcZEyB4BVnVc63Uu6g
Xsbpgt4iNYR4l2pfVFwJxSR7wKn3gZzvwQQ/UxgaN2KrI0LEGdoEZnDo10Kjl/Ueblc9TgMel65D
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
YXVkaW8tZGF0YS11cmwtc3RkZXJyLnR4dFVUCQAD0TxKWNE8Slh1eAsAAQT1AQAABBQAAADN0bFK
BDEQBuDafYop75plowdqEAt3Cw9OEEQUxGI2mcuFy02OZFbx7U3Uzkq2sUzIfJP5ZyADcAGnSqtO
rxTQe1adakM0GCCJSXSMSTy7l/PLM/UKV2vexmsNITpXbiELJslt2zbDX6WBxskVKpPcUc7oaPON
3pSavYZSF8jOcOvX+shb76aE4iM/edn18XAMVE+3yDZQ0tCj2ZGFDohxLC1hRLMntnnWTI+ZUg1r
8Eb0L1rDojlZzmnA9ie1r6lQyMX0UVieQviPsGcvVXwoeEm/RqPh+b4HE5nJ1I2UN28YvG0+AVBL
AwQKAAAAAABYqYhJAAAAAAAAAAAAAAAAEwAcAG1lZGlhL21lZGlhLXNvdXJjZS9VVAkAA9g8Slir
PkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFWpiEm3EyWlLAEAAJABAAA+ABwAbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS1hYm9ydC1yZXNldHMtcGFyc2VyLXN0ZGVyci50eHRVVAkA
A9I8SljSPEpYdXgLAAEE9QEAAAQUAAAARZDBbsIwEETvfMXegAPEDjRQpB4KFBWpSKjQXhBCi70J
Vh07Wjtt069vOLTcRqPR7rw5pHImxWycDqWQR8gZiw06k3urT9s6XOZNpADBFA6tJQ3E/DCQmRhn
0PtYmf/wE7Pn05uj74pUJL12Ji4xYh96O1Leaejmsam6gNGXQE752kVi0v3WgWTna1a0QHWhZOGZ
NqQN3tRA3mXpMB2LZMs++vYQhWTlucT4jE5b4pBs/Keh5FrpKlYtSEku/vUbKrDGEchsJDqpkNlA
pgMxhRu+nMCyLqtXcpp4z0SHyb0YzeR0JLOpOMK6cJ6NK6Cliezt3pR0xkAQKMK5AWVN+w/OpLBu
3cf3HZaVpXmd58RLEyqLzQs2xPCFAVDrds3oASE0Tl3YO/ND3PkFUEsDBBQAAgAIAFapiEkCEhKv
iwAAAJsAAAA3ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1yZW1vdmUtY3Jhc2gt
c3RkZXJyLnR4dFVUCQAD1DxKWNQ8Slh1eAsAAQT1AQAABBQAAAANyLEOgjAQANDdr7gfwLRAANk0
LCZOSlyMw9Ee2KRcyRVi6tfL9vJypatM55lqINetVm1ZHlWhoNvm5U5sSXohetUnVbS6KXRVN2+4
ThzE8QQm8CrB926mASNBpBWGBMY74l1kcNv3/HzgvHi6bONI0rm4eEw3TCTwxQhoLVlYAyDExOYj
gd2P5PAHUEsDBBQAAgAIAFapiEnIUNGjiwAAAJsAAAAxABwAbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1yZXNpemUtc3RkZXJyLnR4dFVUCQAD1DxKWNQ8Slh1eAsAAQT1AQAABBQAAAAN
yL0OgjAQAODdp7gXwPSHALJpWEyclLgYh6M9sElpyRVi6tPL9uVTQlaFVIVoQMlWirYsj1oo6LZ5
uVOwxD0TveqT0K1stKxq9YbrFCK7MIGJYeXoezfTgIkg0QpDBuMdhV1kcNv3/HzgvHi6bONI3Lm0
eMw3zMTwxQRoLVlYIyCkHMyHY3A/4sMfUEsDBBQAAgAIAFepiEkVM4seLQEAAJABAAA8ABwAbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZWVrLWRldGFjaC1jcmFzaC1zdGRlcnIudHh0
VVQJAAPVPEpY1TxKWHV4CwABBPUBAAAEFAAAAE2QzW7CMBCE7zzF3oBDSBxoQpF6KFBUpCKhQntB
CC32Jlh17GjttE2fvuHQn9toNNqdbw6pmIlkNpmMcpEfoWAsN2h14Yw6bRt/mbeBPHhdWjSGFBDz
XSSyZJLB4G2lf8MPzI5PL5Y+a5KB1NrqsMSAQxjsSDqroF+Etu4DBlcBWekaG4hJDTsH4p1rWNIC
5YXihWPakNL4pyJxk6WjdJLEW3bBdYfIxyvHFYZHtMoQ+3jj3jXF10pXsepAKrLhp99IgtGWQGTj
pJcmIotEGiVT+Ic/hWVT1c9kFfGeiQ75bTKeielYZHl6hHVpHWtbQkcT2Jm9ruiMnsBTgHML0uju
H5xJYtO59687rGpD86YoiJfa1wbbJ2yJ4QM9oFLdmsEBgm+tvLCz+ou49w1QSwMEFAACAAgAWKmI
SQrxpFOLAAAAmwAAAEgAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0YWxsZWQt
aG9sZHMtc2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAkAA9g8SljYPEpYdXgLAAEE9QEAAAQU
AAAADcixDoIwEADQ3a+4H9C0YKCyaVhMnJS4GIejPbBJuZIrxNSvl+3lFUpXe13slYFCN1o1R3Oo
6hLadZrvxI6kE6JXfVJlo02pK6PecB05iucRbORFYuj8RD0mgkQL9Bls8MSbyOK67fn5wGkOdFmH
gaT1aQ6Yb5hJ4IsJ0DlysERASJntRyL7H8nuD1BLAwQUAAIACABpqYhJdkUHocAAAAAcAwAAKAAc
AG1lZGlhL3NvdXJjZXMtZmFsbGJhY2stY29kZWNzLXN0ZGVyci50eHRVVAkAA/Y8Slj2PEpYdXgL
AAEE9QEAAAQUAAAA7ZExbwIxDIVn+BUeYUGkDIUIMXA3gNSOiAEx+BJfiEgdlPhU8e8JVTc2jhHJ
iyW/78nv1WQA5vChtCozB/rNaqomIRoMkMQkusQknt3hczFTR1jW1HRupSGTfFPO6OgrOlcO1kVz
1lB0geywfpormKSK3HrXJRQfee/lVMWfS6D7tkG2gZKGCs2JLEyBGJtiCQ2aM7HNPbxJdpnSlttY
eyP6Aa1hNByM+xiw/U/t7ysUcjFdC5a7EHqB3228vI0bUEsDBBQAAgAIAGqpiEmxwMM2iwAAAHwB
AAAwABwAbWVkaWEvc3ZnLWFzLWltYWdlLXdpdGgtbWVkaWEtYmxvY2tlZC1zdGRlcnIudHh0VVQJ
AAP3PEpY9zxKWHV4CwABBPUBAAAEFAAAALWOsQoCMRBEe79iS23EaOEliM2lsRAECwWxiLk1txB2
Jckp/r2xtRQOphqGN8+iB2hgqYyqaQBfWS3UPIp3EVLxCR+SCnG4rPVKXWFj8TaErYGM3O0xZxfw
RKVvXcEg6W1gykOMs4n9F0xM5Us8VjgJ7/guBs6HFrwwoy+1q5uni9T9nOix7PU49h9QSwMEFAAC
AAgAaqmISc9OKdKQAAAAvQAAACEAHABtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0ZGVyci50eHRV
VAkAA/c8Slj3PEpYdXgLAAEE9QEAAAQUAAAAbY5BDoIwFAX3nuJfQFCiLthWERJJCMIBmvZFm2A/
tr8k3l5duXE1s5jF5FdOwUBpc0euOKCFdfpn6+3+UGTFbpN3gYXlNSPmlbvVw9B9qSYHL7X2doJV
KQo/xv7yaRdnETJD5m+gArSgR5zZRxydkYrDGdLjmRClJMVpsuRZyLBfEITGoSFhapv2RN+NklZv
UEsDBBQAAgAIAHypiEnLwb7+gwAAAOgCAAA7ABwAbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0
dGluZy1wYWdlLW11dGVkLXN0YXRlLXN0ZGVyci50eHRVVAkAAxs9SlgbPUpYdXgLAAEE9QEAAAQU
AAAAizYytDI0tDI11TM1NIpVsAECBaf84mIFOyBQSMtMD8hJrExKTM4GCQaXJBaVBBSlFuXn5Djm
pQSnloBkgaIlqVYKVUBhhZIioNJiHYXifIWC/OKSzLx0hUSFtMTsVIUCiDaF5PzcgpzUksz8PK5o
JLuNR6TdZoYGA2i34QDaTe+0BgBQSwMEFAACAAgAhKmISfBZj9vAAAAA8gYAACgAHABtZWRpYS92
aWRlby1wb3N0ZXItYmFja2dyb3VuZC1zdGRlcnIudHh0VVQJAAMnPUpYJz1KWHV4CwABBPUBAAAE
FAAAAO3PvQrCMBQF4N2nyKiDTRN/2goOWhQcRMFRpFzTi0ZjU26jkLdXcdDB1UHIds50zreVYiTk
KE6iYU/umHZ4gcZXqtigW5OtkZxnjT5UYAyWDInGXSGTdMDa57k+TKHB1f6Eys2ILBWL6gZGl+Cw
7LC2/mzgGN/YKynMQR2R55ZwiaWGd+qKwVBGsh/zx7SzztfY8LUBj8QfY69UTJ7/IsWMrpBJmfVa
24AIiF8gEpF9InJb+79QxGkaFEERFF8Ud1BLAwQUAAIACACLqYhJMM4mZbkAAACOAQAAHwAcAG1l
ZGlhL3ZpZGVvLXNyYy1ibG9iLXN0ZGVyci50eHRVVAkAAzY9Slg2PUpYdXgLAAEE9QEAAAQUAAAA
pZAxb8IwEIXn5lfcSJYKhwFqVQwkA0gwVgyI4WIfxsKckX0R4t/jVt3YyPike9+nex0ZgAU0SqtG
Nw3QPaup+gzRYIAkJtEtJvHsDvOvmTrCd0f94JYaMsmOckZH2+hcOViVzkVD6QWyVfc2VzBJG/nk
3ZBQfOS9l3Mbr7dAv2mNbAMlDS2aM1mYAjH2RQk9mguxzSPcJD+Z0oZPsfNG9Ataw6T6qMcI2P6v
9vcVCrmYHgXLQwh19QRQSwMEFAACAAgAi6mISUKLd2aBAAAAFwEAACEAHABtZWRpYS92aWRlby1z
cmMtY2hhbmdlLXN0ZGVyci50eHRVVAkAAzY9Slg2PUpYdXgLAAEE9QEAAAQUAAAAzcwxCgIxEEDR
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
ZXN0cy9tZWRpYS9VVAkAA6U+SlirPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFCqiEkAAAAA
AAAAAAAAAAAdABwAcmV0cmllcy9odHRwL3Rlc3RzL21lZGlhL2hscy9VVAkAA6c+SlirPkpYdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAFCqiEl6nUAyeAEAAHsGAABCABwAcmV0cmllcy9odHRwL3Rl
c3RzL21lZGlhL2hscy92aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1zdGRlcnIudHh0VVQJAAOn
PkpYpz5KWHV4CwABBPUBAAAEFAAAAO2UQWvbQBCFz/WvmGNzCZIcx/I2GBqrtIG6CNyQgMlhvRrJ
i9c7YndU03+fkZ1Dg08mpTjQo5a337x981CBBiCHLFVprrIJ4C6mSXrpyGgHgU3AlgJb3ywnWT55
gpsCV10zVRDRV3OMUTf4YHk904wNhd8KPvrOuYtBcXZg6y33xIXALfk7X5OCx3IGhrxHw3Imml/a
2WqwPOCHyeV41DMWX76W9/NyCp+ZcdvyD+Qdhc2chElhgdy1CjyxuOd+NnQt+IMGtgfRJ9BVFWQ2
2Ah7t/9oyqvAhskpm+CXRXynphHBrdzZKJB7Dl9ldH11hu5ZB56Rr23TBd1vd18n2rYO+69v2lcO
g4KZNmusQNBer+RhsNJmIyWMb0ruPmLoK1ZYw+oILW0efLgYbFtsslYH0UKJsQxk5PE/Y6n7mA1g
CBSklFDeFZAmGcQ1dU4wCOmwzyiB2joEqmsZCcPx9anI9A/k6Jg4yrP8v8u/6PINlTrht/guwM9Q
SwMEFAACAAgAT6qISV0/RBl3AgAAsC8AAEQAHAByZXRyaWVzL2h0dHAvdGVzdHMvbWVkaWEvaGxz
L3ZpZGVvLWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktc3RkZXJyLnR4dFVUCQADpT5KWKU+Slh1eAsA
AQT1AQAABBQAAADtmsFO20AQhs/lKeZYDji2oxTHbanShBakUFkhUQ+Iw8Y7sS3Wu+7uGsTbM8Yp
oiqqSmmRika+eO2df74Z/7Mnn8VRGiVpnASjODyHo+UyW+C3Fp2HTVUced9sl7NKLjDH6hIX6Bqj
HU6FUmuRX6SgDeRGe9Qe5qgLX4Ltt0rYA7R2aiRC5SAOw52zXyek5aytm0+VFmq1mE80Za2Nx4mU
Fp1LQfQ3EMX7QUhXRGG0F1qroCTcdDC4e5UmYRgOapSVGFCQaW2OblAqNyhQoxUe9y6NDJqy+SBb
WlZGv+9CfgNyu5xaJJVDaw0VWdfUgRRQ56alblgqX+iufmNTWF97BCt0gfRQ3m+Z6lu21++kxw83
KzqHd6eHn7PVSXYAE++xbvwX9FfGXpwYXXljT9G3Tfc1PDj0vtIFtA3ofg/U/aa3dx2kHMrkQj1T
lhnmAAl8zwV45aIwCm5fgvW5xcbYTu5sHCdjwjjWG3OQUnRRdEmcF9a7IAgerzTDdVuQFPGeEJMo
cN6LfqQY8i/FKZT3+zAc/bM+1A0WcSOsQwsZuswaMqVbukx0JPnWBZWG7HgGURiDK02rJKwRomEn
E5IHFYLZbCgvDPffPFYyuic5+llxlMTJf0L5507ozDQ1mqZ5O/hfK1/SCDcKu9URzahCGtupyEua
45CmWqzJJNCdeKile5ILV9SDzt6zKr89MH6UTuH1zqvdpyTQcuvz26rohCqMvSZZ3Sq1++K/7Yso
nynZSmwlpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmTK
B34BGv+9X4BYmIWfUfgGUEsDBAoAAAAAAFCqiEkAAAAAAAAAAAAAAAASABwAcmV0cmllcy9pbnNw
ZWN0b3IvVVQJAAOnPkpYqz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABQqohJAAAAAAAAAAAA
AAAAHQAcAHJldHJpZXMvaW5zcGVjdG9yL2NvZGVtaXJyb3IvVVQJAAOnPkpYqz5KWHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABQqohJBrkYvIEAAAC+AAAAQAAcAHJldHJpZXMvaW5zcGVjdG9yL2Nv
ZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLXJ1bGVzLXN0ZGVyci50eHRVVAkAA6c+SlinPkpY
dXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy5i6pIGcWkWB0FwUBCHmJ7pQbiT5Kr49tZXcP35
+TxGAAutcca6jQF8V7M2qywxZCgaCz6lKHG6dq3tbrD1eJ/SzkFFHg5Ya0h4Jh37oJikfBwseMp5
2fh/YWLSn3iacRLe80McXI49RGHGqHObn1fINDRfUEsDBBQAAgAIAFGqiEls7JHicnMIAH+yLgAK
ABwAc3RhdHMuanNvblVUCQADqj5KWKo+Slh1eAsAAQT1AQAABBQAAACk/WmTKzuSJQj+lZL6OsUn
hh2Yb1lRWV3ZkpWZHZE1PS0jKVfopLk749FJDy53eS353weLGQAzQg/o2VIV9y35DMSi0OXoUcX/
/Z9/jC/b+/5w/s//7//0f//nz+3pNF4249/u2+Pn+Yf/2+ttvIzn395vH8f4X1zG6/14u/q////x
//KfmOXqv/wnY53wfw7+f+zf/v2//Kf//HLwA+w3x/OP6/t4fCW/9h/OX0v/z1LEr+N0Xu6vr+Pl
er5fduPmNL5tb4fv4+bzuP31st39ftnexs3h5Of2eT76vw+/df6kf0fp/DvG/8/G3/k4/Dyc3uil
seXSeJnc7j3s0/FjvLz1t8joMo70/1PVOGe/hJ83P4JfAz2AYfMATLLwR7VPn9vL9mNzvX98+LX8
9X7a3Q7nE9jwPJTwWyJMHOh83R2OfhvPfi3bH7fz+fYODnzIq/Hr4ky1zwxsh8gD+LMwLn7/uX0b
N7vtye/E5fYx7g9bMAOZt0OE7RBiGiLKLhQEy03+1prwh33YyvH2r1t/rre/u/3r4QOdip2HUv6f
lYwD+du0iYNtDtcorVDCJGuI/3R5Psft7+hj41hDpquFHA+ncXv58/bj81/P/5/t8T52F5T3Rqow
aBxwP/pFnM77cfOx/bnZj69b/80m/lt6XUOWEe03Sbt6XafzbfcOVlU+9X+n06VLN4x/nE/nzf78
47TpXV2RZUx4YRGEjG6me3wFiqNssgz7Qgw0nvbjHozC8yh+P6R71AD+i9vl0Lm8ZijCm5aZZG77
fby+bz+98J+/+yn5Ez+OG/4TbE8RXb8qRa0qXkZwkXljb6ZTftme9p/bK9hZm2+x1Fna2kuRaCnZ
ggTVZsXj1n5ezh+HK1JIeTeE/2dRDRHlfhKSzeV+HMF6TN6NsDKr13vqjdjdizE9gMwr4X5C3D1e
v/gPx8PH4QauXtGu0eDEUf66/b697i6Hz1tZ1h/jxSup0+f91r8GluVroLySUGlu98/pHm7ixex5
CkI3ZkZdgs2DNMZJ9yQybyELFp+pWYftwsdJL++3t+3G27jN9f2MxnJuIRWylu7t8dgR7nwKyqtS
pYlpvGyvhx2Ygn1K+QSLt9mdPz4v4/t4uno/CWiifOvCxZFDHHJ3Gb3/8T+D1f3Lzf/9x18mt+t+
PILZmYX9Eyt5ve7ex/39CNX0IBcWR/+H3T+w4DxLzsP/kucXlnqNS42/tveCdzhtg+CFuYN7IBf3
oOU8PGdqXUP5bU/b469rcL9/7sZPbApkEQ22dJyXE/nT/fK9Oxs7LISCEcdQ7z64g5WzKsMf6VSD
6O82N7/R1/iZ1/Txr1y+HG4bKX9//6M5ZvTyhuRBq4Vnkr7k3H8ZNEc0FWAImYcIW+cFPwrCp4j/
NeP295fPK5gHixIUZd6FwCCYUDmNst3u4n/+/eWyeXoknUeaLuK/L8wOkJ2W4aRP6y84ttDDwot0
5X6Mx/FjPCWLUVQwuBuiKUW384e/WLvNp1cmG7wyy3Fwgr0sy4oBDZFJkru37eEEPsmrt/483UDs
5Yf/6PCMt5gjvfg/2dvMzdsOzC3vBg9Sz/NFOn0/H7+HuHO8/dfJtcCKWjf8m2pbd/erPyQwEduI
g/cHb4tPwfX9+Xk++aUdtkeg6Ev8PSw1zMpL29zeL+cfMO7RWaOLcHvSrpxfX2O8Uw/p/+p1/H3n
1wgWpxtCU0kAOOyhEWNMDoIPH//7ZfzbfTztfv15vPodQg6ozWIjo62vR3o/vL33QBRDWdElTtHx
NnRxDWy4w5W03aNLFr288AcQtawDgqZ1+gFe8Gu6AB3CeR04mnQfg9HoTN6KPPngelkyTutbVtUK
HUtcAoL5oaGXg/rpzX3IeivYTs3XttyfwWnc3ZLjGIzv9fB2ArfNmCxPyoU4Ol3YX6ftx2F3TY7i
9Xq+dOdlGxctieXr4eidr6jCej4sb8j2A8wIJEIvJmHWm1Opn69AHXnUEOCrR2jv+nk83GC4pvVT
TlPTdwXSV2yYH5+blcrvmyBXLoIOVm3plYPDzjITFqbNOgieZPB82aNNMeXyiBw0lTgxhYgbxcBF
zsosBGBsGJbW5nAKsABah1k4xrwVqcLfLybc32fHHzSYtzJAWlkDjai+9uHt9vR2RCOIxjm0bP7+
EP7iJX+TXF8sV07Rxup4/tGJZltxaLrDT6gAywvapEPgtN6UzufMNGTq2SCxkxbIM+Ne2MRAQC5A
2lrA3oRabXe7e5zDM5GwyAMFt2JSSEvs9XQ+PQu/soV2S6rJ2y4f6B52wZRtjuPp7fYOAB/uGpte
uSQdgSlQj80Qv4+2vRf9MeYw9/XVy+7hD7wvJZoMU2LTGbXH2m07m1zw0+BcMyZS/HYYg4vhXXKv
nuKHu+s1xYXR8d95B+jjlP4P8W83Pw772/tm++mNxHjd3M6bYdDhZx9+NWZrYvLJpVRFWMOMupBj
STCWnMcKXr0znZEUGEnlWQW4ng38cax8p4aB0SPFEHJaX8ipCItnxdD63DwWD7aET9kyeoUWjGXy
vEKekTnWGUuAsUTed1vMEj0UB0PxeijnOpuFJmXzAoN+Z07XY70cz7vfN6/ni4+/b8H2zXERPEzp
6NmFAbw/G8ZKg+MtK2IR1CQbxONKvVIK1y4k/7CIsa+JGBpLlbEGNgl+GOz1OP58Of+MH01/v/n0
dmTzVx8fH15/UaOG8NjFvKqLIWSIdfmQbuY8Tvgr/D4GtfF7Fk6VTU77Yh7jaY/nMOQ5xAs0Rfrz
GF45vp26g8QoME0k5Zp5ayGc/t7m7+uTmr9/u5zvn1dKx8URYvSSlhEAIW5lYxkxEYAXospENJiI
oCdSbUU4E7U8E2+Cz/cbHsGUEzHhD9dYind/xoBd4NWwspohJr4bIyULho9HlDXxQiVYyFkehp5O
xK/TwsKl4nwpJT5KOHjLnDYZD5TFhYcrwLVF6wL7w8u6IuqsWmKr6HkwuC/T9/RJ67whLEyF6eX3
+8NlTHktuAhdlEBYhGouAtycoXxfpb8eRJ4WD1PEQ8UsmmyPAA60HESw5WtFli8NGCHvggj/LHhD
Ffavv83z4AHi48wkLR8sYPwg/M31fbs//yD3NPqeUUBZVIVhTf82D5K/NeS3jvW+VfTvuvytaH9r
6d/l+VsXbNHjt47+VvTmLOg5m/nbQBLi7PFbRn+r8u9GXs7jt5z+VuffDT6jePxW0+sdFvssH75l
A/2tXO9VjJIiRnINIWi4L6d9SngF2cVrUSHmT8FuuDk2H10acXPZ7g/3q5f9X8eROocwxpTjjbcv
bGdjjB8H7zDd3i/juPke8DLyTsfxXB4v6rfGeAuP1VADyTyxmIud0JE4zvl1c/jwbuCV+naiV7iF
fNCTaJ94GGiiBk07zFxjoN3x8Ik2RKo8RLlf5bw3l/Fz3Pp41Kuq0eur/T56zOef1HgTpS6MxXKO
uoz37fNy9o7yza/t21tM1V++3d63p294xybk1E23QvV2jFwud63l0udPCqYcWoJZ9s3HKdvde8iT
bXx44f2H6+5yPs4xfWtEVq7LwGOQMUkVmB65zokVhURsvnuKvCt50yPCME+muvqSvPp5m6s0HVgH
OdDEKnQLNTwNdDt/bo7j620eMd9+elp9bTLvCjmGUvSMWqJIbq/gDQ3SWxopj1o8vTRSYSsBZfpb
0gXfoi74lsb+hlRBFugqHVkN5yPe8+XbpFPgQC1dW921ONC06/uw6/Ff+789nGIwMiWsyYuX70r4
IS7ncDzAueP7wf9AR50XlVfyHKutv38EsxD+6QBPwHbNU6R6eY25h2aOdYX0dL75/XkfL4dAOUdj
DQuV2RP4to8RBd4slLikrRW5P1I3pbxSSeQytKY1Yrhul8Pb+1dUieoakohRef0/7mlIKC7KfEmj
MFKjSI5t0vXwx1gPFYEv8tJxeoGkeqJ9wTJaccWXazycDiHzmQaD++W+5D4xclJiOZBr65VpZKCf
mGv5PLRJoCc0dCVhpUnoW/s1oRpIR1fIro+5GMiRA+kvDcRIr1eK1vmvxfz6GXK8l0CEJEVcLPaI
P2oT2twubYYG5pY+Iv41sbHkzipoH5d2e9JK0N7a/4DTRSte9mQI9+P8zGhD10KWbHIC05EqsQ2T
dDqfgvwkqx9QnsQSaJp+1pLpKto5Xw8BKvsW49Nvr+f75VtaI7n36ksBKi2hYrnt7VsCdBFn660J
A6TJe+/j7rV1AgPi31F2fwjcjSjnMW0VmKtsSIuavuP0d6J8Fy764NIc3i6Hffzvw99svPvyQYPw
IccvE3SVSqTCKSVbFr9OWRcaBgzfC5O/D/Qmxtj6exLRiZ+r8nlcviqfz5NX9OR5mXwQiKkYY/nj
YO5yNfeh8bmgP9flcx3P4XHu9NdyyF/HdNWk4hZfg31z+euU4ZaPX4OF2/L1EIeYyTeBU7GJo8Dv
y75HMG1yWVbfg9mLx42PymX7MUZFnC7PdXf+TADYz8dEf7iGtui7wU6XIPAyfp1u25/+9nDyw2Ju
RUocJerEZXw9/IzXlfjQVLCdjGK3+EVmyF8sPl6mJKRSkeP2EmCjsN/UjxabnuB+u1wmvT+m+aPz
Mr3RpH6xKNrggDM5w7SXj8PJO35vv9B8bQnUIlYzGd28SeTP2rLQ+kbl+ZK7a4ofJlNBwvJDR35Y
BCFcyDkLGviKh1cfMP9TkEh4NsVNTllrvpQk+sMqmk2JnOWhkiJoy9lEuzpFH3l3NflhMXrp6i7F
iJGbZMvuMjf9Yryv/3suN0vFFeo3/pv4jW/4xjXJOfFgY7W1i0arAPH+Ux+K8M2w4dSXnCX+yeOX
4UfFRm6YtuTPspTviB8Xxzj87PCb8T/M6J+NEUzjZ6X/f3zwv6vJX7Wp+iN+WwLF6VumNor+XZbg
+PhthE7s4lvpv03eQfNjxfJeVfjS4ofBL2sHPpYbseH0+cqU6Q0fV4yy8st+qzn9y1OqJvyyqdec
jpjT0sEGnn+3cqWTXAm/WlokObMWnDDzmyXIn3XCLX52mjELi/XzldSHTir6N5nbWCAZ1qi2VIVd
8iv1N4E+n1Rjlc6nwM/zxwLdQCZiYqccj5u/VfNVoEWSD0q3b+AkVW7zslG0QJevq6Cy3EINpu2G
8m2hf1aKQ0parFKeO35bAtFK0zEFRJKB2x/uES1XEwEw336znrOltU50yqZvS4y6kA8N5KMsuIR9
88c8XH5a7Qih6F/W4YfJT3m10TKnsebN0l4u6W9NRAnTt7yec/zW+MsEVDTLG12FqUVfSagplV1I
h3gwSY7+Zc4sUnbhMtGyxblpy0dR8PQvJ3+JOCZkk7hi4JCUv8PokIrWqomoRX2AI+aD4G31Pm+W
GsAdtu17KPzv4kkL5xa3QT1YM/oK63KTYkmMWqoOpGiHYanh2YNcAQ3P5EKi+YO6E0Ddad6SyWTO
5G/bTUr6Ny2aNu0Tihrau4S0MeTDUKxoDIYfLj8HcmXbMhkM/ze/VfQRcT4Ur7BA79VWGSBVzrYv
0aR0vIqm5+wYtIUMmRUpBnD1XVActLarfOjmNfKiRwsWX0jlSlUGn2W3ORwOyHOxEuyZ97M2jP55
XTy8qv6xdogFvXDFh/ZFTjrAIq+nOugHU5zMKdCYzrTNqZdO5u/UGww95NAWz9mnZbRoM8ehqtYo
9HDDwmFiDVftsDH0ZmsBfxtdZ2VV+6AmI4Gu8yCKi1kA4lq6OQdq07TvZP5Y0TvGTPnlGsisVQlw
2AbCB8k+F7BQTLdNxeQYK+BUu0r9VYbRy6X/WbTTE3/0caMnAUEAwAQ55+jSrM0iA2ZRto+oxB/A
g1Cm7QWUmwiwB8k6wQu4DZK39EdlUwfapg60QEc7QR+uMANwXSS8hJLlvQrGRvClH48CF16m3PDF
rde0tFm0ii++FS29cwA/rgyjwYcYJUpwGWw70puUlt1swdemhBHLqWfRFIoWTa1BDOL8uoFFt5oO
UFO8BkybMHQIwgLgAhSPbEbk/ir9przbJf1ZkR+7CqyxjeskwHWSagkwqUcfAuBLriWcPN4l+haW
ICBefvOoduijLZe/gfP4WAtcB1W8xOUNLmbBgqMViyvMHgJEELloBqDHGFyCjw0D6GFQAPQtstK2
L4L5TSA/adC0OHFvyZBRcQXtfDS+0e6DICDW45EQj4G7bKpvTWPWBk26CqYfgq2orDqa0oilJ84f
by+nb2/ZsUJ+jfch/D/uZw780sqGt1F8LoCPZoHfEcEaED8UByConxkGHLxBA86wq/AhXoemeb4S
ZB2Kn/R4g5NPSRtwZoeFfLgHa0jLhyqe8BKpXVhSFKqp8utL9T57LeTEnQJhIuf+TtDK3bkmdBkV
NI08OIQsO6xxzFKizOoSOuQxVK7OUOPKE2qhkL+gLMSzEXpgq4B04WukWJYjp9DxtndWrq4EV1e1
ch0LDwkkdwyzbVyquEgWuEiuveYCltIbxsVAf8wg8Mi45a0rnFwGFKoMEFb2vhUwoVWItIBJ5lBF
I2NYnOglaJA9DoAMK9dM/RWzsAOaUizRCrlOlWiQFOZtVZdPF3g6vKAkVc+T+gqD1JDCBgVNWpfr
sAT/s56zQM+RQFgvCJYFK12q9hLHgissBRQO8K1fr8D5Ci95wBJm41v1u6lBNA60FgOQQfplWrQk
wqKCcRDAOBjoZUEHXBcTvIyhi1MK0sqGAaA0AsT0QUnugPE3OAQvcFIzrySQgHDe8imrSYOorvr2
4YgD4gBSYZq3p+yCZRGYU7Ly7h7MigV5lsJkqa1KtAw0clYMcMMuGG9/A4aO4v2hyGTMlTD+YEcZ
sKOKWPDsOwjgOwwwF2ZQRFm5LPbBVQqAIcgqS8VAShrhWNzKdiA7H68GqTDHIeQHgRVpkNYxMBNu
rGzr2aJ1AINGDO29kiixyweu2xBHTt7tYDzJhwqG1k2MRABqiBYdXJeB3GHX3wHQbBHpJXhefhhA
O2poxzmzcDkQyFakske/wyA3fGpG9rDgFJkBz8FVGPYi8s6ZFbBWoWCIhXwda0B2Q+OcHy9J5foe
8eS10xGhHYDhlpB3Jx2jLWDEkEH4WhyVZl4EsbpUZbUfIkKmIc8wNTNNvkbpnlmuL1LNzhmQ1Q1g
H2D76Spb1yIppkwhyPZ1wmAFAXvepnVNi0YOlld4QycDb4GvItpBdEHNaRERbYZFyekC6MwuL75u
g35ATCq4f1jnCiKJhp73YBHSaWGe0QpFsw5SBh0klBzBRi2UBXrSokuxAvysim/Ac0vbKtBS6KwU
o7PJneyIj2gt7QwbmLnjRrcJPCWAp3FdgbSXg5fRmqEDZoM0tHT0XkVKKspCCTrdGB0XYNQqV7rJ
/mEa5Owdo0hlPCTPGfKkrWhzcOfoH/BCVwxpt1AfmD4vWua/SkNrOg2taQvOYZaw3uMm4ciBAItL
kJGV+OrLQuoOWk+0EXDEOK5c+IXeyb6hAv60XdIVHyn0GoQ7BjgC0XkBBrUyinYd+/v7INE9tII2
DymVDCAaQ8do8S4JkOnQQzv6mDUttIpFxzf8fxetImKkMZosmdYM7nH56UeIpxhkEOoJDtyfACFq
4LdxQBqSsFhCGA7C8YAQAWNe2OVteql3ccBJs/a9KCltMOuK89yipSEvVxXu4lJv5hoAC/jDuiPb
Gsi2w6EIdBalRO4xm8NylKKyvbCcrosZTDOHEQEu2olwrEMD3sE7wYcKknu8zwaecuqITf845AEY
A2u1ENdK2WYdQEgt+ygEI3quggIe1hurj0C8KQWAiR2uTdOo8CHYVsjSFLikxk8NFD4UZJw1SpA4
AreFcj3rCBg1A3Gf8nUAOJME+5WwIpCxZYCMEzgxIJVoq3y6bUZeAC1elU3YVbUlSiO6Nu8h/yqY
sQAQSvG9wJqVcYAJqGB6XFP7VQwU8Dl1j2IqAbhuXIeVs0WFDIzT7m4EnhCT17UUwRC+DMkiUvlQ
IVAMJySSD63aiYQCjwMPV7Tdj8nfG1AGUwzAPMSyWOAFsCVOptf0B4EgI6ehJXebLSxgZHT2JLp6
wDRZ06GmYj6+4SRBxu+5X/IepgYAPujF0iFskSk4cViyoa0F+fXww+A+MEOXyApYqMoGaaEjkHYb
OPV8gFoAhWBacYCnOsgntBSRMWOpyEC59prLxTCAF9TEfiaQHhQRIG1pIP/ROAeI8dGFANTYqjzl
cZM1ROlN8Ymj78IfoEwAKJaIbclOD9/aDqzn6PAFF9TwkqaKyrZBJQBQt+AU3ISOltelYgtZjHZF
+xsEvi3BaTOJ4u8AcByYa0Gnia5FxywDXQ8ba3dAJm9gnZI2kBXnhFtYAkvww9b2iP8ANq34oW1+
CcCnONGkIfItJPYqq+4fqh3/AxqQGNqweI52DFCOqkflAWUDVWrOtsADgBMPhenVrknjA8h9lGsU
X0q1Dyod4EODhC40jLI0I/gLOVeMSrUlzDNLkFDkVQHyksqfU1RgqyviRDNTBPrDkM5drrQCIWnF
TWWttBqztGDywdFeTvQ26GDFDMBTiQX1IDJ0JFEk5SBAAXLlRbNl+mJGxsHPKny+EuQSNNGJJ3GX
mIasSYuZ+EBZDtJ1iI8GsNMGlBjjODHmHKilkxBykMZBMl7KzAOoREss1GDNbMCwFFJb1nCw5kic
NoA4vWxu02g+BLgMzGAvgAG/gylNUrbFt5AjC9uNyrXNIpx+rBMDhlHBVgQWw4Dcwr4rEhURVa5l
K0GHWEyqxKSPJIrIvASbPbheGRAQESJno7owHh8kkSCfFJD47QWlbgeBSxh8nA88AeD7xEzAC6xx
E6Q7PiXYQOK4sEYedzv4AsjMON7r+AAuJDd0LjOpAoACSgAyR/0FFL4jDPocDUP3x3GQ4hKwpEBU
IFH7QiH+mMAkeQma8hmDu02B1geDcZ0+KACYcgPtSUTFBRyYSrLk2ttLoQRw2bjr8NZQsbdSA7TL
Cv20GmSnZ5QE9aZawbgNaXppJUTlEYdTtnugTBAPKJ22AqK1KKkmOWFdMkoM4kxuaI5sILvQXJeq
TV2Fa88N/eg03qqyRtbEK2iSXNW15LFEPMkiuPbStBCaqYcH+lmjcGCqARnQEWI4GUKUkpIl5dCI
HjhMZzlrO7XaFnCJBwXsGOvYMdRNY0pro5y26MAewCZwBhx5PVeMAMhSG2iCOcqlDQZEpzmTB7Sd
4diy8MGBuk1G5XpTjAqUHZMgeQAvBqvr29sl6gYUulWO/EJEC/qBSgoQpidwaS/ljJcKO2APGa1r
UxM1BpqosXbd5yJfAn7ccEsnazR0EbkGRXaxcwrIl9gONZEPAFWvvA/bJEBY8PGgIZfaIiCzchFd
o/2JQkiGNog8EaNMkDx1GqQ+gnAC1rsC3cgKkQlFMCCTGK0GIEG5odOtClgrIWFLIgTPqfJtQzg1
TnBpotPmTLkVgHLrQGmDfaLEsGK6PHSfjKl9oIUsa3P0CogCdKcykESOWB+1F6WbjRx2ULwkzhcz
oAtqZ3NBX61gAeDm9np98gGgx9zRH0dmNoDLOYf5V4naV1jT6S4E6ua17BRlAMezcHuCkEr9WEkC
lNCqgN09JhZBACTo3EL04EDL7WIrIuvk0WsFDajZMqu/IigL3E9dKKK/VyWZoI58kLAPPIf8+9L4
qgHFGlgvZJzpdFUCkuk0xq1BhMAG1JYs9r0CaJUxLUtRQk6aCKFwU4bJgQL7xR3V2rATJQtQUGZx
wY+QoGwweIygBSQnBGsuQgeJa2sh9DIFJIC5ShE4Cv4LKGCKwSwy8s/1QMAvGc5AdIomtSfyixEm
UTWgf+DoRWoxsIjCwPQxCtO1HiBwCytYtBk6mhZoeM4hORi1+VViaHn06f6C1db949rMAg5sYfWi
QqunAkQSdYmtwysU8pHkBnJGXBjYozcpHaRzZK9wBniJcoA/rkC3AKatRkbNQexpaNPW5+JbkAWx
rFNJwUCDg1VBp17KFo3RaQvJAbBthmYWJhMU0tDO0eB6LNsD7jCzoF2HwJMWWtHNLxJIBygvpufF
IyLXCuJ+ZJ6Afv126NDVgQpQgn6QJf4uYK1YUJiZMB+gLCuOD/F4BQg82jy72KnzN3iPBtfx7RDr
k+gTkmFnRABZNDZaBqYpXQS2SnCophnyhJVrcqmC8UZXv4KMH/n1GpeMGANq5lGxroAP1kC1rKpr
/1Cdh1/3YPEhS5DQZ7BWxEniAYjwtJeC/i+HpVewbYYEWEVkL6MeTiRDXGGDwIdO+QPMespKuapV
Fg+5kdbQPTKjKIKWEyXL1JQK1wOjKh+2yQeC9V7aaBpFi2YMkExYpzsAKGgeVgxzs6Rrc/jETq8H
OkheMqV4u61vcDQEyl42McO5foju9cpYTxwBplKAoLqTdxRHgI066zrdCIChrnqQPla1hcJnoMgt
M50epEAiVPdNLuAuDwyWAcOUaVUe32quATu+SQtSjw6XiRsHKssMymlzZjo9oiVACI2CZa0o2ymp
sKTENCCFJhykK7xp+t7yGvluFwEDr7dqMd+qVxIQtRIAyI2wOYAI2i9qVB1FaMhLC4p9PJkFINFM
gm9jiAAotUbQz6VEcwLYpVp1CKKgm6DksK8mAtt159U1lHjTA+alClSS6p1813lQB7wlVlcQq5YB
BXGN0DgW4yCE5Giro1cHUoXUAwSZXwViZmswo5WBzCyT3aeLDNjpZeUwe7TCoMeEtri4xYAjHsDr
mBL31a6o2m0clqOejw6/5cNgBbHr1Kco8MsWmJfUdE6DUlpBTjtVxYGraBD0rKGFMHro9E924DqV
svQ6iz0FDcBL0/Amocb6SmCaQqijB6x0RrQEy6+mAc/DDZCLB1FNaTQIVTRUPEZL+OQKUjxaadzb
hgFtyaqXRFrsHfjCrWZ0TiNutQJ4aqfzMgNufE1JX1YcA6TNOQXr9+ErMapq6BUlY+XQQpHkbNVI
/LGCSIJqGjNA/w49aqWdoCtMGex3wASzsHAYZkNVgfka3Je5/AiQjVSn5BIRG6Skv02oKKBbVupO
1i0isgcAFMCqr5980O8o5hk6HYE7DClLkcpKNggo+QJwxkJTU7OXNXpTq8oTErEa8PI4QCklfIxA
lBCxcUwK1/Av3+ZY7xR8mJdrSHwOhAqEQbNOoSjohsg5I1shgyC+pkybBqcBvuetBQIAIvgGQg+j
Om1y0UvzpvOcngTP6RndDjymAMCiJqjMKYXaVSPkzrRNeMkQAtdQEVSMnAUC1TvWwDfmpjaEoAxn
hRG5Bz4qwHmkgw8aoBIeQ/UUzp3BwWaXMj7bzH2D7vxcStBIIFhU9JIBB4V4AbkASA2znfsPqp+Z
7hCbNFBbjujQklrV0iUiTW1XATw0MKxV58HUTq9qZTosQaaBU4sEKylaIFpMYGo3R92qBchfJ84c
4BoLWJQG4UdpFF3vyKGyHQbiPbEKI0JvqA8gUWlhAbGtunIuPLVSaAmKJZwAmifwnGHjV8lpMC9m
EQDDmjn4Mh/sPiQlbvig0Lsi2oI6jRBwAYjZKtjdG744V+metjcO8rNM6E5fO5BlHRBLKSJboAZI
GwgjcNjzhREFX5FTCXCaihfV4qEb1M5TsZZEz9k7QCAdYPYAF2iTPURSjRV6JRqXwcJmvpJ6I36G
DpH51sB8z7EliOWLo7bsApizwiBkIeRxZq4CFnhVPmPWvXwSxwGQE50CVGyFU/Dw2UaH+8LpZf2f
euwfbEAvHwtDWot0rOVDryMdqsGXsATGor22SoN+q6ZnVwYFfxr25OHN3icxCocv+3DwRm3KWwLA
Q7L+U7HI81Bagdc1Oc4/CtFBEAGrklkHO78j7MFq3GTOobouKcEr86GlD+hvRVGsCg8ANC4ciMxn
iYoBB7V6UtAuvUuFGc58ED3uqwK/awFFxO+WxZXT7S5mc+MBwFlSvT6+4EdXPYiIvv6AHE211yuI
PGhBrCSoU+e4Cs7qHgMW9JgZep39gRphCnT2TxV0IIEpOC7FZcBS1A9AqOZbGwCxVUtW6OObxAq0
e7YOzxpEqIO1nUMGMIIF2Gcki6AE9wDhQNTnTlkD6DEMQuPcMZq0ES0yaFGlBgQTwZarRoIQwOFW
de0Hc2ZOHO2ND64dEGeTBnLTTuBiUJCoZayXcd1CGm1BIIOMSN5IugKNxxR8eQHZYmc5rO1GVNrq
7fcGr0b3i51N5aSmxF6j4xzIgErRad/Ya3VvJAc3Q8LKUqkH+Lgx5FxTxdY5+wIIiUZBAHWqWEQv
0XVfRQGrVmDVqSEZEDaObwkCnaXi/aQmAtqVUZDcC5Mx0jBcr+GdJZA94h3oGWQHmVCdh9LAM8mc
NQncswdHY88WSIjFos0ZqD+UUBnJlTISjeQRokRK2MEAPkDDTae5EdBDjIKAsm0GtTyrAhX9AKSi
9E8zNCgpAtpDr97tfXiPTqG28UO7GqEUxANOg7KwMhV1XjGrBDtbYz8gnWkdbKOEHqFXJfha4kYT
qQASqSkEJk15gFM24GHFAbfmc7zzYBboRViRv5d7leukAcYteO/dX5BxGjQs8kLgnh4sLFqGO80U
fLcBvWPrlYZa3F3ZRm9A71itMTeQD+AlJ647GSvUIaK0uAmArnwM+kDOu6aPkc4uencY1V1r3J1C
kZd5fk0FvTu8JJ8+vn2Fuva3u12FSkJAAqvfQmm0zYb9SB1Rx5TDY8BoqBjNK9wnJRaADWbgZecY
LKLmRbpTfQxEUhTuB6G4AMW/4hUvs+WxEyN6hMngV+sQMZHXFU2mSS0Epdq88DeXtccF/gBQ5upl
w8eiTWDUrIbWBfFs3ICCDw2NqTEc9C2aPXjYP8SyDssf1CZJhVxhwKVGyk7jRIopE152ichvSIDo
ehhgb18LEyGOemtvTuCg3D5oTopfSB4GDZLzClfIaoGqLzVOHBk70FlyHIzz8ukS0svuO4BtHWhR
F1vjoRcGGEzRDZC9JXBxLXi8ZqBeCU0FshIyvyRUHZ1O6Aw/LGgRR38QsKGGQCatsizNPqgM9CNn
juBhzY+67xE/F9S4J4kegLq0wBBL/MaQNM0oIDYtQoTiVVG+fLSGgPpZfVxZw4qxBnqt9BIYFtxB
hhqZR6IsYNlqC18Hhcwc0SQE1aJBO4ZCwadJHPLuqsLvFucUNZfR2tCPx6aEMfCBuYYWXMMW+ejZ
awsLdKwcaAYGfjrWx8PNRxDSo2SIl8foqhEmoBUUUoG33BmcLncDbv7DgY/DhcPFSMA9Egog4Qo+
gKpdM9EzuVaW9qwYXTkZUw/gCgwDeOOOoRdbOHOd13XAE7WDBp3ZoiSC7sEO9QLXMLIyBrxgGpMN
iFNjO3RgVNGnpGvd23h/aO3mBOwpY3E6zDADZwxbJUtO9JKKLWngs7qcgY5OAnd0FbrbfNcCfjlo
BhmJiyBOkETz3bheAdc7dDL/CkTcxsGCS9jBVhF7lcv5wO01zcr24mU4GvQGBfWh4gG4GO3OaLWl
pzFzgQLI6J4A1WpQ61uG+x6IoVN6DIhlQ7uZTe0ngLsgiDg9v1IJOLwMFBBF1QG0ZFXj1UqNos4W
Rmr44jGk0jvUUYPD5sZVRx2CCw8OiRN1iy78cucxUAb73sLHQLUQ9IN+DHOeudWA8qgwf18zDXLu
BoOTbID3cGILWJA3B30ZGe64ILRpZ68T41pCxrUBm81xmyfBLcyaK/jowCCAirdPlMUWgkY4dfuY
EgJBuwNF+bEfPeq7NNDsIY6SyK6g30Rl/ACgAg4IgB2MQlQgFF+/Tx1rEEF/Kytgr/CUh0Ik4gGQ
iHE9gKji5+ZTbxwEWXz1wINqJ9AAp0PbDqKEAJbB9bJvAAnjohNEgNhSDxDZgbUxUgq6PQ/HKZaB
dRrdOODv8QESvlFPEWstbNwCHwQyDgB/Cr6cpqv8qms02IJETyEhQIMfrMLrNRtAbB04FGmNen+7
BfdGiEWpKc0GMabNI2GYp1Dlv4M3wdpUbfg8lhSdV8WB06Wb8HlKyNJzrhL+jxWTmUYGChCM6aXd
Qf2hxr2TAFrCWSWQrXaPqLhNVTHxg9OV2raByjiD3z1EXQylULCGEDbvldUL7I9c6wGqHAc9xdjl
HNSZU5ShGFIz6FbbNjSbDxhVL9p+KwFUa8ZV5/UN1DccQAGpbQtwMgfXe7wZpGUZ7usJaibYoPF7
5uipuGHAXcxg72Lp+koE1ddrTnseGmPwvHK4RP0GWSmuAbCpMfC9BAONi0GeHop+hspQPPSpiSEM
oDvzAdJ24ZtrijFYuqkQBKIt+Rp6yoODvn5Mgcq60IwIlCEYAfP+aKON5a0seARraVzMIb3jcHmI
7UCIoNZqqHq2LA4no4BokyzQVxzH4kzS0FZKB4OiFpQXinEa0HVVwuOxOSbv9uP2v6061sUA90HQ
E+ew4qDKN8YNe4xrgW2AL1Qr3FdDS8BlTdAH4JNxoilH8Ifxiz+atXmCBTQBrtZAND7IUo36kKle
3gMU9XMDwU/kS+uqqsMse4HMXENQZErxWDIXBVgG67D5924+uIuWZqNr+LAvrzogtLM1A/A7BHgz
LJGGUaWBgGALpIQaAqMulEFACVWwuyYEmqXUne1SoDrVsvYDPBM3E8SlHLbzQBLtBMPJHpCC1yDX
Gks8QQ2wJDqQlEbkQEUrC54M4zC5XNVcP4qVxoi80vDhLthDQJqB9v1dJxPAegRYYAqtIDd67puE
Ws0ClydSYFEjsQEy0SRE7yxGs9AR64p89wgbOsg1tIZByNHCjsCc7mOaWM6gJxdTMDXGEOSxjhvU
A44G9KxTEC6Bz9pIviSyNwrqEVLqOkgpeoxHkc11aSKN6xWvaTBb62ApKqrJFIZwOWZtx5GXJUEX
kIRJAT1rdKeGFQRnAsAVGndO4gXAI95O6L2lXcJZl3zrBx8ecB8Ew9kpARrzagnVFuw1LaWBhZmQ
5iwZaIEkcY5GCUXX3XLYpXZgwzNdENGPGwsboaKOb4NwnRopUBYmB+RtcYi04JexUMbDFE0Q4dbH
d+KBUdQceLUCvvwilIAgjYBN+eQAsuMC9zGWrgMtAYxYcdYBPcEhEQ+Hh+QFgJaf6jQLWFdCwV7m
CvZaoAoOMkgEmBdGd0rYQTxdm4l2jZUBhNiBd172UKDy3iiqp/BcRAPeqqBs8vK0HEiNDbBs2Ys2
yDMZA8u0cBs1oxGPYeg49aJNOCnwNGhaZ57JgAAJ57ghCEOYvHWwbwF640M6TbP0EooBuvMMBnJl
vRYCnTKrSvEFq35mgCGiHSfBxARUoQdRNG6zA9KYnYbZCvZEN+AF8oKggmtZKdFW5gbWBEg3QMor
bGBgdKf5AXpa0DDdKXyUAH8xmOqHn96QkHBnUG5gIIivs/408KlaQT9xP3WuA+jAoDp634CmKYPs
vEMFRKQqQ2w+ngXeGhmM6MTZwKWg6p9z7RXNimb0u0jfJOwCXZtX0ZAstFO6OF/LRrClvBVxOV27
W56YuqqjhKKVoBBJYuar1LqdOyrmDfQfMJJm+SfOLYDoBWtPe24nAsJ0q3HCi3P0VpiAiFWyyYA1
W6UlHmqSUn9U8Paz5L3XZAA1seoL0iyl8q4lqMgw2O0E1RyD1lSr0FnxAWhy4BA9sr2mataK9suQ
c60C6gvEgaeusYByM5CJrwgGwdIbiWlZiJiguIQsPxRqO41xUVQxoISBigSlVKUAt4JD+GpguLYK
MkA13RhggjRABklYCLlz3PqbM6dgc6E3jdDCqrkXW7dZTpEcSNhZ0YulAIXNEO1qisoHfTrsAAk3
sGGWrlqxyEXiLFcd0Te5ylEu9mv20EEaymogYBZWs1iB35bVCNNlvMPLGEBPolWV1bJTl/JKD4qm
1rBPMhsgK8PhV7gYesXTuTY6Wh4uAv1nJHjlleEaCW4tbOSYQikMZXc6jXGQN+SS9btY4uahkqDx
lOQDQNIlJtMid0oyTev92NQFvanBcKoGVA2UopZgLKV+cPFpZQAbrodCHnSjHaz1gu1CrOm8fSoA
/KZUj5IKXN6hmbAom2XoeMjAt17RXhkt+o9jwNcxSnqpTonHth3ovdeqNuPBOKrOU8CuTSfNYRgo
aIe5XQbBgfrZFLPW19mZQK9ja1hiEdxkEIlVzGHRwq8A89AKDC2AoGIwiMtqcLPPQUBPQiEfRtte
cboDACUzHXIYR++QDJ2ubgPoLs9t26gX7i/IojGFnxID1mko+c7mS/WoVlxz3MoSkRa0I3C+7J6D
nZYDKJyeSemoGSWjoavU/QA8JaIJUKW8VQMcKC07D04KgOhqBV8ig71heOepex/KA48TdN9Fj4JK
2YnfAGg2sF6PRDBhyeBbDQqRtRUzrV+eV0u/RSg1/FHUqFAy2yGHSpA3NBzqWkQeNFSNetF4gLSk
WQc+Bnk7u6TiPbqH4Hy5sPjVRo7KSgT9fPJUDwOMsULVQwJzS4QewKOeHNW18apLU7M0zcHezhYn
7UDOrs6dLcKHAmWg3RJ08+3oyNN9dbQEHWqiTwwI8YMGz2NamOG0QkMyDYd5s9WTr/oxugZHzGX7
iLNJBLaheh+7OqZUIkoraKYBFqmhW2u0whGPBNXZ2sLnSxE3VFoF31pRyI03okNoBSraEmF8TsSg
tATvPTMP8J7VK3Ou8Rg4kMiBd9rYgoRG4VbUMVpC5QzqrFq//yOaHhp6IkaCrr0RMAFdsweJX68A
NUtVB/zH5ooSN1dUA9G3b7q7EFWrAMw2fc+CvRKddLkAjoPmdC/K2GABYPNcwKjUIXidDe0qq1zt
AKqdBaDfoYCDV8IcmxSvbRFtipTstHjr9O4wgoH37TVM+ZiKbthOKgK6Ie8IB+CTsUF1Xg4DTSHs
QL/wlpIQgGht6TkzXAnDraPjYNV56F0sLv9j013Eode8hTlELGvo0KSrx9ofic4JdATItrOdvi4A
oVGATqrxK2tGdBrnA5CV6vGU8QYN8AbZpo2UMhoAhFnZqd0DfBUn6GbBMWcLwIYVK8A+olkAYbG4
6TasC7Md2i5YL3wiPj93huBh16vTAM2lrKZp9Bw/MuQ6zF9YlcoMw0EWUrZS4Xon2EZQCwnePJSQ
CC8Mg+3D8DtlppOJdCDXzAUseEY9z7TmwCRK+FyAdBy2eEGhcN0ZcxXOordCeN3wrPWgJTJpmg84
uQ2a0tavdT1GaBa6DrYK+9uNjoFAOtXxK4HWqsP+FrEHHa5t9zkrMQdoQU8cbbEOIPamHkotDHhA
9B0Q3KhhmtRUr8QTTU5A1G8ULv0F9QJawtJf11PxrksbA6FWAQ4f36EQkFrIhtX7hA16DEizVN5l
q/Wpg286ENQaEaMlFP2rtjucO3iDFByIlGL0DkoEKi+t5XiksAVIJsevnDkYD0sF2Veoy6O/jJps
eT5hjkBTK1D9nyA4cKE4w7XlKIJQmOeGOM3MQNYCLBy06DHIZEoBfsDAw7ZFDYBYT2tQVBucNcCM
ceidUgcJF1aBiraYkQf0q+pNyIeqH/zmJzcE03Z+5QwwfJ1smeP0PAN6aIh36n9BtU4P+OegEwYX
ZEvJ+QE6gGlRHd6KPQX3v+pZIB/fk4SFjo7w4EN/eFSDYSArDj3ZUTeVIqtv0SvFSiN2bcaXgKJm
HS4O+G1JWOJCZQa7JjWmA1rABmQM3H2Ln5fgrlOENoCElhjasXxZMTAu0gIgIHbhRdHl0IkQQVEq
R5XDFr8wz00ruMxdaWjg0xAtXtI9RM+yCYdpJRBb1hWf5QFfigAAoLkLRB7KRQWoL0XWt8E8uUfh
AhleJgfaskSnGCTFSk+cRpmQxARqKRVk96OsmHQG6g/U8kA6BTvqMIR6SIiLK/zEImoeHPMPL/A5
yyZNdHrHh+4faHEjD0jF826HpqsK/C53agq0gWgLQ518HW+b8mKNQX+HFW/bNB7VAaUj0sJkHrKs
2rnOG4uAF6sLHECl80AKciBK0PJr2MAq6h4OIYHfZFAuUOPcZ1W+0WTFgJYpgnihtcA9wJRLB7iL
EfkEup56jWs2xzA8FqB8n8NWHAND/BLc6lkYVGRjYMxjHIcHLGEPcQdheYW+pV6GzL8L8pclwgxV
ilLUj0wg/4EN2D8EpdxVBSnRdESD5GW1ybbx3pqDhGkL3yqFyS3Wq3kAAgl70+U2GuiVB8kgpRbx
gPmgFORb4WdlFWzkz1DDReUMDAQsuExWibZnO+f06UZi8KU4i6EHTgBr0TjAp4g0fiVVwvfgOaaI
ghfMBstBVkzih7lU+yHsmQ+raQ4QKi8xeLFUyVa+SAAwUYxmH0QfHLBatIJwmAHC6JSge7TGVBog
LHOG4wYGEHGmCY3VeQOQ6hpWWrmAqgENLJGC+UpdqFIBnhKPXh3wFrjCLg4DWYe66Wi7ehGwJUpg
F6kHw0M9SyddYqsSfdvkTKDHpZq6eb6BdEZMLp94ejQICrj91oDWSBw/8cQcfoYa0B0HaA8kJCwq
AXodc/zgWsW+behIg6EdW/H3h/p95HBCKGcpLWxihzKlxsnem5bAQ7IAAk+0owHg9rq+wXKoQFb8
ZshgaZVjOsC7whYBtI4alAPkLgUBDq17BEsgU0wK3CNZwq6hBp8veCicMUxZFKgARkviBb/4pmXH
w2GCRFdFpxU9EGcNCRZcOfDQosRYEFNKgasQSjpAMZiS4NFBCyvgrDBtiVbdZzj5IAVZUzplSEFF
uGqy/udwjiZ1V7f3ofY2tkwByaQqa9/OBwtgirTB1D2QXBmUhMVRqBTEVJkd10zco6pdIhScc1iA
tusUZkd4NwgodtMhwL3ghK5Br2dE0jAoVRianJBE3oF32AkLuxS43pOlyqCSHwOZEragwQTyDt4L
ELqDyYCtVkTv7dwg2QHoS8EiaVjXQT3cUYrYQGZHEYyBfJNBwaA02AN3wGNp9+CI6XO6JtPJbm9S
lLAjWs2x0HCSpuwt+9GwRz4GQEOYhPkUhSjdinH4BC5Dcswecqr/Hr6+7i7n4/Fle7nGr/I/bl7u
t9v5dG0OyCNvIZx1fC+6Au9fttfDbpNHob52kXAdP6624XJL/+3+8H3zfr4c/jifbttjcwyZ+xZb
t1QJ4ePv4+V22MFP+fxppYLDp9uX6/l4v43g0yH/6iSni33c7C7b6/vmfNpcxlf/7TvYQZc3oeSL
z37yr8fzj0014vnj5XDa3g74PGQ5jxRV/ttyYh+H63Xzcb5fxw//I5v94bp9OY57esSYpo0jqlD3
qKSqRhy/j6fb5vB62X6Mm9N5mu7h9EaPFzm2ab2lSu79sN+Pp3mg1TZyWoDy3lXVPuXrw+lwO2yP
m8/z9RD2DSwyS2KVyC4DfY6XXVjo53a/94tL0wJLZIvRhtVox+3lbdzkI76Mu9v29HYcwfRkY8D5
6J65aDbveaGBlgn5W+ZXt+1sUb7plQksiiPI+rzPfk47f2v9mGCP5OLur6c0fd/b6cHCc9tftm+b
2/v942Xz43B7n3a+Ozc25FGL1S2jXsejP7LzBVxDXuQpPhcUQvG+oIN15hkF+F+ulMTufr2dP74w
mmiI08MgtyBdm914PNJyle9yZenXA139tTn4ozzfb9fDfpzWTo9ZLErQz4zXGmzjrYMX183LzZ/l
r/EC1pjVVkgRy+EZpbX58T6OR3CqqpyqZKmZe32qlcK4xB+5hln6dYNpZlURgr1Jtx4P19vL+efX
lT+fBwvxgbXra/7jFBZ5GU/78TJ2pYTZhqKulGvav93xsPt9sz+PV7+Vt83L8X554oLxxtC78+Xk
Z+X/28Mf/q8/Dqe9l22/6t3t8B3IS9GNIrqc62V/bi9Bj4zbm9dLUQ34M/f/8gn1wlxDvtPI8XJM
e3BJtrR36zRSoHGaXot+bneH2y8gg0U3hQHZYNu3d/v5OW4v29Nu9MJ49gaMHjQ9LVScuPXM8t+l
KV7GdJ97RjCfceWUU34IOIK8ayq4u0qsdfzbZbs/PHOWbL3IMI7//Ysf6/B5y66v//soypf7afPq
dY0/47ePcJmbYwf3iE9VA0FcKmZFGHtzvf3ygrL1qivKChqE50GqhnhpkDSr7X1/OPu7trt/UNdr
mo6dRwqpLp20yuHkh7qlCV29osMLYvMIVTpwupLewF8uYWP8/w7eUU4X63w57okwa1qezntU8ORq
j27nz7RH/geOv9BAsh5o8voW+/TMbic2ftztYTWdNMrn8f52OD2z3an0i6XAObaAmWU0jBPkaBv2
3d8eNB+Vd1xkCGs5hFfcaIC8LVUoVi/o+Q3Ohx9CeWkfRjp8bL0f9Ywgurwo/QUx4mhy+dwqn7+e
3HfvZDx1SxLWEEYKOUOVRvo4/Azu6/Y6VjcFrTAPUrvm049vvKcY/7r9vj0kk/GMJGRxqiLCclHi
jLxd/L49HvZbIkidVqgaaul6+Pg8Prs6XSQ7gchhhO1uN16vh5fD0Zuq+OHsro/7Q3Ibr3GKwZ7f
xp+3zdvo/9bP9brZ/vTzvge/63Z49eE5GXQMiZprrF0e9eSW+vj847R5H7fel7kms77bftIOUoB2
InUmjlclDreXw9a7aS/ezx33L79iXHbxIuSnmv8v1IgR3I8DVmSA43kbg8TJObh/7qeF3y7jSI2U
OvbGoSoP/308fsYNJD+LPPf0WbAZpixp8knzzx+Pfk0+it1vKVM2pH2ZFlQcng9/qtvo1HmbS36a
GpSlqQT+2BQMnI/+ev+ggohwyPlQKlg2rmD3Pu5+D35w/BsCowgj5AFKv4CEv2z352jMfdTxevHu
0Wn8gRXDkJ6xS8MFeopLF/pj6+Xrw/9Xh9nE3G6Xw8v9NoL9yEdToUspdix6IdyS/fiTPA9eBtFB
3qZNXd42cilZpqoYO7hL5wnY29wON3+ZoIynF8KLiOnqFnqJ8jLxKyhM0vmKFy+LRpWeuX5/q+4d
+a0o3xa3Of18vPWv5/MtqEa/rf7yb7YvwRV/Oe/pEfXQEJgUFXkpv59uk9aid0QvBuBFZP28Nv6S
BAsLsVP/mTaNPYmDnLzaiOK6vd/ezxdqAOkWyiediw88vV99CziHd9UDaOUX83k+0PLOnFloxSTw
ycJ/bD/TJnshPQScyuvEcYsPO6XD03gFwk86ZBJ7+sqIoguCuCubJeXtcr5/5nsTJxWFl5abfMoV
FWcyTjsfEJEfqmx1Ku/Hi9f9MkaxeD2M3kVJN+d+IIdh+XiqWp4JxbidN2/H80uEJg8VFuGvE63m
OMsrCrKjbZGYIHKkoCmzsKK2afXihj5hICoTWlTK9nQ+/Qqx3IQtbF6O593vXmii0Tic7tHKe/vs
nZgrlh7duBQBDqHVbGQUJH3t/9Gy6pzfD97puOzeaVUg8+/F1HV1Ca9+R3bvUA9o3dAj4YN4SZKm
96oxOkA+En+jRS5y+4oNrKy4l7oIVEziks0OvR1ZKZTsPe3iYO+m5Qx8Xs5vQcdQcHPUKI4y6QnL
KXKGhaF4V2tYItygj+3vo3f2vR96hKBivDrlTuvsJk1mNPusk2cZnI2nZNXZxg2Py/w477fktkq7
kPG0rT/EbhPU3Cliatvj7n6ErjG32SxGltec6InKKTjfPVXLTMNx9Pd4493FbYX9ZkXXHbGeUY4/
q4H2h+vncfsrKQdabWcBDpwOpbMGONzGD6zymRaNnT2cPu9zxLo90tNXbOGuJc02i9e0dtpvNrah
uNYCNrnk+8N3UqRaTkGOJp9wOouNqMLR9Oun8+vhEoBl4BqpYjQLw5EwWh9br+BTLE/fO14b4Qno
TQrxPDtwdbRyOIUUAa0nS0BYQP20uoAnxtRcHRj23NLmBb7dtrv3Onon1ZNZeKamcvCDufNhPjgp
znnDPzkEf+3kt/h4OP2+2Z523v+7clpmZcM1X7j2UYulQPzw8YYugFULt01V/uj5NMbzIj2MoeGJ
phsXguHgDO9Hf/XpKDYfBBtkRGun8NGfbYyP8gUMDuhmxh+Q9ycbqmAZVcK4uqyokOeO3obfoxrp
WmGlGz5wbdBpF7jlX9393Xs9+DuIzaVtXLb6dr1uj9cxQGy/B5nYXO8vAZKgRVQtxpscx5+bBODE
u3sdg39FihRrWN3Z0uUTDVj7+PPzfAWubxkpmnLO9MPiOle94coUt2hODE1DBcCAdIoUNVI0+gkk
CPiaj3eO5zfakV4qj3RYn9vL9u2y/Xyf0tWH0/jifcnfaX1vWwaj4XomLds1Y7zsc+HYns6798Nx
78W2OwCrjjxgqkmrLfDCBMd8jB/nyy9vQ07+QiElW2L1kOiTg8kknbBFXoonJfmUx8YG17iXMXqa
XJ7taU+nvGPsn0cIDoPik66LqtWP8Rax9c2Pd++uXD+3O1pFSNUIuyPO9Hq+jIe3E0yjRnen5UgG
w5cpKpvta4j/k1iT4/ClztHIz04h6obTFr8ERaXT2ToA8abx13R+5P0oGrhQRYs3CUDe8qGJ7I0q
4PWCdo/JR//X4E/St1M3fv18Ssnudy8kx/ECLoFubGjag2DWr/fPz3PIpEawhpwCX5ggOZkgv4cZ
BYHfM6UaDkalMUkNx4oxzszGggclQLmfQI8yzhfu5CI2T8g9fYzF1WNLjK2kfqFPYhuOsBecw+f1
cMW2vwSLAQG2kx39maC1ADGGWSQvi7R8vNyCmHmZFPPn4TS5Z9hcFdMbUD5VnV0g/NzO9IcNv+U0
vm1D2L3J3lSmayS7i2GASCR8UJphB4MXNaOd61gHr0+7hZ2xteOa9nm7Q+GvLe5dSZHVKaVNCBlD
0gnc0mUwwRbeyQyxP+/z8bJNVf18UsP70avhj0Ok32TALrCNTmnr45qRqh+GxXrT2OPHpzen6Wb2
AVHGNOXgz3yjwIWawxdSLbU8qYf03zZdsQCEkaFuGWhILn+lHfqRLi+OmIqWWIlsir2fe7y+bL2q
9uYLb0pxw5iIGc6GdF/GpK67e8OrlM9aaY23QGuKFMnTdaQxRbZQ2mmEz/Pn/XORsqGhN9nQuKd0
/b9yzKwEExUcAuFr2iXIawqZFz25TAnynpw45HKxKpYrXJQsuNFlmwEiUmpFA5uazej79hp3mL45
LW0TJ3COGWdsiNjiwoh1/moGLopeuJx/0GJfMK7qXHbb03d/5YLcR7Gf7yPpptlyuiG9JyYWWcLK
fKQ5PudOr+Ai9hCUxRX2goaSqVkknU/3dL6AAz5MTt5DumaGyyPmnHVJRZqYNW40FjRWyypDLHJS
O53e4bQ7X2JSbHc+el8fSzEvmmadpo6nH2MHfxO8i0VbgWYqNMR4H9vL7+MlflP98xT6xUNIHMV9
ir7oUw0yNVc21I53NWjgth5CsudEOVHhuzxIEFM2y+m7D3B3ISQ5v74GlHoOK2bmeJDc795oh7/1
bvYbNXypvgg57ll861nGRSfSTEq5BxSLGk52lpz20UctEUbtbWCuKpnRsBiXbU/xfP2C304+wNvT
IqcbRiT4JNHS0/aQNbRkvMr3z4jCTfbj6m/D6S1iOLTCs42UYWQkB9JQUrfkdbaiBYW3NRQ5Rval
glc1JfV21zlK723hQKN/E4tlcpi2L7R/KBch4ER7WCVDNpMKOIFAjFfEmIKJTPHT3g8EcMSipyu/
r85PdqgxBTBfm86ZqUDzE1oBVPhvN/GPeQN8MNU7jYrBUSaRGDXnzet42gV6kjfi1zHgX2RhRYQ8
SmaxUD9P55mW2JlIiRriqwZzacHeX5AQNni382dKYJ9f/hr1OjR+JbdRtZ4L/7HyyvZv94OfyRNI
sWAN0HaC7I5BU778msuPaEyKF1c458yyPxGyrWF7gLdX4OrKPSoOyfmEI8SCNFT6M0mpt7Z+DQkx
3r2jJLjmIHPVyVqxRqL4CfZeK5TJVVVZU4Q4+fW8u18R1SoVRZeInWU2TnEyCuQ9EZf8mLQj38I/
9gf/fTCOwZXZHe/78RnOBit8pSqrl9y08fhJWxSKSjDD5AFXiEBCsuMR3qW1YON442iwBHFIc37M
Lp0COL7glwBN7lpZ1aB5K57mxGULRM3d1qtVejdL4BmLIicKTEChI74Xrn0mxCQmDFQkqgG3JRU9
50nJhI9s5BBm7f4M/8WUyCxo+2EBgUDrwCtdWtehFBS8Bib8dqR/QquRDQEhUOgA/8/Vb3TYKRt8
1Gp34syIG0puGG9EghO37eMQ6neS5biMn8ftrkN2q04vwsS6rTdJhSkat3rmZd46SEVF0tMRhVvC
X6ttQcfGi7/HVHR67USoTAHHggKW3aYnokteLlqwDbqmc9x+fY6FM7B5SHLSESunWJehxO7sfVza
UjfUUMO/TpyGnxibL+TAmH1hvLJZt/Pbmx+1Hg5iPqZskwyktCQH3oW4vp4vXjZ7NAZuSHhj9mNI
1SUb7lhKp/nt9Ac17v/s/+kvMeSgz9lUSKCJf9qnqfmIO1zRCgoanpPpfmfg/bJDw6JPdiep9e01
VFQhFK0wTCr4IE7+cHofL4cpCdQHIooPXblYOSnDaKF1DbgopnAi6jC7p+ESTbj9MzezYr6UjMDM
76ooX8/lZC2ZJErIxR3ZoUL/rKQ/CP7swE3O53W8Qa48K6mTYNqsWk8ju8O0G9rigH0E6L9PfDaN
eLfYKtoeLdHAJRqf/O39otTmOWJjHjWg/ROtaDYNVTjxHFGxSuTqiLiXxb3cr+TltQ3vM6mWHllk
qCJXGYvcpSLqYuhZk9lnzDpXLT5GYNlE+mLkUXTnXxR6RcJYoBe0eWvRlsa3MbAaZg5HYFBNjhQ9
TnMZJfvecQ5FK0xfOPuxKHn7Fmv+vD6eJ0eHQ42FRQgBZnKLf7vOx3zBwVEt1es13S1qmRPIfDDH
KIZwBsLwRrLGslN+NLG4psRrUHPBJQLhZCXQMdhVtSmKqDhpekSD0VEpxpSGvIWE/nPWQ7lGIjJH
2Igey8qGVO0Sksd8vtBJNdnINlccNEyk4KUoroLdM40wFYxCT8INDYzn03sP/hD3m1RPggFZ25zC
9ZozPX2gaRANtuqUm5zoYjHnAnkx1dEV0lJdc5QIpzFyrVj+iFDHqiq1MuZcMJo7yUwVKksfA/oV
vJU2jAScxDKePezCJsXKRLWw2Mj8KnyQmQVGO4S6oRFmzlboTAJSUfn3A1ynTI2r10Y5QKlIn9mW
81b4PQnifspzK8VAdYuH8fgaul6NXp3vcmLziUK/gjdVSYc6jnk53097ALOX73n2hSCNjVa7pkEN
SejyJrL6Ln0mZOEnVEUw99Pvp/OPlDB+jvla0ptVAegUnG33ZCH/kNCpx7qvRypm6OcBKckUuJqE
7iWFZiEO/7yD6pBG9FzRoUJN+mF3uCU9CHSxbhiAVcW1N+z761MF5qzkRwKaMjXKmDiOqXVP5woU
77bmTno92OLgrjhS9CKz5gp+2NSYIDGJJjhtNlzpVxBqMbAGCzC1tqA1Mm+wz0IIdO2XPRrW0OaL
muNUyfkxfrwg/l9hPMUYRKHbnKjo9xeIqPMigvGs5bo+KaTwgUtbtL+J5sTkyqQ+3MZKyXEg+GjR
yvJ4oaOx+GK969rPxWWeoEc/mQBf0xqlEVfNrWFmmZ1oLYfTbaYKPckHIX2MKU/5jLdU6EKVv73c
Z1AR4xZwgKpY1SHRSOcGSzm2jE/gVJSCWM6ZtugQu9wFzlOEgU73IMQ0NqEbMlyKOaDHvmITPqDX
nQR6YaJVfkYl7KHpylQqlfyFHx2nvWp1EVQKG3iuGJzoZcmF6KjLFjeAYJX1bLSgSNYzktvPf7AW
XXa7/+t2l3L7VXIpXYAC+fkI7nC8X+g6kYW9q4OmZPv7tckFXA27tgCkQkEWJBupVsp9+vmpWdnY
KyfiSlBUfu8netMNiltUI5czFYR5B5z2mUwjXs+uKX3rZavWf05APCTjIgjzXAZCLopR1dprgXqM
V3UV5RAmH+VlG7oA7Q9/YP+kxN5VrrFs5KZKg9JjZC1UdQWciibP+woZxAVUrXYGUStHZCsl067j
fX8uSR6oCnQLGylUjHRKwUEFWRTRiOs/trvUP9jbwcPx6v2Cj4/t5VdiMvS4EGyugwzITZVWCxbk
41h3gKE+n+qIw/eVh5rq5ALOsJ+WF7oaH0JZZggCpmT+nhw0IQhxUivDGkWQjFtZ4tymT+u8VfCU
wAGxnOcOH1Y+S/L/St7AX6J98AuPXp5D60YKhWG53NaxBQMy2mbvA6ElsOrLYKfF5P8kB+o15d1H
zDhnuUI9DBNv04IB/93Hq29R0deBQ+ib9GP7K3C/T/TCTJ7dCu2c6o2oDxMBJR5N8XSmBmQTvESu
pRxrFd0l9lFKkQLfhGVOc9rS/D1KDGEXgWWjE4VUrgsM5u0NjMq/3cdwE1+39yO9p/kWVW7qk5wz
NtfRr+5LzehMWbwAKHjdQE5CqMUm1WZ0jj1IsnZMpdrFNNImT8711JCYyIuyXN+3+noKTifFnxlF
EEBnuTdCHKx4XlMSMsLxCzycJniynCpbyd6jioPaxbHFfFbFi6HOju5axDL7Ln6/KnaOKOZa25OL
EXlfKhdwWYYf63RyE4b3QGOdWoLSO9RSdQlsfaYEjM3dnVYXIK0vGKFw+uSSTEPjJ8Qm9MPeX86f
tNJv7MYDazs2p7p/Xm9e2X7g7ups5sxkOzIb1OOE6tFQCMt4abSmJQw6329Bw6GkKssN2OK3oeFo
JSLJg/oSY4fNtfmrK1QlQv4YXy5brBBEsePFY0lVCkcfV5AfqsWx8EYtaEz2hrsTtNyMmSeuN3BT
WfYxV7ry/dLdXiYWa3GL9kCzequmSG+rbVzliQG1PR79fj7XhIblhiNZXsRjxWknVcJy9WW8vQVJ
frYLC5vZ6/H7wgyeXMiotl8voLyR5cKauIzSDdLPIPKeImob7HJlz6AusXmDq14/4eu5vMFfKD8t
WmzLLaxO6PVw2ifwIF0dP5XISN9+Hm7bI4psWKbo5znN8cT3EKC+pXBkTHFJF8hluelcdO1K26CC
wW5fOr5LmU7FgUoFH9VG4TGKfohdl6d2F7+zzSMevKgrSf5aT7KLw1dV0a3aSZbmM/H6eU8jgq30
wQ7DQlJ508cPEcrs529/0vwHlqucVgouRRshGr+G/ifXM+2WDlnSIuYg68Lg6/v5ftyH2bxvv49z
J1ky7ilWsDziMG9UIJ7M/BjSh5QN/RZrH+ZekzAHxHIleRyipNrmOdDZPjb3Flu5WMX8p4NGllMU
/6HiW0fA+PeR9HjZQvGJ2rG73l/IrCLLadzVDdy+vHgdvrsEBCbkRcmtKnbRRfRnoiKPL78fblPF
f4Rhe87GRMJybJG7CHzhKeIO9nDuHhJTk6TSbEly5bZQzXxZrip2rNGnag6xaONjGge3aHqcAdvQ
q5QepwSXiWLq5vZW6VrvZ+9gAh8CJPn2fvT/Q9PTvKEna5UWooiAtG9O2++0G5QPKRHfpvqykN6N
4TzdLZHNbRdX4XauPPcik3qUBhcoTCtEAzCUcGIRts7ush+j8P7oOhI2Vw+yRRlJqW7eQIXJisdd
xeEPmMR2vx/3PQshGvPIEdHEP0tZGKg4S9Abs4/EjCZ0tTcn13DHFtnAzKMJ5fE0cjM0dHHi3T8d
6U3d0qLUhb+beUehfTBtj/ICKpQyz9lrIx9B1NVNS7Jlar8Tm15ui1mm+wLNU5u88fjHuoVnxYKe
MQiInTlKKlJH3zMNf9hWLOhd+9hG0JuvW1hcD3iwrLGBoTXeYVcKXCrW0D02kO26+S3zuFYg2F3T
JaYyxT/4+em164ozSwtHgXoLTzbRC6uODZGlN+XIeh6D5BTOu9AG3QiEy8Y4AdSZtfT99fVAg4tl
GpUfULyP0N6MQkxJrWIbM2qRJMLxTZTCDp7Lh5Z7lUlsiErCcn+k7Cmw2eNI3XtDs47xb/ftsXDs
kIbiSi+cf10X+Z5fKwz1cO1AHoYtHH1Wqamn6jlZ5tTnW2emZqbhYYzvwYkY5wqjBYWAXlyJriJ4
/kDRj97IMSwU9XVimUyZHfxFeiSVRYKHWzKR1c0hJBsqmDn4ZJtCtAZaSS0v/4Rgzn25UrwSKgag
o9bCP7JEXyJsgQ564nSsB8jJ8Fm7d6CCyk+tCD51x5hEMbv2AiZWgLpo9tjkhB/2m91xe31G7bCi
l9flVb03Btnc8m11nR9g5cNHtPu3RekreNEmyIxoDZzimWQvglPvl+fPrRMwF+g7ZDuUaCBxdSfJ
iZxNY2+ycU8fO9DW6OQmw7GkZWONyGW+Yu+li2N6iOaaUzz0/pVwprxkkR3t7SkCHDT5iuWm+qu4
IUNquVftPp7GExquSh/UCZ7rLXUQOR1iDPIx3t7PewDHLp2Tx8YfYTaAdsry+xTRjJQmpxPY1wUI
KpQ/PV7nig2LWN/tfD6CDCJTuuFgL51+eDBCN1CSB4djQkqQn8l1w1skIOpcivIcPs0bHmRVJUuq
k8pS5MLqzPj3B0RuinONtN9yLeGJsSgozy2BNUPMOn1fOYl4WapEJIVgObf2ej/4y+RvAS1wbJGY
4kSrmyD3EWYOyiyyYDsGlZekUzWtycnIhjWZMvouNVMKxaEmT1o00iOJIx1CzajSyW9bclu3IKxZ
2sk5/T43bnnD4YFRDaAiZRT7uEDB76pqg6qRW/JzEiT6XCtHlkk3K9MwPVa6+X389XLeXvbzCg8+
UL3t6BSu0Y0kxXxBoNZxLcc90vZ+bsL/4G0yZkHQqXKr8aDjE6dkURWbi+RWwU2Ia6+f4xiAzs9x
+zsZzvKFmLNV2jkdyuwDPhUXMSpZS3JSyOtjKR5KvAZz/0CgxKVagAVi1dF+5kvEvlqH0+uZdm11
I4aZ6sxiY/x78rtKNT99XCVnWmWKJhpdr50ty7X2qzRwWdT0SDi9FNswBgsFcZggEfqiyAalLGdK
5xvzEbu/0UG5aQHD99OkXOtmQ6W/a4ewMzTMUmbPPrzV8pQQFqWwjgDyq8bT9cheAOgLxOb2LyuS
1NpHox9RizpGLCh5smRynkR4WUntVW9rTsm3MJf0dmz5Z+IhVD4nOkTuXGfWQ20E9Wl+UDfqLf7w
IRNKSU2+8pufv60KcKqvHfWh7XwYftYo+uHd1jPA1eec/HLxRrR9+JBcaXnNmK+UWPrQUB/mp4aj
bzQ8fCipD0XrpezqQ0t9aFoPzVcfkttaHr2eLkUE1u8vvwqxvGMFbbHeQ65xW0fbdEhYLHjwoPgU
99SP7dwv9H3iokEVLK7Dpc6Sk06EbrI07rhIP3zYoo6l8qrZRNX6hSxeZXOPkFX+PD21UCHJ2X2M
0XdAuF8PJ8D2ZQ3I/pGmlN8ynx50r0v8p0cvwUuzufht5Uj9B5oZsVz54+Zh2QSA+tnNJY9psGva
gzXFAPW/ZvmRt5U3/Ng8NJ5hFh90cLwkg+oq2OSOQMe8BLprCtfb5TC9I3K9pTAKF3mwuclk9v7U
8m1zcHmXCVT36JSEXViROnut4lh+gXF1MRd9VUPJOsrtltzB9DCZol82ojfZNDyTqFZCibKPcmGQ
y1kjjNxtL+Nt8xJw2QXDmXRkhgZB9fXwFp6B7DHahoIJlZ7EMWM6M/QidJbSgyF13SHLWtmItOok
2pN+DC++8JqXGsOX3TGqqafilhZTNCG9P2jvsMAPT8BNW0APVw2nsM7Dxm8WidnYCzgELTivJGbH
Qy3qRMFQsX8DNRafx6rgYmKsZ6qDxexAhpLy4L6LEFs1qTL01rlF7tQ85JdPT/I2bSNynQ1oRcKe
Y5FQlv1cXpVXqGjqkUo2M+6QkoYW8j+9YJKtZbRIpdtpOhgAZTPKAEQFPObJ9fMlUrbSUOUFuV+n
HR0WuRZ1r3AVc1i0Cfjd+XXCsTshYUEAalp+JL0lLC+8BLwLTXpp70U3IMZJPEN7jFh6WlqX0Pts
GlDL5KCmnik7b0a8nIKnWFjuneJYbn0jH6tBxtPbjd6UkqV5eO8ZsMDK/FcHtDalIXV63H4mBxG+
G8XyI/aOLfpKPGTJSn9qwBFjxROuECPK0/wPu5kthyn1LSEzWLZRMpCcs2laSYf2cChWkeACWYAN
j+FreIvqOreEif8Gdtliud/yiqSa5SG4gaRM2IZ7ldNgwTWiMdOhmZQ47YM0pSpCXBPFROtCLbh7
KZcRU3DznMZC8N5jj1q4xq6sva5LoAoA91G7BvksPJHxGdvHbB7oi3RE4hpsr/vJh2IJnA2tjyEY
yktyrupTtRCdhL4n3vuP9/imj7/TQHBYK92b3a/z5/gc3b2kxCrnq3eSkFTJV8n3STKXNbRkFKwb
Ja8VIyNZoVfQWorNvUTXDPxVrfUTmWHOWmmXKXPyPbgip+kfZhofAEl0q6Qxhu+H/MrUJrztRG6N
aJSCVKuIAzxxeW1rdw5rlun8HMETgSdv8U6ntPXlfAaRfmtL/K2eXtz1zkbSpLnXAW2YVUPkFtyb
zdIXupxPhz/Cv47Q9tHbPKQABtPQR4uHTPJrm5CrXBKEIrXPeySxns7Tw904imMNEGPxhGnyPKfs
62mWiT6NQDeioXkL6+dvrptt2Md3v5FnQNYoAFTlueyOh8/Pmar3FEuzyn8W2U9WHKe4WQnvQqDj
9EzY+Tjc5i2f6odxqpA3kYB1D/D6+R5aPZXI1Zb25KlAaNstBGYLzrocHt4DrrAw1BGMzZDxEhyc
1H3pMrX1/sym8D3p/WnVI9ZVWOHm+b2h8SvZImc81BhMz9lOr7hXJFJQdVYwv/WjFBlb9fsfEpJ7
bFmYaGQ1i3l66AMPtZZq5bfmXF54lDJYu/TaH8LPjWtg0Dmv361vZ3Jocrx2AZ2KNzRFSIXSGPoz
gNeaYzTgKPJxMcPktgwNsk3qffyFSlDVIgnX9fJhNh2Gg2k5bSl2vb3fP15muj4u5WtlbBdryG2I
665ofU1drMki5bp6PjFd5NAiNzQboq9IqZwVLrs6D7FgDM8SBON9X+9cokYjLeL4V6L2UrWuIhaw
gjQq1AsTCEotJc/NR0K4f735ifSRFUFloTuEuuLdRFMKXoPsNQBj+ZWFFdUk3Yq37d3vQ5LFZxjd
BU2oaIZTF5+gTjcv5z2QFF7SFlUj+KldVqgqyx4crY8b9IMPb2i6t1q2yNZzvm3zxaxfpThL0upL
78pNTYvPfz2QvyEaqdF1I5P5hRN6xxdQt6Yl6TlyT7G0D+ye+bWpmvVNQo6mMa2pHuj79ZlQpNWY
IokODQmScW+0wGumCXk5BcWVatbtgPRSY5x4nwv78QlRZFVNSwnKzpeEkj1bNs4K5FG/tJo1Zp0t
SKFBfhwI9Afipa4wpqCmKknvgH1sU7+X5LHQ0dPQcOwaRPf0ovlTJFjVMC0rfCgU6uO3adn8atFq
auXkeiXCzLYaXoC62Ap+Stnd3gS1WDtnRVkvG7/PrM1MK+6/e1weYK6biZ/Pl+OvzVSbXAIcusVr
q1Pn8lXaqZ1DqjmOOHJ8vzLR5eYaeLr3ZekhW3To3N8n+Ut5g2ncc8jZoFWjx5lMNp7ScwIhGQo6
xZXZVIZ4evfrcPXG4TSDevOVDT1Uew3G8x7GKNU+xPPv6a2aY/9dqdLWOL7/MSx7j6aeIZDmFscw
i41S2becG83F5+LCe5PPvQLCyRai0+HTyykPCnIeeVHcVTn8yZc/preb0Yu3lbAXVnlh2uLzqd7R
KB8vilejks8txp/rcVueo6u6csX30rxPcRu7ry2JZVtu99iHn3zGYGi9upMIT822YPlt6diwicxV
DdlCt15MffZB9uppzqopmN+XTtv20ta+ymdVmmi+S+F5ia7SYY0Wz1OL/EWlY7gLKc9FdsnXi2m5
9oNUna7npfXm+mHMWOuUH8nzV4BuBKwbb6nEfMz7+binuw+z8urE/OHcK316KTom0vehU3/o3HjH
+GWkU0anwEWnaYgvqA6TpFzGOFhIx4/X8/2yGyeeV6hhggn1NK7M45YI4bT9fnibyubfD7HI/zVU
voeHEvyPwfFEHq96Lma8BV/51f/X7/jRyWkQPg9SRVxT79W4iZvt/vx5+6egVlNbYHqwhK2kGbGM
j5QDQNNg5UsdqciZ/TOJ8DV++Hm/vsd/mWqXU24AjavmcW0QMTs1NJ9yfV8ayZTT06kwhLfHQoPY
PIgKlsf/OWFri3WhEXReUDh/O8gk8W/nTXpyOrZF38SQdZZSdGJ5QrNJzjS2uf/P+cWf+vfpNjX/
L5v4b1/JfL6NkFC8VVwtusW0h/NK/fLrqUFj+jMOOhcGTmUu/DeW3okf/DYNbLOTjG2+e1txeTtt
hmHzQr4LP+H5ZgHIhmHUZqcUc96N33tVsvGDki+tz9XtZkkwHOTABrHxEeD201vgQYNp8PxAfWWq
boMKV2Wz42LuTxEMIVzPxDIwCwLxjZlBD3zzsg8N0k+vR+8X/thwvtmTj8dPeWKzfMDOL0j6JV3f
g4/z6r2wjf8nejKsvBqvswpsT4YNYDJTkt8sVOltcOmQuNq8Hm8/LttPuDVz/Y5ZpKrKUavNIZ41
GmPOnZoF1+8W9GqKJrw4Mw7mIFlzJfMcbBK3W5jElp5E2Y6qm5I/GT8JwzavP/YhDRidJH88r9Q4
Kq+lQpXbp6MYOB1jm2t6FBWORIW1NtZvjAwbMxi/ov0p3ENOL2jO/5pFRUt7RUKBFZVTrhtCMe2v
8E5pnhhNm2uStw3xMpKMlTCLWzQPNAzWqyi5OZ5iZaCf3B6MMnfcNcsencyfd1AOSsjNy5s3S17F
+M0CA0nOWoLT3B+J9sfwhb7T+bBEPCzuPcCgeC9RO9CCbEXjzP2avNbkIv73r96bCPT6cLdv58+N
d1JDt5HTpAdZ9DFapk4U0xvJ23zKcAejGSoqTyGsCJDI9bDzA1lqnARkpXGqwsyX6/mYugieCpHo
x2HvXfth4NRgyjU8wm0oLQmYqf9Sk9NQxR1Jxzd3BwrAXDq2Q9UzcWCGGiqlR9OKWFxS/ciyN1XJ
OH9O/HqwHMmKe1PU+8f28hZeL/78PB5C/6Mz2l6hi1NbzG960mCxt+9j6OHmh3LkFhm3mI3pnxQj
99uIxsrSV3mQvNcDI3dIlL0u0W0M0APqEcGnIoSSHIaX09eyFKJM9+Bxk8gjE7JMqIIJm5uUR2P0
aOWOlYKG1aTmvVbkKCrHJHW6fZ7T43xIabK2IQHkFRHk6fOySzF3yCac53y/TS9THANi/ZyEW/2c
hM/ag7y4Cd7MI03am1wefVNSP+FJD6UXRTvLY4JcnitbZVKtTef46EvnSsBcdfckBxKkXLISvNWP
f9MjcXqkYkaqgplglRqCSYo4L5JZuZ4NTckkrSmXMxHVTJq6jdGT4Y1rEhrwvQbj+tx0ZIm0eZIp
heyroO3rUoeorgGgz8rwhbJVWEfSN1aqxmF56fk8X+uGq2mSc+rA37ctOTOpW4YfmSZO7rwt0Ikq
Zq5yImgFoioRis6k7QgRPRY3Zayq3vR4+JwNRhOBSNX5005EN921blTXk+KONQw0rerpyyBUGchG
hQhtNO0McdVcGRJl2t0zuuE3xE2KlLjnhZk70zD4YFK0nU7U1rVWzQNMnR6gO1QMTxBFPfUx/nXa
foSaP+/fT0war0rJy5TSMGmjE3cV+eRhRv39VuzLriO5TYajsR72m77orAJJe1ojL9HQChsZ1+YS
B2osbRoKsn2FgRlyunGFp4CPSUdHdmUlcmic/3oKipboyq8um/Ia3ypK4dD0XCoQHV7scszNMdO/
YrTjUpR7ZcJiSVWon0p3P750F8upkGGVlWJT8Q8Dbht92cooEcB2sj4mqOoL1hwbdM0c8yfuKanN
VPGAZea4jOdXpHRS/mz6qHolnopTQLRjG4fTQSjEkRyOsZXnzJ+54Jr2xBv+4TSPpm2nFyqg+9wc
jNRimjUsWdPZBBOqIh8dncbFEaar9pW4tdjqGr+aHlSJX2+Pb+fL4fb+4SUC2PxKqcYITTWgFIig
yFZwmNyY+cYvHHL6phYfswVUPW+/UqlrMTuu41rRLqKsBDyaQtuLomnhtrIZZlJnxgGWwhsCCewz
eXhV9rN6g3CyXwMHirH6MBUfPRthvNARhmncfhodpLUlq+KxiO86qC1pYKB4+lWAQA1Dh73FNauf
RKvCHdqYKt7UGm3lY2nHqVxyG/0w1/E36ACMF5NYNcGhYRcax7MV2Bn/MHhSINZgohVQdoVRvtLC
OJD+4RcRxvTyevHQ2DLmKJHZJXAqcOyRR1o85YKMGumDat1AhejbRivtCkFPfWW66Bm5QNdyHTHG
QF5eO7RFgsLPaHhncK2dotFPWkwdR9HQo94GcxoairuVtqAdiCoGrQIHAhakLWS5xXXjzb6DTI5Y
qbyKmwWFnBROzRtOEo4YyQ2rwMuqK1fa8rlRRCp+hVqviq3rmIbUerTxZvXNK4V41ECGlkshFtmL
Z9Wn2tHqs4py4h+9+8dI4+V0Q322Q5aX110no7refF1d5ueji5r7VaUxQLg80OHy0AhU2vbd0MFF
MaUuTqiXeOC0DraddB9C1LlYzIO5judNn3qqEJ6uWzx31gN6aXzDtILB9JZJjnJpnLakvCtXgM5Z
0Usq5puneYiHN8RC4cH2I5TgQj+gHLdlxeSCqIQWnYKIdsz3vM00z6CKBIvJ7YALnL6sbGjGGHQY
N9AIuWwqXYRKgYR45WyamJJIiQMl2WYa0X9PT0aaVeqSPyIBX8wbiYoQ8ZDGJrQbHagK0YB/W5m+
gc70qYZpWt04QcNdZTWliLqFA+WdoWM4oRu2bY1ugKsmFlaf44QcTRCQokEQaAKZtNUpcWTdJLAf
coMoxz0FuGQzRgMJvGEQKWcSpHVlYxig1uhjr1KMkebvBhi8A7ZJy/tPeC0A1IvPEphbM25MX/Fu
tlBw3sCNkctB+42WNy5nK3igrYZuRTLktaCPSTIaPHzU8Jzmg1Q6K5wYU8+w3Mh56Vb0D46NToAV
bkklPq29pk9ePQ9l1xEWLQDVgOXW02aV9oyEXuWNNAyKaO1oVDMBBW4+PZYVTcgWaDXSjLlWlF0B
dyALVuUMgvfJjX0G7qdXxV0DGgESCfJzpoFGUkdGg5pGfg1SlLTfWKUy+Oq2PW4RuGp2QROwXe4C
vUeGPQXUTEvT9JzE8FUwg5E6zujGWCg7RqsUYRvYD/KG6ZCv0gHBes9tpQkSFY1B6JZYEpwa2nN0
vJGQfwKNoh3AFkwK4mp6gaX27dmMJJ2ZMEMDhF9r8OvtV4gjDW00pfwaa5XcpeJRdNfWN09SNeh0
QH2T63OthFKdd6GJ2FXMH2JHPnV/AHkOWnXXqG+V95vmn856usYpLkGoLTMIbv2CRSmc3qoJXMsx
oeNEzTq1AHSCVq21xjPQLKmEDGvYaaTOFK3OKpo6j1m3Jz132sflLc5zM/Sj9VphjVR3oo0SAnZF
xeBlpWqCNtl0/oFLmvhE8kgA1FPhsrrgM5QPQIc2K0KWqaI1OoVRTE9kuTLZCWdop0i29GDH56OD
rKry4iupFdqfVYrk8X8l5TM8GR3lCdFyZMWXyh3oLKSoksms3Nt09PRnFU4l4h8GJQTogH94jjE5
DUSXbTDeGmhlHfiWjhVbBfv0fgLXoDqY1KilZ2lotrdqeBk9WJjmnFXp2KYWo5082uNoEYzXIdHA
6ZtaGaB6t9oKGhSitPmOoEKCjs3tf5ASQfNzKiTVdtTRPD1yx4xsJPVoQ0RHalwgh/8hmUrzWuqc
Sh+JonUsr7goKTDuXEI6y88rbq+RBV9ZZRpoOFVWvRtslM1e+EJ7xFWxzDOcM/roKyFfuQ5fwNW4
a+HyT6SsAf2sBWlSuAh9h6uyy/pVi++hYejOz2F7PLzFkunxCuNOXvfdiFatjho+x8sutMXF1GdR
8yBhZdtsmGgko8rHsi9suNzT+qRVUIa8dk177dVmxfCiJ5506GdbBc6Uj0Q7NlXsKZdG74tYDTei
gda2LYujCYCsmbME8Qwdu1UsrSfgY+Q0VakVXWq5AOpLe951QSBr+CtfKw3T8ituKbDCTDXj3GX+
MSkZrA7KTa4fN6LpbIAbnb13xfLTV9NFXu3QpP1AMpvVOUkeKwJwJT5YoXm6VGjh1dHQpHsyzQWY
u67hRLXLTOkqlqqJlk1ewQNQQuuRyqGvCcALNZm77F6hkyvKvZWxYSXv59UBhKwQ+YwOTkkBaPIR
EXxP+3LGPN0hYHYMyWlVRaId5IX2CeVAkv465pNeo1QN0aQjPdqTqmxnTdVrXRTAlLeNgosnLi+p
plQL4e61UgFBo8GFSo+eMJ2uKveZAnm+liMWvNU0oIMaAbjRLOBGVuEgtBBUBi8RFiSotHuhYUrT
rJcjkkGgD8rwJV4KzfxiQ8tuIvYoQCkHvQrHVO2SL1UBDdFULkHduaI2B7QXXiN46SXXnmNJn3md
dM93FmANdMhblXyuEJ6v4ETctogOtGNJo3pVx4sAWnBhn41W6P4Hlb17yjzR2QpWsZxETuQiS0c7
c6ZlhanCf9pF4brpZdAeL32IlRuX6gklUgH0ynTr4tIgCg2CVNo14HxMOiieNBpjWx0wWpXWoFim
StzWjJl1QyYcCxRjVj9ujmtuAV+mkSSl3UtQrM2bjLtGoRPKv7FlzqMHWNEOqhWNAJz2j2jWdoUL
WVEIDk8oE7o8omQZqyfQvlwDzBzR5aXnddGHaFuEJxhD0/68bRAW01eLgYr7Rqsn9/WOX3Qx5Jfg
C7r8htdKM6aKJaKYgrxslX5Qz2BFtIoykqzp+trh8apMyT3RqAuUyqzVbxd5AtlC12q0RBopGnli
Fe855uQxCw4kfgyonm/UdAMTzBrstabyBEiDJdVKc6fpGMe1mEFt0JGOa6pk/AJ0JJUwLdh1O4eY
9OtVh9OZzSrDWrvQfX1O62HRunaUFwbUnGwK0xOWZqSn1qrwbx8kjfVUXe3SQboncn+kcBWftTLx
tAKmLXPlcdTIxRTd/TFezvMVnBor0yusSpdSd8pnyk7JmWmYK6PtMim0StJ9GhrrBPSxdV3mMyae
1KNV59MSQaIMDgAnq5hIxnCrk8mlQ35mvlRTQIcyVQqubllK84BpXtKKvi2frfgCJ+m+wOUByRz3
pZaMIOhe9Xt7VncpOkFY0VPLI7EgOwRaTQxN/JUWCnqZnOx8gsiuNDQsGkFlE3YDBaqt5rMd/JBu
HSlajkjH2QZlAnRHp/9I9YLg7LnGB4CPq78o8rQBMq3yOViaDhBqtiIhPpO1IMXKmC8mU2i0qsQU
NYuajsjpjhzyicBrIq1bEI+rr/Lo6RiueYArth1IeqgGiWmpn5AomyrYjg+r9Hxa2j2ussOJDsO7
oogYdmJVEt5pDkOzqrioKOI8CtMz6oTmMTxf3tFlyDXVwDJv/e7jtj+C6ZpoO91e6Ux9BcGmry+v
aG1KlkYVFLYAGv5pWsK/2vZCFId7SboiXDQ6v8OX+Z0BJFVpqLBKx6T3BBxCmulMatXYpVSIz1sU
nrZAWXDZlO8H7ihqCDM08WliGaDikDe8pY5bQktyXlfgs+o6iQjK9kWzS+UTPiBoO82+VBEOChYd
a3Phqrwb7b+rdlEpcUi0MV1Fhp3+3uAmuq/wvMGZVfnRIV5FxC8DNU5Vft1FZAXROmlgzv0H+5bT
AEgT0m7iaqBRvFswn1eIxXTHpxeukaM+tDjZQJjp/hp27TvIlusCmn+13izphAygN8HXiiRB+QNr
dYBb9Q0BDTLsl24F29Mn1X4aoBVo0P6h/hIQARLjNXvloeP819r+cTu0bHhV004DK7ri5NjYI7EH
MIMeFLbhO9OeEq0xqgprIwopAzDTyX12ot8TvH8buFUNk0X3U6ItOmt1r9spKTa3n7fNftzFAGOg
u7QWBmRM54g++QUEBdWqhjXz5AuJJTd8SQfSkiysaWaWOrEF6LPR8N2pjBCdzKuq9GtLCJgL9DMB
1XsMIVqZqUKE10FftuKYBW70RI1GaACdGKrokMXLbJIggJ9YRd0smsXHgugnKqHt05HNEzgVtyjF
/EgPpBHVgX+JHk/HzhUVImRduOp02NB0vCXYkx296NtRtTSq+v42QzYa5a8coDrWAWgSuT12SaFQ
z9x9YKobmh8oJQDqtOtQSRefTi1X6Pdz7UzovLlptZ4gNDeNfDvZ2KQUE9LGsGoUFTZ5LrClm7rT
q2Ct2KlFUwbQ79Bg3tEdU0HGl7fcF8AGpF3eqhFDee22tSzaEuoWRNtMItA+ZkkxBkxDqD6ACIiy
slm3OMVxDU/xmUKTqsOhjU/odFqY00Nxvb4O4NVYAd4QtUPrgWE2hDdMvZd2+TxuXl4CgNR5G3X5
pCl7eNQ3Pqj7Az+oq1zzmVYeB9Ficzxcb+nZd/jAsBHNZ2Obz8+iB3WVbU6nNY7T9DiqPCq92Bvn
zzc+kS3Du8npjVb6CVvLmuekwhO2ipv0tC8bNjtyW1ze3QBISf74ZvLV6wuwr6rsa/Evbn4VbrML
zzbvr/B57njDWyIyPy18mN8Wxq/5pk75aaDCyiuyZpKsBaYnvRsJxXo8XBXfFg5PWYf9/HHDkmZl
8ynr8OB42BPjN/Zj4sIy8Ohy9QL00Lg85fFzdHnMALfXTtv7Et9/BuPwvKYQIAuXxcSvanPdncPt
Y/TGplKx+H3w+NTikfBZ1udHwumn3B1vPWbt1ZIIjxvL8Lh3sFQ/eoopoUxpbwsH++avsB+GsYKb
0sdjmu+VL94aR6+vp7aOj09qL15Nf48L2dH3P3WGe5QRFV5p3uzPH5v34MiGw91tDmf6XXrTego+
i5qeHl/fdV4+l60Hvr0miE9P+0PeHbfXa6wOp89YVI+4LyU2PV+tNvH16rAiciLlYe8Kp1hrRXT3
Uiz/+Fa594833i5vImjr74wCQxR9VFE621pgQFqALd6Bl8RMLJpJFtUKKCYsH0eWz7W29cFiDfQQ
onqNvuITTvK6435Nu9vhe3h6PcjI5kBLiXjeCoM1KeYIyU/SJpO0HdM9BNZnGBavwMvqtMVmvO62
n2PnoJlpviPfWpGRYEUDI1b0oPHZ5hVpfLEQPAXmwzWSGtGaT/ukLPKXVMt/y+vSm7is2+Qn0G4C
b16GlW5AF9sVUxhiCt30mJBykWahGeB9HNDOmpaGaY7jvQV6HKnre5319sIU7Y6X7h1wxSQW+mu4
A35jjBe2H3t/RpdrSHMF2aMleOHIKTJoYMg1Tph+OWizHMarmjjMseM+mZaama71Ib0a4WhLlGrJ
H7Z2LW0OSVtTY87Rj07Rz/V2TAoTxGLGtDSUV1xpP2TGSdCu8uIHLtyWcgsP8zVk+BoOTes4nw5P
p+Mlh3YGrWge8Cy2+kmx5YNpxlA6GDUlTXkdBNi1gRG++hzFzEEMC3Ohd8UtYilLyizaF+OIGCaY
NL+zUeZetx+H469OHNN2PVr6ZUD6ReimRSpGPzmpTxh91bwLrQlZh4y+Rqflw+V4WiFqBWclTCve
ZOGwd1H6wjZf/+gEVqk0OFkTF2LwleS46UIdp3Fofcft0/iGE8jOtqGfpt1H1km2Y4qVtxgOHcwm
PeLSsvrJP+M+VAsOmr9ZEm5PickXpxUixxWk5a85AFxKYFB7RUMQmp23lJ/X8b4/b8bjR0yB0JZB
N0OUKrg/PBXdi6ZOb52VRHBfGyVo+54G+Z4S4n2TVr90bbdUlOwUj2Ru7IXi48R2eDRXzFtwsbm+
b0/7fjAoiq2qB2n7a0gP6qJ2qgdbwlSCh6TZ5jIeN8fx1IO6Ej33Eb14DFoECpLbeCgPn/v/7pCe
agLIYSXCqgG4iUmEX3rwrmgG695rjAZY+Hv9dhl7e5IIqo+eFo8n/f1wPbwcjofbL7gkWZ207RkY
dA+YJG73fECH+YQYXJWTMJarvC0c9AyuGXa37tOA7xNfoMUi42ZyMuVBAW52x2vPlBvRcvLbmssi
zaWetnoKWSvThowGv9fRDZSb79vjW7yaW3Q1K4Ry6R8/2CuN7VUbXmytSyPNXtkrRgUwFgUw8ulz
EggF0M1bHuehNtvb5R60DcBLhdRPuyUGuTfD86ZOSZQhY80AJnps+83Va/Lrr9Nt+xOGulpB3FVO
/v4P6KenTmqPS+JRz4Q06z44j3takevmUlragWPtIJsDrbSD356ecpCtwKNh33A0NbSzjypBNd5F
/7wGZ+00XrGvJop7VLFk2xvE8AY9j4VppPVcW+utQWGOQOGhGSWuh5BoCN4EyRcpEIRLi2USxpHH
DLH+ZpZs5cYw5MZYYi9XuAjDuIgivKlqL1AWtUSTCz29xODOKajYo4SQaVr6BvqLPQbOCeCLZ72m
AITX3tOVT/d5DYMgbEZy/rTWtwPS+qadmsoQxOt5d78+A0HIVgYy+vB+IM3n/sV9H163dEqU28So
w763a3q7OoqLVIFGe7tsT9fuNAbduoOT2xwELqzldD7hWCD153jEbMMp7UIkcHrf3E9+VcfDCWb/
qoC2PAyxukYIshLNvF0Vk+SQBAegBYOOD1JyGnXFCr/Kd3XcQRwIVN5GF9xBgQmXTQQtX0zvlL4F
1d+ZjuSqyw86PMMP4iAdWKWvWSd9rWEST0y73FN6jhGWYB0DMEwucIJKymcnaO8l6PQ7vArVFa8R
q2WaCWUOCkpQvYNUXO7fx1/YrxRyaKbKHiLzjqwwTbr+OQSRKARpA5IyTYLlemQAshoHrWKB5wVt
09iKzDbQTKUOUsvU00ZNIiZa5bnUGVodJyT55jjegsIMTynAZIxoo2Tt2EohK8ufCPIQ0ibbDJJm
BnGgj0q6p1PXDBEehAOSm5P6YATBXFMVNEBwxJqwfAEcrpG2KS1068OqbZ8/X2jlL/Tm9fBz38kC
ysINCHXrUhLZOzybalUVcbBt01A2hzfT122IAkEleoB8u2qXAU6RHttIswnli2K9x/7bt8NHfN4C
bo9kbVP9aI1EtEa0y1oFi1VSscmfRayFdlC+skca2SPeIrjMd2EOcmamJ+DumSYJsPYRGQpbpWjS
Mxs+GfadK450TXwNUuf93fFyuEXp80Yheh6ky6tal7udbzOIDSKbLI5G5Cdw5KearJI1MIBOuohu
1ca1qIdhzgx0klv6Sf4rTIbzp3liFrG1mXhayTjEzuKMcGYm9WC8enj9+XntsRZk0XoLwtk6h90h
TVepedMEIA8VAglyOCXMCdEs42h/tELIFn/adEsEzxrWVDY6+RJipvhuT5jlKwynM5FL3jLDuMzz
fEWGfL4KM1vyZh7oAjKw+8DJfyHliyZU8ZOWgEgBioBTXaEgPR9gQOkF0dbpCy5Ql03NKxTDtgHN
azgdYOLaWZsGywCieMK6pvQGlMlUeQVabCvyW6lprNSM39y3ftwkGSP4SCyx7d//mPrIIItSEc9s
BTE1VQPyxq17mv2DuFqyEGVq3lgLnOyoYGaa4rK2lChGZ+0c+jJigjG6aDpDKuoDLiYWUmo9Brle
nDAES9a96LCgbYdYdXjOKqmnjS1DxqT44itQPnq+Knm+Ee6ChWP66eiYI5OkGFkQ4Ld1e+2cNFME
EbT2v5Hfq9oU9UcuDJpFxSSoFctSRWqEXDPofVfUCJwgd+5py2EZwiws8qNqVAe7zW1O4ep4UEGQ
dM9XNKBUR1ulrCaC5F3qJtrQBGEkMO2ityE43hSMqKKb2VKf77+umS5F51kkVWe1RmAQjlPogxF0
GwhVj86XMdKm+/uiRcExcd7IEtFv1Gky6bTDx1uPyL0izoiG34YONwtZwN61pWNohWNohVbD0mr2
h+vnsaOjOe3/zWf8esDFSYzgyjRUE+aaOvNUnRTy3wxV81xdHhSBCw3YcHE/t7+eSeu5JsW+hu4Z
R9C9hem4UsoBmAqsWIxVPcjSNen4FIN6Pt5BZUiDghR9PkXMMFy2slUA9BC7c5CMEJYAlkMCeT7g
uTlCRP/p9Bnh4AxpOk9Xhgi0KO8Fz4EpLgwR/GnCmUZwWKFOLsi2QV523kHZj9fdeNrH+B/gR5rD
orPKO2CdnI98Ouej0LKsfDoIkiiYKtnFRd6/CZojJpJuUpFZTPwrqWM/r/QwNHYrRbP4celWoqK8
EvAG90XaZs51e9q9dwgemkrYPxAIECOv8uW6vSbQabfZJu3TRuxW3S5ja1g2nLp0qlm5OAQKqZTB
i5rgAJz110/XLVqUbiT4Z807hWTYqm4pP5Q92ez38FhANuAk7AA542LzHIeB9/m+oCpA8KbFb4Ms
SHKFJJCA2UGc/UPgPlgHC0Gru4jcB8WeDt8tIg6vKhZ1k04Bk9sMY3IFd+Id3MkRhRfrvYX0WGup
qt9FOu7YTcc16R2reBPRQEuEtsijrbLsYATBFSxKLa6H2LwCjF40Q8V1sS5icTr9NNQpUaUQkfpa
hDOwuMfa58sH0ETKgjrEmU5pOGsL2xLnlOjyNPmxjWpLgZoacGuf5fDIjj9nntaTDOlJKZ+GOjmy
YUo93VNAovmYduVSo6wB6FzdbjiSqQs2eAqx2SRmjq2aarS9QkRyV7jKsqJ0IG+uTQNqWxDUa2Rw
gB71RMshIW2/UcPhlNhEuFPD8ytCsJjkjmSJP0CFIJpVrInlrtE1pHlZ2wSoZFy9kIS2sp8TcQzk
zZo2ulXAilwOqZ922xliJMmu/OPsUhHcWFtO9EFCttmZpwuMDRIU54jjqZrEAcREN5tlNWjLnSJR
3gYFFhcoVI108rO83WNnpZgMKrnifZCeWfrGcE2RmB54AB22jyMYlwvnC1nmFaOFt4UMJaZcm/Tf
FDJEBBx0s95rgVai2KfS8yyldGgXXXTYOc8XEjuUnWJtOGIRzim0JPY0FV2Aqgz+ZKsLmGF+nudm
EQBLaPqwJXwTorDzZd9rtSWaXuBiVw3a1Xbx8kIvI7dEPA9caJRRdoxsNFldXlRVy4enoRiJ+Dem
id/lkJSlkLSHgZjnYTONZuPaUPQ6AcMxB2cgi1n9IIKHlP1uu++6FCsmWps3i6RF2qdtMGqlIsXz
jV0UsuXm+UQ1R7Gl0p3yz0NpY4EQr6bWn4MNyWMh0vtk0mn4rdylhwg16wSNdALv0TMCL4I26FJB
+m5l0DuJroKuxnbXukHzeOlXGIrCi4jNuwUNviE2vOJEU941MgNzXYLuXlFdZoCGUEWxc2vgQ+kN
DNqbPl9nYBAY7/BsqhgD1hmYZiOi5aagbHc79b4UeCQgXMPYuupdANHZZuleeCLjGv/z9FrG9nQ+
/fo436+b88tfx90thP3Dbz/fb+sh7dyK0w3LZyqocQZhiHHSWx6DWma2qOkwSQyT3hYY1NJXoIbR
ilpVetTz2VVxQa1K5WEqL4yajqNWlaoEynR4Z5MtMY7JZ7U+/tZ0jCV3R+dxbHd3mCNlJz3COyzf
k6DHEeQ45dSrO06No8hTH4oQVsgIKYSOEsIyTKUsyOlocpuHryzLGHKcLD217qHGGahlWfcFIWSM
kp5IYc/CMyt2ahhJKx79hXH4QB46t18SQk6OIxaXAp/W4Bh1R8suy67KGCS1LMO+tMuO3GXzBRnk
A6kyBFtcrY4MKnI+7EsqQ5PSk95Ey3dUdk6dlh79BUPhFSd1KfQXljVwylDoMkyVEaOGIRWhMV+6
6ZTicWYhyh09SN5Qu1RfHVF2pDrlX1rVQI1jyx6v33tu3XNSm7KvCI6lBbmo06oCltQX1KoMX3gq
HdNHaq/Uyeb5TaZMuhVf2GQfbFHDyC9IIB9ICyqGr2gdRdusYmsq7JW8WNTuOPEVP470TlNTyrKs
zi4L2kh8yc3lpAkd+Fe0oCTdXPkF3R5eBieUqfjSbKjdMeorWpBU7WyQiyvRWRXpp9jhC47BIKkr
Yb4SIHlHn1wV+4ook/6FtV9wcQfSDGv5Fa/JkheCD1/ymmiT5b4wzkBGEsZ+RZsySnRcvp51Go0c
hrpXTn1pNpQydcNX3AJSt1tTu0yit8XUbIz+wu1kmo75vhLKhhewCUHOJ14/AEUOQ6rApcvUiUAH
anMs/1IgSzv/JRip+ALk9SSVDvtaJEuN49hiOmp6/2+Z4H457n6HFbLMtfsBLbBs+MDJQDQzjMSQ
CZIPfTF6z3RVpcO9nKFGJb9tOlwFuR4y5ooQ4FUmpt1RiyMCD6cJPIsypU4zgXZZduOU8f6yqkii
8v7yvthpX24dYNwRqY+q/yzswPn8sw4DKvcV/PkeHYhXzolGNamVwC6X16DubUVUAnxiWYvrxWDd
4kC2Z8+bitLtul0o8pizZ/h5inaDhgYjgnVIy7b5alKsxwk1RnE+37ed/o5WEE2IctdMoAa4Geh7
k3MmEiWSXPv1h0ZREers1066L95SFKgqr80OXvIIIRPdEa2leBRxscndnmHBF9Vr8yFj2amN4oZI
fT4kgnExqbOADjFltFC1IrdP0/YM6hXULmZalNaCTLDq11wibSq4wX3DMvkWn4pwjih9m98iOjzz
gJYdnmXgQkIla6aR6x1F9FJFJFwf5Aun1r/Qw4cjIoYamvLeImWBh3PNQGqBivyDyGGcw4qjqogb
PmFkOWZ750Z1steoThMtyYvkjoFw06VytLn5K0YiqtV3/OliYZRjlxx09a7qwJGvZzXR+3Fd7AMs
RlXYrjq9MgTim2n29AVQiPljNVT4ZU2Yxm7bFIjyau1Tj9YKgsIe2jI88YSDaOtrlkKd2FFztz19
33aabthlOy7eaA6DlD6DZAw+bOaGewz1ylNkxw1v0rXc3C+H9AAKaE9hYMV/RW6B9bOS0Pd1uRAM
tBTBR1zzjnqdiFjzcB+NqYSBlhyavU5bZJlOX3LVfnVketLCa5TD5XrbHG+3S6fQwS3oXYhUaFE/
Q8a6tDf4mOqy1RP1VDOiRzpGtMqQm8v5fKPlnRvWrJla+OFIHQ6mVwWAee+l3nDVRffhdSf8Njsj
hXRRlc06VdkGiWju6YuurX2ujgdBR4PrvSlyxQJVlfuGfWGMKEiAyrhcDlM9dv9460Xn1rebfa5m
gvq4FCQuigiq44SiKhhZFl6T5uEreJJQPY9eK2ioYRh8NM5uZsAJGaqq8fmyo3GFT8JWW/zph001
cu9s09il5hfSm+1xfrACgpwDf/rhb4ZKQCVhGxrgBNhczQinambyHxZUfnJZ5eWLLnTLEJdfCtyz
vOpkCaRXrp79bnYyQmxXoZ8uTWDoIkqGmmDX7cjwO6QFCAvsaKEInS86Ov/5gguFDskKomf0OgTk
vRCwmEQbqNJI36G7IFS/FAz506LdY/wBIcOPQlXd/3txF0fpC0m10Zo7YB3mFlhb2AKr7VVXj/SE
puXb027Eb/RQjcbXsQZs7i2Jcou5u9/4s3oKlQ43BCr+qCz1gFphCGeJlocLLAVaxwJvR3xbmJY3
yRGqq/A7qNXDAbBlr3i68pCjZIrivQ50V9xmXznQiSbvqUHFafI5mBr3JVu2nqiK/fgz4b2SsB/U
jILeeplDQbQIenyqpdMlSML2qXMzPPx0+aD7TjZ0oFTbAWvaDSRkqydAbOvOAEddDoJ4KPIhrIZF
SgaVOvEJoz52wJN2H/RlafmkpRGoxUvTi3k2caTwmtvr+fIxlcXM/7g5XOMzbdvDKVQivhzPu999
XHEJAdf5eL+1J+xiO6LEyDCTeDKZzPbp/C2P/u39cPt2G683PzYYSJaBsl3ZXa8f29vl8HPD9960
eJl63e7GwFugRmHzKMHcqWE1inhyFD6PEvOuaRS+X23a6+HnuJ/3bbw0lxZ0DnOxUN+F2DggdHbS
YnmgVEnnXS00BJuHiBS1JKTX8bYpw4SivNv5EwwSZTQOEgnebHYmyhC73f2y3f1CExnyWkRgoq5G
4Hv0+27+NraakSr9/vvhtD9sLufb9jbCz2WefmiOwWT6fHf++PQKZ1+24rr5fi0Hc0VD5m21qexx
OSKvB0XD5E2JJVZs4vCEcfzt2U+908+Xw9vhhIbJcuJiTerD3m4+L2MUOzSInQfRwbHRan1EaRrP
SZ3IY8WOPHGkP87nj83HeLqHvrroY1XvrV2vxjvz9zE+GYR2VuczD+kUl9Sq34XrePk++ut8Ot++
cBFjoWAcTYQ7KXTam08vJJ/j7nb4Pn51wLxGEURJKP6ot8J+oSHyHs/KJt2JW1CZSfyO4WLkhzTP
r6/+nntF9urV9e1XvPcv293vQLeKrFuDHmH6YRv/HxgAnccOO8CmHai39P/B4CoPHrjqbHoF6Pr9
Ld7w6xUpcTN/G1/fTF69SEr8bfTHuk3fha0LfX38Ln4/XA8vh2PY1OP2F6U5RFQUyWlYFnYmFbaR
3lsZ3y6jd02PZ7/iw8n/2uY2/rz5v93sb2BUN49aNSCd77y3Xqvbg+Zn55EqNV0fyt3LDvrezN9X
0P7ynpzSJoExdN6jggItjDF5NdL3cvF9msP08Y+Dd9qjJhJ7MILKqyivV35pG3meQuC78MmjeFCm
f0xtkumRpky7KlhL3NGz90c2H9vP0FUqfud3ZfEvp18AczR5kSoSY6dFLocBn2dJqTi1j7P4Pl6O
3aH0Yia6PZT3yI/b0xYIjsmXK3YfUO1x9uP4CcbIwhMOTrH2GAIMkI8+tMme8PuHATgYgOUBghIi
NnZWwlCOTb6NITtiRbYRm8mvjl+dxrdtvJt/eBMRfMP5P2gOzOPDZmmXxKK51+SJ5c85+N7k70vU
E76bl3Wl1pU+Z/Pn1Q1Pz/XOkyiLAsPwPExJGQW9Hvx8r6kqJ7m/JVOoH5ak87FFj/B6qHcFjODm
EWQkPDRWFdXX7v1w3F/G03NrFHmNhWVbK+Td8fD5OaLN1nlaKk+ruteTzXtGatQ8UnCoJo2zlhrw
ed6fCr7Ox/XE/hahKy8Dzlpl2trthzfwYApD3osh4F3NFVSnBEayaxH+96TZj/egtqdvXiMkEqhH
vwNv1ww5QIpvKXE7OWpxrM3+vLt/BA/weN7GUOB7yA3tN3d/0667y+HzhoYuMWgsep9u6n7v5e/w
evH7lZZ7/fG6Sb9HD6Z1nqcIulpU8ejV7+EdrZHlIFTHBhlp68fr4Y9x83rxBr3364axZkxw+B6c
r5fL+UfsFflx3o+Eep52pETDIlZDpqm8haB6e/F/8Vv71+33bdrazf1yRDuSI8D4xpKYAIzp5C7j
h79o/i/b/a+wQSPwFqbJqUUomEzg3gvl5fxrs79fwgpPn59edfwAs5I53okNTdiQBH38ePFr2968
J/Xi/e9rik/BOCUwjWZ18uQu2+u792i9D3XYb/bb29Yv8HX0Cm2HxpIl3omRasKLxlsEc+N77dvd
brwCEdJWL8JSlTXZ5bAP+t7/8THe3s8gTNbONQCVv16TCE4bDT43qkAp1WOV4UjCLfhxOO3PP7wa
Oh79Tk/nFUe9e219RnfLlbCZJ1s/CeX48ekDEyyGBeGJVzTZ89f78eiFePQ3fdJKfpu9GrmMQZGg
0fI+R1+G56n4SSRtUd2Pac+iT9PVH6qpA273y2njT9HHhvEYvHB70fS3xp/IebyeQvz0/fz7OP/W
9H9EqkIsTnl5jXwE488qHRUSWNPYhSSjm+1rQNw/Q0JlGhVhM1q4gmCx+M5zimkO12vZN/8Xbwff
z8c9gh60ydOSOprRxvG8eJP4+6TN0HEUmCc8xJTsuReTlMbzR3w4xiqyl9H7UGPSFtf30d/ZaIq8
hKeqMjTbrEGCptRscRDTGfujgJqjoGxVOcyrN4pIV1SgoYlJez0B1JuPw2zzkgbz8fl4unYuZ1mG
yYKbldd0ft61T+rwdt5cLzukyPIZBtROtYf7vJy9nxeAniRz48/d+NlRIral3ZKk+6O7fktDf/vc
+lDkG+ltpTvEs7mNr62zSSUl9e//69v5UgtvuAvJjoe/221379AalOMJziCbvMFkobwIBoXeFa4C
oQVJnkC99JW/5FFCNh93b3f9pm3ivNER29o+TeD/MVyheYm9EYxuKOHraft5fT/fNt7ZHreXLTSS
KQhJjqCIlzttS6jg9LYt+BIxnJgm5P9/9OCQQBRoOf6voXfQivJ0AgvcscnWXbxP6y9R/CadWJbV
8W/3bQDSwOs2qsGPm2zJdHbJIf318XI+XsHTHGqRvxOTajl6B27eoDCQ/4vXgv8yTRDMSyzeHZ/Y
AO/erezcvDSZFgFyWk7tWoS9yod3vb/Q5xeHLYzGGP0N1SX57K+opCYLEormBJY3NN6mSEYZTL71
rMDJ68jRu0fnXfDaJ0dpMjD+/3Z9v9+8sgJTaRawXaZE0MF7xp9Ab6TFyMamZg/jdev/Y/DzrRx6
U+o621M/MlYWMg2R7kM0vtOBPTu/wlWrYIzgHOQrOvlbEQIF62SN7Hj85vwKfr31sOpKRUxR5xOa
Qi/kl0/eYlSDXelXhctS0XKy7oqSd02a5uT95BBUgc0wjaOKEadXxvMBBWIYXk9FX43qleXDCchg
GuD1EKkc4+6wPSKYOs1raJRgj6d7AEFuSPRso3vutRISsK26wUGcYzDvGPutnAY5oJkX2nkFQE4y
Pm3s6/20Q2uH5wu+W9JP5szvKcVoYM+WF2sS7XBCeKtdS3OWo/a/7DfvCo1LIfnW5c9nP2MKlk97
bNeXMflvo5/wX7KC+eckvtnH316QyyXVggagmp5rjq42Ed3hyOsaFgiDnuUgeuakp+7NhBeRzfN+
jKz9bT3UcSe0F5NXphqO3e542P0eAadlFPd68N9vgkV4owRj2kq+8F5VPxgOOivgpdHxC0oradI+
cMYX85/cuEnrBe8o5eRjggLGnq54uCy8bwmBgQ5wphux5xwYBszidkE4jHSNCCrM5OkJFFJKDOlM
xnHChr/60BdFl0424qyvRM5IWAt2MWTcYQkoQsdxAhILBBjgHDah9dvbzUdmC2QK4l1yaIj+fOKn
s1div9LBh3++vW9vaetCCNwBmQqzqUIGpkdnfxz24TcCwyFes27oJUusqmLzmgKfBZR840PS021p
7afb1cVSdYnVWejv0UTm4630R/1je9mjQ2GLaMzVHvnkJdX+H6XdJxksOHYYlw1paqft94PXPOc5
SoSAalZsAelVgkCJx1tnKmq5ruJ0vh78JejcwxJjqhyhJgUQyk3un/sQKEwSEZNx3gDAZIotpKzU
HqlCQTbeNUGqkhdGV4Ao2STxD9hMxjg2P86X3+Eel+nI2Mh79lSmc/+r90IvARy4VPHYhC+mH7uf
OlfJZY0hbMxZp0l/bq/eEB1eIzZ/i6IOnJxp8wrNT4ci6SfsO5oYa3gLAEKFroIoG5nc56Et76HF
TlC+aMesbAOyEWdJKmcGfY7j9hLuwHHsIfh2aKTaFtZxCn36wGyeXgD03HqhwS/610CgC1UObzek
GK1oGKo4i5Su8JOa/ZYOklQob7HRJhvkvL6wvMsY0evN3+4jtNu6HKIwJfm2xH9A5Dw5NNm4WZN3
evbn5qR6eKA+6vgfl8MNjrbcbVaJQky1wttdDE/snDaoyRUI1K/wWW74dPLzQVafLbjCrGlmfhyO
x7+Mp/2fffAcEtXBlqHLnA8/aAiXDmyhUK89y5pIDWmM9D7Cw0WZhfr8hB/umnnJ+Y5E/+H2HhKm
1/P94sUpZrxnXzouP97u4xFmbgrvOiiKSU8camd5rvtDcy2ej8oc2OnrysnsJS3NUFSNdsWizK5u
vn3n4t8jR6fcn0iPHGbZDzs1K8DTOepVmI0f1tD55MEGWsn5Ej9KvJDqbzczHSb4jj4iuVKGOCQw
C1ujyvVN43jtfNonTtgXBsw8lsrlnwbMfQ7przN3Jd6vof76Mr4G7V64tuQohT8SCVm8HiWRS58Z
pRCFKkMxjRIIsiGTTX+ciSfxgQfGhvns9uPPcb9/mT6KGuK/bW9tNkwICVPVvgtAmU4yridhyt++
bK/jPwVjAQZx8yAqBAtqItVEu5mwhb94gRrBACrPIvixevJjE6a6mMT/6c3VXz63OzSYzrMJykbZ
obUk8L3N36v4x0TYDADR+ZhSHj+nuPsccwLXjZ/ZdfsGMKACVVWZ5Omr65/CRo178HVGf1T6w5YN
/p/TIOD52Qy0xfIWObVUn3797/Yhi5siIb+k/WYCtEgXO81oKI0FAo1qAkS3+/0/JAUy7v+JEuE0
qTJACOTlXLCTNjnVkYGvS51vSNXIzAT7+AgR4/HgDf/28wAGyOchdaTE6ZkFcrj+4+H38fjrLz5K
/v1fL5SopVFs2YX4h10soicVVceqSGdqLyKwZn+BMYpsBIxcTRDw9Nt/Hj/H7e1PYTf/V7T6SMqy
nKiQ9VMTQcfvSTbFu45cVF3fYtpfLPbjeA6k1/NPtJrSsELEjhXLESJcCb425ethEoukSF7ub29j
smkzYPvPpz95Y/vf4z3+U9rzf/Rb/nf/8g9t3RCb/SZnOmjvxU30nvS/bL0/9M+nv7teA/BNxqex
Re9QRgnIh9JzOmHc/p44wn7B+xjmJge9k/iPU0soRTQsKuOowZ+YdFUA0+OIJ9LLj+OYPLmprONh
crGyEo0wzCNoEd0LW0YIwGWG2r2hm+Gx+ycFO6pSv5YcFxHrv6f4Njihfk3buO3o4PIAItDQxNQu
J7lw/+LjOypYjF+7vCdVWaAX5Rd/ybcnf88uG6/6Zmxuu8MC4MfLOxTTIGrqMpN2yC/nmfNO6GXc
5RDL6im2rk789n4InmDY7MMObU6itLGoh8Mfem5ofQhh3e5OJyeSPCd0OXzvQqrQTbnCSmTSlkTb
gkQ4b7MMjrI02Sh49/A+/i//l+M/jT9vf76f/vFM1TumFZXNCcbTTRt89QZz9z5ha/CAZD6giItN
wFg+IH+Xtve399tzN5PlyQRPR08Zp8ft2Y8BmkUj5Y2OiLX9t1q7RQLu+EG5ndM9yCOwkH1gsruw
TWJAJDrSx+GKbr7Ocp0wuCk22V0/y3ho2225F4HAqqY6z6Je/z6PEvKMSMXmA3Q2vtHlVns+87O9
XfkeiZofnyl1GVUKNnWp0jO9jxV+TvLkBPHJ3qzv4Pv5Cq9fnisLiUUmTNsReEbWEl8njWVj4dwE
JPg9/K+VwN1v5z9N1wpdg6J2a5CseR6z5KBD0fl4bTShw/pQOshdWiIvo4QWC5PiS07K//rzP0LL
m7cneCozlrHYm//6639djps8GhosT4QPsfS+rYH76jdvS3xhXk71cssTm0ONvhD4iQ0NV6A24Klx
RUox3s6fm+P4fUSK2bAiVYk1n13D4CbfSDd5utZlgalVnSj2JQV5+7Rh6OhYnoOJOLBwhM38isJS
WR6sjqXKqvgV++ToQH2VzYyTEV+TjyeHzqlsa50YaOxLCtC+f2xAVjQNWQyfisCV7eiSzclHxQGx
2N6g6TGmmB4e/hAttdL3fLIohLDU8bVoBg/hCz5v0XZ1QmA5qexLo2nlbeMhcuBiePTIj/cPuDSd
1bgVMd9h12NMrNY0oWjD/JH090yXMy2J8qygAvA+RtApcUq8+vF75722bhRiih4NUUg2FMFH+ofT
n6ai8yAycQ3wWLMHGeF4S8px1Ig08Wy66kV/xcebhezERy/b/QbVQaVt1GXUnAi5hHLta+hXI5jl
aIX5rqpQmqqm2tRWNBn1KlQbWVJ4pNZxWRHbntAcfjbFjUsNjmxT8IPIolHK9Qkans1Mg+gCJTAW
raLoThbf/3O5BrQ6qQRrp/gdDaaKhYmxvKKPvO8mqzpcM452WuiUTLoieaCK/Vz727vfIx37lcxG
pMWxx2gijnT+iB/s7tfb+ePvj9F5/8uNIg0FuimzyeZE2Cv8rXRDzYr88P/x4fOYaqGu9DAumdPY
2HPItI5Qg5XuP5hAkr34ZfEu3sbb38U8yNRG4V8yA/C/ny8BCvx2PHwf/zy+UXp4GtvOY8cWb2yq
24ndQc+bMe3QZv/rtP047MDqhrxJkQOnsmy+vR8PIbwJJzaxQc5e1PG03FCWzDJ9iq4/mdai548q
qlSewf9xJxL60y/mj5VJiNx8QF6v+w32G+tDldt7DFzQJGSeRI0S9I9rezls/3S/XMgsRhrezMNX
5twHoZ/HyO1GWZAkhaoIcwihJhtU5HCqxA0D/YQTyeJcJVSu79v9+cefz+dbyJWjacgyDR7/WB4W
iWVPh6XKJgcLbc3y8/9OJtan7/PPL+Iif0j/fL+Nl//xr//zH9HXQ558LO+Wz97ImML9+5DfDv/4
D3u0vfk+VYW3Iax/ObypzTuVQJ40VhaS+ASA1Dx/3vsyqwMZPHWp8i2YsTaQnp9mPjQkNJ/MXyKp
g8gCT9ub52B5/IPX+aRUJJ60rTdMn7d3JGZZjdSO3HOnnOoZo4wMscGZe1QIu+s16AS0G2UUGfN1
crkff6ZosNNe5JNUOvYAkC31HHAoqJ1ZPhPF4x/8cS0/eytRZSoRQx9WGt5f/s9xc77fos/9sb1Q
xIRpadXOqIg/zXXy4/+Yx0SfZ/2jgzbQw5Q1DM12YkuB65R8SC61D7kCPeQ6Arp5qeOQKrZumMvd
z7ezd+1So4LALQmRW7oIgYLhHa6gdUGip7y8FPPyc4R4RPymNKOhmZ0Jy0mOx8f2E3ytS84trEfP
Xu+UXnpmBrzkMoMTL81qjEg+iubiEka7gJFK3iygqkrPazn9Pu43ZIOztJKSpQqVqXJKkcQDed9e
TiGguF0O3w8+JPgF6IFpIiVpFZwLOZcZXy7bX5t8H0DariQhg4aTk4rbXn+ddklGrvcDqk+oeuaz
RJlMeinWFjwzA16SqbF51YTaLrZj/PkZi86mJBQaLYuJDpGAFrkoORFT/uNyX6q+pnnq2Z8/308g
zytLqcpCXz29w1Un2po4N3HdnthhZpvp9qU2AZ+LlYjM/P+PF6+Envl9U5LMkSYsqgWAz1xhHgTz
nd+0DeTHOXMGtq1cs+TYJN818MSekUpb5Ci+hMySRp5YW16NBmrypVLLoSPh5n8edqEbzJWgYMV2
IVN3hIj8swj8V8cRR/nn2zuVz0wjmHkEEcIvMYUUAUj9nSRapy/t/GUkS09mJuiYaS1zrvxleyWM
cEpfCJbTFyFIkLnTyBzdoiRZGoHnEYIhkZMlSXPZpCqj1Jt0vHwcTmQtTBpMz4M5mwnkc6ledy1q
/jhWLaqBL8zCNYDBaVpoEJkHCYZOMVYv5zLuYuH14XVTVNHueL7CRZl5yPgO8twdtOzxeyD+VHAJ
Giunm5SNDDiZQYTNguAQu6Ak93hPNVjkEeacGyyKiLqk4UKvrO0tdxY7XFP7wmMkxWz8MYaiNTRu
7qA7CYX7t+Wwm79SsFL6vvTxzeZw6h44NXC8/eX+GR6pHPd/+stf/gVXGsYheW6CWTWNmbl6wWne
xBehQDFdGqasrDZzpbJnCkYq+Sj/NzBs7lYpUwpooIaNT3OideoyUtK5VRSckhl70PAnjSHL8Zly
px9nk4GmmZqMJpZbRS94Uo+D0vc8jaPKCcQea3I9TkQL5oYPaEaujBQD50nK3sftZxKz7eXFW6c/
JZ+UykfKKRDy99KsYNC3HfhEzp+ocPdmc4q1f/xQzR/yAEnxYQISP/xtv/yau1TTg6QbVvWETTUa
k2GM27jujPq5vcTaRpolnpzIykOIGPk06Byt5GG9h5adt0CbubwlYjsAzdMPZB+qztyWqzaPHSoH
Uu7+uTL36jncWKmrppEbc/3YHoMa85doYtf1J129hG6rrQ4dytIXqUv97n3rLRRJ+k3HZqtjS3/O
1yjA0HQONn4tq/boscGsyajxLXcYqJoEQIUqssqyAciwM5KRPKtkc0nELU0nW5+pH7huTOd1+zts
AZPmUpReHYvR3P70VVZzOlxaPV3aqS/BT7+Z0P9JYxRtlJqN6noXckh6GY9JG70fPsFgWSEVRljl
AcVvwlUcgXJws3IwkVFilhmqp0iOcRyTtVM4XTWd7lSYmVOLMyhbdS0AY+p5zNh5QLpcGtUx4Olr
O39dtcS7bkM+4Uq1wogfTkzE+LPpt2cu9378OITLmzbWawrvtnvzHx2U2SNozyhWrUTvKaZilOU6
Ard8Ao1Xg5VCETBaZP8m/m3UGKY10u6KJsTmIZiSsUBOTWsNdSBJ1Yy3v/dWO6SK/+e4P2yRrzkU
fzqSFIdyPf7ideHe787+n1I1GplYTySp7NZXySIfeN1i44Pz7wHqCwUP3ovdHuBAqgQblWOSphRa
Foz7fzyH533f0CDZH6+62n+EzZiQowhlZXiuQ0FIQ9q8VaWJ8pxD//McgKABXF6YjerZTvjP7v3w
HQUXPMcrc1IqXYuPz2NqL1wFuBUnKbpIIWjAWEysdck9gll0PfyfacvGn6HLb+zDMDPlQlf6Mz1S
rtxZZJppfy9+JMpH8fWcqXfV9vRrUxYEpp/rjxbty1KZQ6ZDl7XQA5WCm7gN8y4Ersqk5akK5/h5
LjyKr7PwYTqq03gLwWU6oOMhVpGHFvkBf6TKffmUhpjKoOpUwM/3S4ytwiAvIbPSr2XK3ZNVOGoV
iGfluZhUZl2ePknJ9+ATJaAjRwCDpPv4q+wqmGipJ1JMNWCC7j4iJZEex5RHYsozTLnxZzUc7acm
7ncO4qp3dj5i676f04NQ72PMH1R7AIbLfkzVCyqV5MbGJ19eZwlM6jdQyyi5Q3FubA32LE+u6uQ/
tY/aeK8iaIn5GoAZ8cUS+XpG+/tlaq+XypgC1lL+z0FcOkciTfmBsObplaw/xsu5DD6l6k+b9K/H
UE9Lgb1xVJsXb6JjZIb1xIskP9GyKM00u+CppXaOY8fP6/MbWrzn9hFX88odGMCciuMYTkpxQY93
P+UXJQZGD6lVGTLoF+5qhkk1MsQS/EJzoBl78vPJIa2eUPhMBje05CTph2mV1VDlpa9yQ+cwFVyG
ooh4Zn81d+ni/3a8wMF00SIDT503+JNCS7dXSmLLyshhov7Ph6mGevA41uc7VcmYllxu7tC6uWXJ
iQMKtHgWfBcCSTc3S5gtQIwDJpyp/ACQjLLK8jRfeNvlKaVbgsf6udBHTXv35/jqox2wMKOwcmvf
HQEkw5Q4LiLJ+rkhORgyR7iL5Mv1fv0c67evntt5W+52xGmAWnxKWaiif1LxL59Bicvtq3MroXzQ
O3LSO525ocNgTd34eEnP9xt4FiddzHLly2vtQWT9RQyfP7VAtxB7Ri/vCeuuZVmcKScZC+tjB/yn
7hLPd0mZGDE/aJv95UbW0qbrqBuXuXNoSNzLjEKxgJIPBi2MOVFNCjvsBJSqKYhn9Wo49mmBWKm8
YCtio3ZBeWlgSmwhTmZKkgTC7PbjcMyd/p8Rq4LZV0+xhBetbuP0pDpEw/xk7EKhakIEktUBgqAq
q2jTn/RW40fW0kYPTc03vTS8OYcka3TckIDrhsM/vci1z1ets8MFPa2fG26tCvSUT9Jd1GUq155b
ap+v19ft4taCNeXpLLq2x10BXxl8C1bK+jh1590lyGhqNNRz5s1yu8FOhe5DJP067VVx+kR8Cgy4
yqVvYHDeoFAVr0jEPyzhlfZcUt64NEvS2XMhpGoYhdiG8XL/DBsfopOnpMI2I54A25YqiWrzSI5T
Gi1PSwQNJSYVlbDxp6YjKm3gEmhKn99xfAWTUaJ4VcFrQUYm8Q7AWOxZc1WMATBXKu9T6knVjF4P
vd02roEjdCaFnDLZjOCShw5EsTIkPL6gPaF0C7m5vp8vt/dtP7BnRdeZ/FhU1xMGYJIuzmtMT7AH
8zK32oJdjNP1lY/PF8fr4j9Qx8NL9Vqkv4RpiPspdaC4Dgy1FIuPGSSMji06jMcBAhfU9j6XLn9e
em/nzzmPr0zQn09P4LHFO1n5c6Z7Pz+9cckKyWjxvet+n6dfka7L9GVv+nb+PHbgWa2edXdvesKS
Ld47K9+bzs/rvHvVo83h84AcX0P3IW+8osR9Dw+GdibDylGWEDOMtj/vAlfMyxKeztT9Jw4QFYRb
rWfoTUHl46zaBlTCiH9f5tMIsMfEk81f697Xskhy9Z5FEYbuTSqHGWhqRRZjs/WDv4y92zDkBUyN
cItA/Bhffj/cukdgywjClZ6FYYSoLyIiuwtELDjMxJ+OlfSxZnV4nEhnN2yWpuppyTBAyjGG3++u
hpfV1C+v5CMxXe1UjsTkx2rD5x+xIgnvgc4LEBmUrmUZf6540WzxSQuWB/icOsoFRsj0KOu1txP5
QAIuIoflQnoXO+9C1dednIg3SwEYD4HH/XTdvo694Tkn9Ea6Nr1DNvnzUIc2N9UNn18Ou99/PSFp
Bv2+6l37/POLPo/he++DxKTq0Lv6zDlkxrpWTCpkBnhPc9m8hPgc26MR7ViR8rmJjXTXZqh7AirP
v36idf7+W+wwGqqGvnXVl1wcJfuqpHYuEasvkVhbJ9W11oxa5iypndVljVK1sF4ZiM4UhiJo5WWH
soSegVF5BrG9xdrCde2zYQuduPq+t36RT1eHdWg2EMapp8/yLBK5slKGh4K4dbR7cTzLOxW10urt
hEB+r+j6Co74+cm89g7SZXsQcYwiB6F/RmCo9tXmwAgDPa2gc5bFNKdKEfGoNllXbRriIOMUXE+Y
i5NSN08P3x9OL+f9E6aDCaS3ec/GmzKDuh9S8pk//np9Ti0NRekFUpVXE+t96KnfcpJ8cSsrYehM
oVpI/OPBiPYsmCD00sLb6zkSjljH112SYpDK6+wr2YQ7wpwuO6KWRzuHhj0NASPjhVHsOTh5NRUQ
VMUlnZuqi3gF98+6loPT2Y0S54Zc4dpB6IXJKn9eNdusw9ye4VUIo2A9RaHL7FO9zPCoKDrWghNx
fgmNe9pWIBepF+jLShrtMqy73F9+9fweTXjY2e/o6ofiN9SdefP8ewIgB+IAFxa7p6zxNejaXGPI
Czm1gehcJF6sVawsttg97emo4kHozBSpfKmeB5F3o3p3IQtE77cNulC8G7BY6P3wrrmwbLF23QGu
OpfTEm59Jd6925n3o+qAUkcGHQXTMZ+8N4Ad6sO07gFH7Px+ueBVyckCBe6I9oBgUNa1darYukJ0
WVytnjQX4K8kCusItGNg5AIG1m03rCcEisDvJhXXc4GgP826oZ1a3EnuHtRbxxctwWW0ccB56liL
vJfMxj/4Y3DSWYpjBOA0JwV6mlqtv4/1rfHXQ71KeDSy/XXchPSkRnRcZKpoNbk0c25kdb1GTuB+
3B23My3U/6uwS6+H0za2gzt8HG6gOFrn4ur6VcdzfCv38/BzPAbn9xxyorFx5esNvZEZB8wV0zy+
k+T/lFMDmmt69i68QbG9HMh2ZzYB52kQZiMNYMqozXM6v75ex1ucTpjXgkncm58rQ8vY9ebf8q5u
vh/GH5vDx1v9GtdApP7iYCovtpgQP1QqHo11rh908YdNhRFpgLmeIZXsv8y1gfGVirk8OD4jngjJ
87/fEJMbYu/ulMFziweJW4NwNIjLg0wQcqqp++NwPG6nGvjLOP3N8Vs8i+u3wLuOf/z3w89/oeQv
5gimJu9seuB0YkSFHfgGnkhisf/k0Ph0PYnX7gQ0HsUP8O0TjjD1r2YLuvxqBJKIPk3CNoY4n8Zv
F6rXXfrl/FmdyY6bR9dUTZvH62WLobl54Y/O7snGDD4O1x2addnxQpVt7JeXHfTLLo9SKCEvx/M5
9Nl4Ax9ODdjZ9BLixK6NLYuuaNaqMeu012neaLOXQi5aK+4KqmsNkiaQdB+cAcsfi+zdhBl4T/WE
dnkgvns8q87sh8bsvXT3JuDyMVfv1++2qLt5OmXbOK6X82U/XuBnT2iD/q1wZbdLXLS+XFipTG8o
rJTKeDz2D1sZ17iUj+KGFsAXxy6ndwkDcZ2hz8xi0xmpVDpXmzfm/3L++e16+IOsOUwrL7vm4ATQ
r+fDq8jHDbOChlBr3VR3IE1dev90PjLKffRxumokBL2CGi83/+FV0F+WZGBV8TJ96cXn+vc//YXb
g58uKY5KeMtPgy8LRFLxbMNbm6f9n88/+r9cMsRVaqf8Mge/zBrBfN5nsFsFRUjNIaoPw5T/PL7c
D0e4W2XNhfI6/XLY7r+8exfrd7RoscB59WrREixakIv+1wAJ9k+aN1IH1dz7q+fLEdYnpsDkJSng
z218wROreP1BzoHMFPSpin2q7Xvi7JcHoJar/98u5/snElqxRBx0W3TAACXMrZIN6b49JwCckVf9
qQsrW1uYJuA3AMy8ydOqDm/ae7R5BWoY8t7nGx/3Hu2cW4CHrPhS/+38AdZbfrQ4MY/TRiJTpNZk
WGE5bXReBSYc8oVdCRz6cbvYM75Sdl1VVXiWFXqdJ4+2W9dgiJieUPQ+9/fDKb3x9+32ej7fvvno
/fB2+uaj+t9+EsbVmmKfi8YN4v7tFv4ETjCTDefO//T+22FP/55iC59imL96H7f7b2m+kVBNDlDF
h1UtQAzyv00Po347H8n+A3HqelhMQkyT8B+H1kGf0zz+er+GJ+LJqZgSMD5OhS4wTVOwhgyA5rbs
YSunfuHf9mN4bOE72YgujilafuZqUbvxdEOucmwqM4UILLPc4rGmAS6xnSx5PFLVnnauoshHc9p+
//Xt8vZCz8AoR4jItKnkbxdHcflh3NUygQ8wBMtbGLNyvD5SvwXRaQWbR4e118UOgCFUK9Sab3Rn
A7RpCWTZ/Jfjfexsvmz5/Ol2Turk5Xy7UWo9DTG0hiizeLuM46knA2IRtCzP4b13DqbgMdUUUmuw
b/GtWRTcZwUTcfPmGf4awyvOeA3aiIVqdfUkAqo5vwoJX7tIUyohqMthu9/R+US21zG8dQI2xMj2
1bh0RMqVC1GJ1FJf7963F6CveSP0Xm3n5/3yCbWl5g0rdXteJJluiFNUatMIH4f9Ht0sZdrbEG/l
M9ugWetSVJ+TZURpBZw4h2iqn1yEcBTmVY5i+7f7tiPXUrQOYy0Q9FKEbKBg1WH2pZmpBlpZHyd0
eZRtmahq/rPhB0tQi9MwawfiyQMZZGMms8HaHbfXK/0tXwIrpuxBUo708ot5DTkb9SCJnePjLfXu
155QROT8Gdty/opWv3i3GeKXZmANlRrV2BMH74oWqO9g+vnDHjlrT5j11/vu/Uplp9K9sf1RLuO+
c/u0arvd7ytlSHtJ5lmF3JuJaEB7DfuGnM3ibolMy8seW8SXv33+BO5aS69Xrkay08guchBNpN/n
yMTrxl7Gw0i4MjiFFi46r/wpT5u1Irf426fzj8sWKMAqSzjUN3hOYND31+Ltfjn600eeoWwFmw2P
CCbqdFl55JbalpuLZqFbeb7y+fVw9BFYx0GtXO2iflexFjbpuijSqslV1v4BAfnc7gJCT4uAawhR
tZLbuD321uHaGrWkPb/FJSFL1PItF/7+thvyMco9XUStpGYvKcHYYFA+2IWOJXZM0UrxqcOU2Cr2
rZMxrm3Q359yaiz59XOBb8n1xPoDUye/faTzJHgg8jnI2JB4nUL/Rr9al74ngt/Lc6uYXjxiSwQ9
abYnsCVT2AvVJi6dC2BK8g7Gmq3p4+if1/ocODeu4Q0SLiXQKmpxBKylmLoOri6aZcYY80au3XR6
N13bOO6f9VSUJixchUb0LnblMdKbCg9Wc73IP7tytRDQaYmAbd8DcZRs3+TL0zs/vbi1luM1Jgxc
/HINVdXnb2nne0CSon39L4yjyzi1z/H+hWiRu2aUlZPQyMM0ruWyVFvRdftNcfuXtq2OuLB5sxVe
3ZxEN2owJWpYarZ5hI/t5XxGkVd1F0Phtai025OayRSprDoh5qs4HcUOekymHfe/h8OErqst1BsS
x+rh/daJZzax5+qYtqvy/vT1tlZTUfAzgcP0FF7LyAJ95prhxuo+/3g/wASFafGfFkLUR/J4QzWt
9XlvFF1c1sr1nhYTPO/P7T6Ub3TEscRwVSBRnQN0NqZ3UtfSVPkLfRiqOslqP9MygtdWYkGwCL24
U+rBZeooJ2NFG1t9fy6MNc1teDgKtIKhEc5W1/IZMMNoQYt3XkrX/3UtPKDWMT0fUJgGOFcBi0lL
XsYjABVN297U1wyGElUoY9dpNPCztocKdzbPiBYs0Uy8IBWzYLsJ9RCBTNEsiEFM+1ZX9roj0rpo
l0IVXyXl+1pe21Zwn1ORXbBUN12X2tL04GlrKcdpkVFGeQ9TkRgLqaXcqwkmAyquZTJqkKRW1TRQ
YkmHuId2ywbS/wC2AqEeGtqxTxXWzGAXvJ+nMbLjrnSstSnWeh2IZL/T/z5t31wD261vUd++lRzH
WiMUksS7F+LRazSE34sF2DqxAgnccRNlG53M0AiwK4M1o3bAYC2z07xpazqWQlfVCqFVAms4tB01
VcgKa5NXQT4d2EvItrJcQz40eKiehIRTkrx7OhUCxCsEqIqeMejgWCsnt8wsAu/UNhg4D0Fvj4Sh
mySMZXIAk6TYAJgwsRLo2/czQi9KunnRgD0v4nj46HlUSjUixrUV7CBAuhW618K1PR6RdLYCpQV8
hI9T8maixEvDMxrQlmOMDGxZefgdq1POr9L+Sx+kG61qDgCYlNoSyJEy/Wxl5Nn1soQMW6EnxjCa
dXzLDnmikgNZsnxrhxgch2xUoCzkAIPrJeNUscqaSm6E8jy0IOaSZMCMAdOEQFYnmnJf6Dh1E76o
gWF8p02zdukh/YakQTdjpNv+STRNAhbCs3mOVtbsIe/ckeqKH1YRMS5Ps6JM84Yn7m5QFMiHUW2v
OukmTDwRktTJybK8nBG9TgxUieoKR+qx68ApTi8FIRdMYvc62Ddk2yQNWjyXhdZSU9mRZwz8KpPu
Hq8hzDU6jlO2HQK1qQDpogWKBzujscB7dbVpNM0NfAZO1cpgRyWSTdFJckxpCCl0tBGWugzXklwA
0a1sO3prF4UOsjoHeRn3aPay4a7OauCpGEIICqTIyiB4GgiKbZESH6l0fbykuRV1mgehZqYKhuQi
P9Cj07mhfRMXif+eTTS2ZU+aeBGIllVrkIUsjpcd9dzIJJCCpojenkXydMUTInV852JqxekxHjYX
2QlwQ5+6Jbq6JetSjRIn98J1ASiEt/2zMf/Q98kD2wZt6wAs/3P+E2+yjqLK6jF/bdPmrQDFjsoZ
MNMGZ9dNhb20sy5dmHooHQ9KZ6I5Nuv4Tqs0rF2hiTgKEZymrz5fXqOVo6lOafrgYoumsk6Hj/CE
AgMvsOhG9pc+92Zu5fIVp9GYJ5KYvVS4VrpD5e8lebho2poq5QYhdSv7Gg27LVrbbpVP395U5QTD
A0o12X0aoSId2FYmlxaKZtquvs5YIw26nQtvFDzRPtjwBMWov5+6iMWSDF27Ab2UjcGO+VOYrjPt
lg2Lm4pCPG4BKFxB5Pi+89a2LskCT1SKsLa5e38OwSvOQzySReIgNny6bs5hLTdkcovBqFr1r01/
50ysaxu9rDK6xapVcWQlGZcn/QajBtr4+EX08ni6RJxVf+uKK9GbvxsUksrn/Kcqn6Rq/lBTqOiY
x9C1ic9znrVivRC+c9mNa6bHHnll4Ho4CuDu1S8geXg+SaBVq5Kr1t8dZHdoNyYKKNYZGcCKi+ZW
/Na+K2Kq5lFyndT+QpWrVoL255+TaEkQ5/c9T1TaRl570myf5/ldvU75TrGejQqGDs21sGppNDok
udHiOQWhdemA0i2QdE24H5AnM7SKABP8GtwHJH26Lz8TsbSXKVxcYCkX/ktHBFad49gq09nnc5om
c8yrdPzDjiEuZkdsnO178J0yJC1lu/bqkaxET4OovlxrLtqI8L4Tj0ForQh+z75bAKY4YFql1CBD
kAoAmr5SRKW1aV/guIsonBSqz3HrhQ7iCUnqF1Bp7UC/BrQG3UxKXp7sE2GqKuZFFqxBIKW3oF2E
2G4ZQltDTfGEnohm3SCb9NE8B6zHB4bJp/gSGkVBxg9lfPTqW50zWyUqgGaAyqL3fQqvE91a0p4+
a9YePZBmALCigDuYNMqANAqlkTPNkSYpSoBCdOs7LLftz9+fvUNmqYXXNWPdwze6nQJ6rruG5MAO
dUyp0G0wb42e0AMMVBeEp5BcY1ug4PLig1iONzgZLawE4HCmnf6qRQciFGQpxzO7V6X/m3jmUw6g
qRzAxzVAhpdoew916T2m7rFmq6f3p7dfMKopS/fSl8Cp4UE+Hci7ZVsd1mBZYfuhW9NoEdyADFI1
jj3vfdWWlq/1RldxSWQ1nkLHShBNFLDPtRv0CIZO8lVhHDB9i/LOR/vfs3uGrNJ8WooUKB1/LP8G
NvAB4ovx5P0tNa/3f8O115l0d3lXWtTXfKD7mzIOfDbl8ONnVRx7f7PcSQ3a2fMhERzjl7r+0jv2
EvxgKjCJn9nlPAVYHx+Syo/fVQ21/L5wp0HTfZt/ru5tfn+TwiowS5Z3s4KOw69J4zYC/Z5sf6ic
UBItT+fvKizr/hZEDB37oOvtLNvChBHWgkcN+OBMe2sc19LAo58ej3cL2xcnOwxgb3T+rG5G7T9j
ggsFfzFV2z2evvVCo5GQErciPFmo4Q+WzSnmIUi3j/7Rd0IR5+hPiqE3JqaSifhlYaWFLw0TUAKK
hJfK2iCqwjlwER03i5ufj59rpzTYU8aziFfBZ7hSkht0pcrzF6X9fJRUr4gV+L1haIu41EJb9OKG
c3xx+qzojEEJtERmCGUTrj9648OK9vUPjewHi35xaP+ivxuSI8VR/aKsf1EPAxNI4RBLFIYhe8HE
Qr5ZOXzFgV505QJXHktYn78xAs3T8LaYskFbhq6+0W37xBXS/FObo8fPhFTwGmriO26UhuLNi8bg
tVaMsoYepbF5Z6p252FnpEBHMcGXWWGU+8QtMtyMsjTeHMB5qvx7VVPZ7GIgCyV1+/4KL71I2BQh
pMybWXh/bTFRgSmji4ni3quB9sK2tbfwu+PQVAktbKRhyIsiTalfIvjODG1twaUa0I5yR+xoMt3o
AldiWoqy4s5oh5S3su3D14MdDLLASwezTNUKeBJD8dx0bUeZ9MobCfjUfunRyeD+imJLWg6/VEmF
JcoB3cTykNTy8K02yMYMijCkXGpkuZ0gbBP3fgISGmHasYX3oATcUKUXKrH4l4JB41Sc72VsIQeH
FCJTi/VVHhRTyGNbOULl7vIgaT9JrTYQgi2hgziV9LaOYUARlxOybXqlksB39iZbtS1aCJ0k9LsM
4crGg0fqt2jD1cF7I6OhsXdtUTNCot+Tsn0UbPDqAHollLVn3to75OdJQta8QwrvoG5/5/2uQaFD
HAjF7UPcDfKDDAEMeC/IIZvNeHtnlNIO+bFL96JSok4jh7sEsasTVEoiHerk4jE+VelshAx4nW3b
0Q8Twnt6MIh1inC5pYKO19BWM9JvKLr3zhKOpbUaBjFOLBy2Ok638oq8C7E4e1v56gb+oiJUm9TS
DjjEI1S+Q5ZpAs4zgKEqVQpVYhXdL90nHpAfdPiMubag+sjIIc2mObGnwimOf3Lgbb/EWgVDSiXa
Pqnyd0qhK6zaU1Xe01PQ0R8EcR5exlEExNo6ygcWHDrdhI6ajpGhY7SLu1HiWM4R9FV5NGx5F51A
LpQkglg3cKQy1NIzKViSdGhjbAFMVhiUk+gH/bZwFHEhX09L4ic518jXM5rCdsLTQEiBExZReW8d
AtCS8E3sgGRUW8JJhF9JQ+GWhmsU/VSxyPLnDIOoPGF9Q3yHTs+w9maGx9iQW8IV4ZNGTA853QW9
WBl8wZCusJU3u1ihGISBAlpp0UWQ5h02N0CtVhluXsPkVmgY2xO+rAiwJTSGmhJt73YOSP0S0I6W
BsmoaittIZhArmzBWJbmRXIpkS40BLSunbAcHkTJja1AeYFs79xrMaO5+QD9ORhkXwpIupJRqzXy
2AbTdi/Ci7UQ0VML6KKk4oRBvuwgSN9CQRSpgF0BpFHFXfMxKnTWHOWsoUikgi0W90EqoQYU+sj2
6rjxAgF1jByIIM2LixPYzdPt1Jg/Wxj4KuLOB+2EPqw8p9hsJ19578oit3JwVOTLUP7W+6NEwCWh
y2X50NaifpoDBC9E+yiUFTCtTUWTkqMUpeOEpvD7zOE5VInGha4PXE2kDMv5La+u9DoNxYTEKQiO
4h47tADH7f71fNmN3w4fb4frtx3FWBkKW7Hh56V0M4x+bTvtwI0ZUCqWldT4OgM0CCRyWrTPUgXy
F7oahvDVuQ9HNhAlH6i4AmE7poLLRL0zjjMIQilJQC3a+x7IL7GEYvT+P0pxSQIn9U4+kzgJYAgd
Ht4PRZaUa8JCcTdAHW6rTV2gHw6m071+G9r4jtJKw3zqQBExGALobMnfrvxSL01oZ4rnvfw9GwBf
lFMjvC/jYzis4Xg7/pGhDQaaqCDgK8Gh5jeGkDYljR0Q7EEhdNwxCCbZKkmtakaMNzboCCnORwLK
kaNhbFud6sFIh4SNusGc+1AO6VJObKp3BjWkGRBARApKUKinefvqh4vBB2wyWMOoSq/eYJpkaJ+G
8KcB50kwsLwLJjg8xUoPL1aYAhPIFnL1rlbuhkOeraXgUoYQjJmn//iZHpyDsyTIV5pBwkCV/lsx
/RziCZWgJDKvyjloy+DtZZzCTCxHOZnBDe3bJDXvgBGWZO0xC2mChrXvYRI2mBYn9LfTAjsLrk1o
M4zDtKMtacclQCetxW4UQb4KGKRRGLgmJMd/iOeqlnqxBKYWsRssp9A2KyUybYMi0C8rJIwvJREM
RQ8TnX7lui3puhaxRG0FeNsFR9BBhMcpwuRriM06R8TP0kCHnXb2BFQ0xlD8ixDoo+2swpklzVcx
SCom5NNYBkmlUrQZt9O5b9HBOyrtGNNAKGUxEOpbKRxCszavdPL2kbNgWBs3U0pBlcGIZF5Upyh/
aCj2pETMCKOJACpEltCJriDMxQVm3odESJZqJ1a59meBQBDX9ku5cU5gJEsQYjNwp3FeJl/GWOS2
2BuEDWoqE2QHdIKauPvWa26cO1SMgJNj7himEgiAIKarIaORtxEC4b1v9IOUvAXmD9ocKdsgkbf5
UEwrc7jQwwj/mN+sakSy4RaibdGOKAvwITc8CesogJ7DNJk1xHcTVIMUKifySNHNRHNlRNI5rRI5
qI7i7QkLnRqihMUEjBdZG04gC2LAKdnBEoCbYdDsD4TalwICdW6Vyi0TZdBrGwgqlb/2HFe+DAOx
wEj1hJmWgVIZCuUwrCbqUKaMAmQcKOo0lISnwQm2p0UUF+OINLfXbIziNHoZZQQEEkMo5IItfamH
AiYU0qzuU7n93jGH4ZeTFH4yoLjbGE1lrTVmtLqK+rWKTYcBshwUYfkHmDIzRG0eY5AyNtWzN2jl
IZkNaQckMcrHl4LkwjJOgINRgRsEZBHwp3OOI5nRhEPkvLTB71g72e29awy2a024phH++naInZKR
kIt2lYfkDCaWDKEd/YXrEHIGqpLBocIZpxzh3Dg0UT4IIt2ivPaH+AJVAhE3Fu1oKUhw+fGciPDL
AdLbHFXaJxQiDTLWdouUQakPW9G2F2af+XgP4WeVV7ustPL2QsG4jTFGhDX+QwMBG0K9ocqn+YWV
Rm2ulRAmIFgE3CgIZgwoFIJFQVTKO6p9SHjQFMwnUSGDUwTanqpIIUA0kMkPZPWrS78sWw78cnQn
CHXqPVNI3NTEZ46hM3QrapSu7BquA6YqQ2LWC6KfrJZRUVFkJMSkiluz4ol65xMmrVnbIE6oKcR5
CEuT6LcIlxpk28vwh4Fye/4nXVuVMo7oqUYZstiVd6L9Us8ggo4SVc4kIgWwbJ2i/TrEvzdOtzPJ
TAgnUSrZaaqKWCMCoBMEosEdDk2NIwJwwTVKJw0EWUYwB8NERWWhmN0gZWOIAnLvu8H91ESeLQV8
UMAZhRCjOlLjlilvVWNZV6RNCfmOFGM4UU5AUqHoBvkYBQBdlrMwPTAISeg2smQE4v3yQS7LuWVh
HOLKRaJKVnvtjYAsQZTV28FoTP2UhMxwrhik8hDtRtjgHTNkEQ1R0KuMGNB3nEDpY84LUgcJVMkJ
AQkrigi8tfFGGNNp856GXLsUq8wAkm9NsHKiaoM8x4H4UEBipeOiffOldhwWTxG7I5VB6DfJa1eh
Sh7iIASmrK1zSCmSTEcDK6AqagVbpCBjzgxiJ5zImUXUBSYjiHJn7gSiGzsK4ecauWCmKoVYmt+Q
RkUuNFVqqQZkDjlVChEiR/RzFN2QccggsET4ax2kuQyWaBfj3Q50Iaji8enSQwiESloPouN8G6oq
RQucoCHrejUk0lfqaRGRJpYTuhWazEIFABRW6BLhrLJywLaNKwDwQ2XqqIywvzQo2jNtsnkI2OEP
cqKXA24aYznR24ZxA0/ftZnGIa/nEMJjFAWbCiv/hnBTTrhtkiFz4YqjuMqYBHOBZIZgxTOBk6xs
0YpjXbsMm4XJtnwLLiUs9qEAAoaJv4wwpFZzCO5J196Z0DUE9l9zFPKtoahZEt1FRABN2NCQ0UMC
OtD3CEGCpXQx1PnJAuk6Azt2UQhk4pwIBAwQ3QMctxq2KNEUxVwzhZN6q+LzqkwIVeZazts6JpX3
IV+2QktX7JE4V/QpFQEzKWADPdHOzXEo3POz5i1fwUfqyIUyRIGYv7tIcKpE8MJZ1zC7JgkKiBwg
rdUZitOcxBQB3hXwtdTbSmtYaEmUaIYsCNRqxFRjry/oy6q2oWCaKxjfZwMTAmGpF1x4BF9yKteh
rUGIIKPqtSAzyoqhjUAm9wk2lrNUUyNrEXezqn1cthxwGBKyRHYlFqTA4oJh7ZVMHa+P289reBAr
9V3ODV8D90WCvunKtJ6mjAUZXHNKmtKXre6/+UuBvlw+Q8jTIs639/ESP5ib/rZG4PlNrpijCoHr
hKffxutNg2/k/E3IG7jk5/7YTr2Gb+9V02h6DDWPwYLNZlNrt+txe30/nt/O4Es+f8llQEq5nByn
MoPpsQMwhp7HiBSCtOqTX/W4/9fYLBh8OuRPw0TST3+AD6KPED8IIZvieYcF+BGRv/Hno3T/JSWe
XzBOW1NiybQsDr5y+auiy6qX4cCXeRsrtDJ8mRq2o03Jxy/js9NpF8/f4yuu4DNTzj6ppfnSBmnb
/Djc3jfH7eVt3HzfHu/jZnfx4gS0h2iVMr4fbuF4/MrjR6+H4zHK1eZ68wNc0W3MDbCDvrZpuPL9
+X7DL+Sp8n5JzN8MqwHGj8/br3gyaIxWI/8yxnH8PuLvbaOXefn+cjuiHXh4FDcd7B/+++238efn
uPPC+O11ezje/cdxkN35Mk5/c3o9HnY3YnaulIIH8bYib/HU2fvKwIcJJA0fRmeYDWp+4eD+cUK/
mMi+sSTB74wdqse5zvfTHn4q8mSDjhuG+SfxTG39gyZZ0Otte9pvL3v4ZcoCzL/n2GJzOPpJlX9S
ZXLx/KFAH2pqV+OTEfA3Tf40/ougeMK3+/NH/GD7+Tme9n8K0v7n8eV+OO7h0stW+xXYtIJqCPgt
b6x++vZ8/N/CAxjw87x5wRxau/wcfikX55XE43C6jpfbvwZt/8y68y4Gf8ay9RB//9MfAx4hH2HI
kdvJD/rYXr4fTvGLZFS9br68Hs8/chv998N+P56+gWfpguc4kTXYKopYvNrpR0IjTK8buum1SlM9
+Z0ntT9cbr++Xcb4D/HRFDDg5Ki59UtXccjI//p2fG+/9hC+n19Jcuvn6avv369+TWgIkYco0DtY
E1oNm4davx82zWX74odE+5tPqEoCrubiXbr9r9P247D7th+3u9vh+/aGxrRmsUVq9S545z2POMT0
ktUqJm89irgJJhEtkOcF2lJql0ZKTv40zgVutCz75NbDrCaEB1J5ZdVTHfWJfU/SAy6VIM88H1l8
cGi+Ep0dmp7WdY8vRhHj9a6YlYsJ8sUVudzDcxwhRAAXxOUZVfhm2uzXw89xv3l5Q2eVP68qex6f
OP8JxM8uJmBIoelsrczCF5OzvLW1T6rS6V0v9/hI3qN2pp9qTQKUV1chQo93/onXg9Jxu4ZGbD67
At5QTdsuG9velcRv18PLkQpVpikuN891B76Ef9Efln1lI9ELRGk42xB7Qlp6Vk73F1xmRj6Hk05l
oE7l+vCGOBhFdSzVy4hNnSpSG9Az9ZTae+IQjSPVX6WrwMI4KQQLdwCsLM8gOLL6cWu+nw97dJ/L
DBglhvNFxEdthoW/Zh5mcnmHlomROiptZYh+0Fay/v2fF9LTJdoBIzRJ3PknsEF5U5dPyq1XQw/Q
siHLCSTnjLZC7kkr5CV0E00bMkVZIwRvXwzkYH+7Hy6/o1OSauFRDU33jn5wMC3NPH3S6IxlQ8st
z2jr7TN9RKZx9ZdHdIGxgCKvC2lWkP4fvujY9XwGyxfOvabOHB22fdrvTWhKVxCVqEecCWuUJ90f
Ti38aYV0RjKeSKD0QpNywmw+583YYoMLQWOlgaLNo+VraMSqXYF44uJYsbBZj0HIEev5oWFw1ro1
iBdYGltsjqA97OekSuYVBWhJtsL6772wnPSZrq3YFZgx0Tg2dGeQeGcVV3OJFwjK9R37TayhriGC
0otERF8q5/3q+rxa9W/cYnZYhZqWK0SLFRIoWbubHDrjFzQjs/aJ1o9JJj4bgdLFRFdKerGH5h+x
QpqTHwo35A/X1XwU/Tn+nsufucVbVmQL4jC4kvNXFbCRijIl/WPC5s9itquUSTCtNwz8nskfLvkX
dIu/OEuz2BK1/DnwoeHtvQwdb8DynMi7snwXLDxHBD7jiyNgi2mC73T5uQKXxgJV6r2PuLa8KcG3
kyUFzcmHV6KcqPaPMUCvjmcwLI6cLxYHjkDnTQkMhaqMyym4l0VQljW0wlgJVpc/C5kVbZaSYsFu
qsV1rTq0DZKDfZGsTHTx6JVVA6PXJ/mwkJWhekCBI+Wg8266jE05oyl+dPhG2sU3w3JPwI/prFJW
r5jIYTBIVmz+MJodvWCUAKUpnK1PvVJHAZ9Gu5l/cP2wkxmANnJuIWR6QSZC+iifQtwiVjcHAJ/Z
osbkI+8fyNjAslTzwENaEpyRcLK2VKejF+A6FPEUSz2tNdQSyx21C9o4OsCyNQsmjhHkY1BxfXax
o3UrVrQ4V++KqFpJaLQ0QfwWB+pW2HwCwdSqqt5WCHARbLnni2q0dHBAbxpByBhTSP25YhVsrSNQ
r4M4T9EWMBOMKDi3ctx2oW2VMEicCSWditjQh642C6XeKpJpvwEvjmftvnoAyAngd0ieTz0ad38q
VeEFsOmKt62eJl8viGdu2yYo+GlI+5mFeueLfpZIuw9t2Uy91JAaGyjnzws1MGBat10I530WAw6h
eB56UXgupQW/5thieSsiJfI9DOEJSAd+zuZZhmhY1h448FBlFujIWxKFqk229p3Zdy07qRxJgo3X
h7dXlgod0Yd6YUYKS5txoIwUawtYelYd3dasjVak4sGfuAXf6cUtrwvPtAJqTLB6O/nSswIXVhdf
mtfhkz9zo4C542oRzqzCLrChSw9wGZgAdaRZ+9ylYRqFGJbw3eM0UUjD6vVVAZSCMaVu+ypTe2x0
fsNCsYjlRMGGatuOK1O0ACSUEeY51AACq24J86w0+ahY/LWhreEZ+Vx8lBbVNpYJ8kAKUNTbKdUy
XkBeRN7OEKuoofIanUZeI+H+xfMDEqNl2zLE74Bi0grcI6SutVnrQcxcTzRySDkcCo0v6LpBLyno
Gn2b2XMs7BsrYpi+VehbVjiA4Vum1gT2SHn9BjivrvSPS+OENMyMSI7Xm0SfuTL1wAcOxuHfM8i3
uY67iNPOYN9mdzx89jnFZt3YO5EpT9+36UQ+3w9+nESt8xNM/5Lvf/vc3t5/exn/OIyXP90v38d/
Pf/2sr0eds3fCgj3VJMnFp6MH2h3/ogY8/jb/bQLkx/j4LfxcvptH5nN27iuLZUJnumcafAKceRl
oMPH9i38wH58PZzGPTWOmhogiUVG63r4Y/zND3Q5vNz9HvwWMxjUEHNbYLFwm6up7C7n6zVtMDmN
IY9Rgcx+jLiM/7a9bX87v/zVn/dvn5fz53i5HUZyLDE1/RYLmNOPFUjSf4kr+dxeruNvu/vlMp5u
v13GwGwnt4jpoX2O6/EOp0DW8ONcj8SNjG4YcXBhtD+HFd4u29P19Xz5IIdQw2KzxKNgxTH8rMLy
ruf7ZTdCaZrKl8QEE+p5wOst0Aiv2yCj19v5Mv4WCPL/ZyBnUUPpqTvOw0nexp+33/aX7Y/fAhvF
737Sh+P0j9RwU+lYKLUQ8Y98nHmf4m357XKOk90fLkktkCNauRAPUYnruz/Dw+2wPZJ3WmTZqpyk
xerCOf72sf2Zdun6sT2So2lVRiu+0+PSikRcfx9/0JJqhnKOrJbUuLTr7XL+PaiE7etrpPmTi6xE
tATsTXFYTZRaZ7mRlSPUut3X8UZe66lhxLKaZbW4z8v9FC/2d1KipHXtybxdtvtDuDCHk1dbn+dj
WKyXUn99qLG4zDsVsTrxjIqf7uP5fqOVu24fQCxP2W0/f/Nqmd4oydoyWiY1KePa2IRJ0jorK3iT
I61KwX9uD1GNfo7bm/8V791wUtFzuRB53bY34+3v5n/6bfxJ6q25s/iDskl3+fovZz+xfzj9S/gn
fxDH8xVIfTXWQr7i1U4Fa1nDE3I++RZigaE/ageqRifqu6GxP9VeT7t8P3k1d347HcCKVKWsim1f
CoL3dJ4QSFFUps5ppKVOT/cPOkTasJ7dup7D9k4TOpAKxRQ9VyKk+gqHv3otvjv7+3J9336OpEDy
YmAi/pDNS1jWP0Qn6o/xcsbuC5OE7LQt8rNOnjELx6NxfsnLmw8QXGGVfdEqbJ4vSpSCdHSMvB5F
/TZsy/ayS/tMDyCsaUv2o1V5O55ftse/O36+b2k3g9jxLAKTRQl75XedPH6l28ffPrnd+fMX7Qcv
tlg9bND29OZ9RUVuUDXAwjA9bpD/N7vfaWsr2hN5sLbd6EDwMhR/EJuoy34cTrGC+Xp/8RvlBxW0
71QEwNXiHK3aX72q9tHV9/FIKyHXlmHkh5P3nhU3YCnPZZd2F69pvebo+ITc5ZtRlVA1tFFx48g9
4la1LT9aI6PXaBexhsN+/Z+2n/R1k6TzFc1S0h6ns9e40SiQcR5rRz9RBj78dbv0jKxQru00F4V9
Gt+8cv0+Jr1I7o5YuLkiWxGvyPbnHwt/JP6bP3lfsDs9JZfO0sSw/uVVozfdRxDqmKIgq+KCtjNz
Op9eg1jSXq4klMnuOG4vMc7sjlGggYo723FukYJklc5eCHe5cp/eB4nWiFRIhGf8ePg+EKRPnj+n
SfDt0kSYVPYnQBUpMnrGX9MSBDjhgnQRJyXbt2uS6MmJqQ0aox0GS4wVPb0kQdNWkwsqzv7SgSn7
PN0mPyhVAhIBD922HFHVfIzb692rsB8p4IZoQgE6FI/dHthikwN0EN293zQdPorFxdKPEii2F3op
AwEgrPz73fY60n59nkLVw4Vyf3e/vOjsac+Qa+JKxR1ZBfi7d+/EgJOSTi8cBtGzX5e3lw1tDSuF
sdjr1j3dHbcfn8Dem6HjME6b1lWL3Oi23aiBiIiL0zIk2/K8DKjPlzCvaeMxfMqH9pSQ26DocJ8T
bkNSIynoeE6LGNfQALOTsFCKL9v99f76evhJo1uuHeyXm/fjcj69RVtLBmqsHcmWOOgJfIwrMkaP
nr7X0ykYGk/0IBXwXja5AYSQ2yFt46phJAUJpVGsvb2PzmJcJ+kp2nb00Q+FUfxqhzZo24AkvWT9
V689yVYuMUQybcWyVgbj3+7A8S94RsXUo4T7RL1bE0WbQGpy7Hj7cf48jL+R6k1QmG3TJryMV6qn
Q7QIkswtTTYSuyGaCK3ogIiGZypVWZH8z8Fb/F9//sd+xGEKiPKYb6EsEqMtEmFFZg8rCzlp1JRW
PTD8bezsMHdEKDxNYzJCASmmkdhKy6vmHQg3aHt56pQqx7NIX1TEn5fz7YxU8vy4yYPsL6MCuB+C
E2FzK5EScX04nBlE+4iqKOP840KHy0yo9g1YC931+xvtsvAqQF24CXOAGgEy+oCrPMAj5hevcQcR
r1ymhTNHp/Ju28uNhn+H4nxHNhSC68f9GwhuZVt0W5HX++Ht/UjWAUZjALZpuknBNB3p85YVbLNQ
Mo9gUudet3b8dXs8hgKp3z78f3r4BJn4CvlrmxFvFl9jeitwJxBWq0AoGkUnuDaclpwSZ4nMeXvQ
cX1XSzDZdbXGUwj/rveX+O/oOQ2q7dUCQ7ClnWTOWNvPacQm2yk4EXRwYtruzVIHxiq7uP30yQnC
wZ0CiMv46j2lE0DFiJuVYSPk/JU9WSYKZ+sY/GtaX2lGhsbzWQdNk6wSDTMX5b0EHUitBbx0XYJj
FW6k4qKBg0TEQNJZQZRYjBNK2cUwD5QaLMlmFeyBKmHeOiH080wngnRbU7XZFN1gWFOaYgk5Qa2n
lGlfpfUGkUW9cXdk2Z1QfFE5NONtdhL9rC60tuGCoAas73RUDTFXCcALMSys99CGzHFgL4ujt2Tm
ZI0OhFfYoa3xVmd93W2Pzxy1I9C8JnEiZXJJ3kRZlqyXVRyswykI9XGMQni9kMLDCiJclTiS8Wb0
BECYSaQnVhnzziiVDjaZcUrwJX7+dr7fUDSmuGurxXYS538/02lzXZnARQJ+uqz5ILco9aoMsUl0
4EDHU0r0PLmSY0i6DWUYHH8O45u2nL67hoiv1hrpAh1LqZrGo0Svn6e335KY/0xEoysdxlqcfn9w
hOhM/iDbfMaGF57orrQfztuiWWnc8efhervSSpIgBbQQXhrb1bKtt1fcBBo9KYnSJQugdWN/dW9s
ZfAXcVOczt/u230ITXYzifhZ/5XCDdbCfTh1ZBvxH6NvP+f0Se/etC1bPPBXf/BzdBvASB+I7QKM
TYdzusj2Q+KzspQIRFADQQSbNNvLMZD4/GWlfRDZFmUqOghwHpBIZwBxYnnHtrRxk5VDwlGiMoBW
pzvJGOYlPxCfEGc45UlnBrTphQfY02snlFe5LwhTKyF7VKu1xXiWbuUEEOtW4OBdpg552RQDoMIf
pgnSh74pE/v1sD/GaIIE/XWd+uMDBRRLGihuQWXFJG0vb/cPf1+vtAExlSZy62xTXwiYXLIJCffo
dH6OUMoM4eQW2maHtGnb2VSKBvLPr68hLdPjgSjCCEzDjqfYw+f8+gqyZ9V161Ceo94mgwjWhoXa
uQG6H1DMDah2ELBcFn19K0wRpnTz9o4/6VqKCjp+RIcmxsSzXpFSDbB1fVPT3D4OpzvtqRXsd3nw
FGuTpt02UfWaBn7+HE80XU72aOCJZ/mn/M/k1swDhcPX0EePnMBnFW7ldbVk6ZwuWurH9X38v8ht
svKrmQzaOypisAy4qQKPl/DIAF3gUUUAyQpQ8BGjSTTuCcFc5Hl/vPtDgZZpflHtKW5XybHVB0uH
mc5hrmCmsPdq00pwsCwseyhk6BLGOV/oeNsttJmgdjpbPgzPyVyfTqIIMtpjcQwkSYmyxmUMU1Er
Y7iaaMjUKJpDChllDTu2kGAkV1PzEfA47kEmQBHKohW1Ht6QUy3FV1lFgAPoCDh15TPiwohiVGPs
qFpBWZ/yaRSmli1hp+hW0a4Htz2WrQs0N+zpsaGDGEJXn1dknUWkurakCxLJHfhBBG5VoxVeBfh1
AcBiydQogWYAUYEqIwAlovQFVoWwnviG3Np19PeqAj5JaqVoCE0MtTFyYwoPcqmclym+iYIdzRWJ
lrK2qNVM0y44TXGyln5pwgEob1svYFvXmAfiJuuqQPExXb5kqWJ1UHD7tTpYI/fj7V/XJgvg97qH
tTbqAmER+pJjLhsbhhfKB6L+NezYy0zi6lXdyYGoyaXIH11pMlQ5+gPDDzIeJCMCL5BPotkg3PXi
ipUbjpByS0TN0SqEs8f+IxtMe89bCeseTVyUlcVXNw3cpg7Pl3MCxVmHPam8LM53NpAk3zNPb8iN
QGq4o7dAVlCbmO5SNFHwfjrsznvA8GALrctoogmCkbizhGedcTyo6fLH5eWfh7P3whjI4sCjE+6Z
FhZVIjB6CyAXqAa6BI9ElmgXiC1LAxWWpKQ7O6IkLHAXK+S8U0crGyVGzYxguUFkSpBgjj8Hp4Ig
kIBpG3M80+6JHlrODgx+z6fjLxz7KtNIpEwuzw3k002FMyx8P0D5AdgV0VWkVENCdIdKnMbPfWC9
Df8xjQ3Zrss1OU6k6TZfRSXeR5raX1azhCNaeY6eAWCqF08HxzSOQu7PMLSZlwClBFWYqElB1LNz
wg1UX2tMJvk47w+vv9IagUYTz3HWFhQ4QIY2jZ1+TG7A7jpGmo4p+n9lOxtpCQNdQV1Ih7ImHSKm
t6QXJxpXZC4F9v/tiKlwZlmSsyirIppmgGC869NEMXq2mEIMPbZquCHpeQjyPaA4DgF1Fx2WwB1S
iXG8R8kMJrND2vyhF9UsImu0L0a2bSHdVoK+Gzpr2KqDOrYVoHaNqDijQOlgUl9RYlJVtEYbOUZP
9ZAC4MqqpG14xIsC95imNzDhGuf4cN+Qc2U4gRfRVoS+/ozgOExm8Qluk3JUCTZ9a1G0XVlc26jK
e0Bm/2vAOrrV6hrwFAKIGsKIIPZ0wks423b1qH5rGDOk6o6bLMPvoRXcDpRoqQGsb9nMrw+wNhvL
ldT5MzXepmIYuofi0VJ/rOhSA/5cd7uq1HOLiCpE5cIK500KwIstjfWKRZTMKW7hk3WjT2L05SrT
Kb0KpiIYI49xHN2kpRHJL7WUd8Qix54uSWMEhhzNZgIIcQuMkkRfkvyXBrwr0KKwpqa+ogaavNcL
CNW4Ns/yVFOUgeNSRlBVHxs9/CWK5v8YQ26LlvOSz1hycpdb5hXxLxqn5r2rkntP+IXSho6AcIox
L8jnfjz7k/h8B2BAKdudeO9U4yFNi5N5IshO983f3kN4rfOv99PvtBvVAvTX472B0mZOWM4mcR1j
JaWiannuVaQLy5mpwKsh1VU+9P+i5ZpoabA6LEEfluwBNqX27XQ/HnFRveag+UNhztJNqxxrt7xb
g4HdSq8CjcWcKmUY6RDZEM2OKsw+jkAzbFmrNWv7Hpx3N9rrMEI38p7EQF24qqJIs6dw/+cAuqoN
ZpEjCOB0GCUDDY4Vmgvp9XVTvY1wBCyu1ICVV5DaB/AEWUZyQF9I9rrXtEoTVegNlAPX1i+Y0lgx
dtvzUK2Il/yreRjAv+LP4aLFWaPj5qrgk7crL5ahLpIqrVwPN/kaQ1hWfN52WeuyTJMuOCglAk/U
UqXaEFiUwym2X7uuDxWv65IbrC5PK/QFvQVa0fN19BHgwW/NPgZM/0Cbf0m1o842O3nscEs0J64t
jSxSp5UvXXlnmmAexbtLWxiqJJ9itCG0quqku65br2l2wQegaSkKFM4sw2NMcJHMgeLdJhWX3iWl
v1LpQmcCjOhw9OpL1inq4VI/1WJiQcl4oqbSPNdbfsZOOjlVptxz/SMrawqU8YrKLNsZ2pdwK080
QEvIWK5I91rlRDMtqzRZfEGaNULubst8UyHorcrHaS647lHpRtHqciJX1OSHU9VyrVgbAoEE5L0m
ATBYM8WtbQSiTVZCP44wjOD1F0YB9P8krMGY5Q2fT6kGWJZI0qnsPqztNIDrSrhG92MonTCWmcS2
LqOvYtXyWrbJCCnN0SlNrpAjYo9aveFBq3rbpiI8dNXr+KLctGrD5suFu/Cb6qEVIniIQDviQ3H9
HFOrSvjS3TyshKU/SYoVjcnLLls6/C3qkCP00Ms9rILGJ64C+1qPwZg8BgkWgvtHlMkgt1xxojlc
vd801iyHdn7+oVnTr+ttpCujBFFW/UjNglrZLbsAG7Ic4LSl2SHM9FolRlQ/XHJEzWWMY/UXW7Ic
TrvgONE6cNXEoo0HHvY0nlKlvsrtLImXv36Ob799XvwOXX516+hb/XHayMBUuUwDM7YN5Fab088p
Daanu+rkxETsoXe6bUYbT6ScLydQ2G/tc2X5tRsJ+pjp9lWvihvGH3NYQIbesgE0gkra6MiA05Oy
rfFhOrWTTCVu3dpGP8vT0K6XWO3IA6PeNGnEiNi/U+UMK5pOp9soTfcaejykVDsANpspgow3ha5v
hxSRk/Eq0YK3xYG5nH8ADowBIXT1sgYd7nLe5QksQAFIEiCauOaSUQxTrrrG61YDL9DZkqhkW7/J
MXkInbeVqlCWeL2mVaL4zOtKrP1oUwP0eBaxYKah4XLfvpO/74ASwFC71RBj9LR+lflwD6Vx8cxw
O2pO4CTFW0BscMaJNlOVv7rd3UEauhByG02ZlwDbE7wbKV1nP3EaSDjTa/6T+VWT/iTr+sSq/FdS
hO+pCxBN+VZtbffgFfbgFMFcGwmBjU5ocqvToOo0UgAvqEJalArpJMXAH9uPO79c4CW6Tgaq/+KF
pDgMdSQhaQdA0N3v+80TK1J2i+C1Kof//9I4iPhaCe/8rgl85UbJZaTvEAMZdOuQDXFpHzfwHwqB
dckZblAogK3U6omGivULacjwloROVRSzXlhHkRuueprn6UcctflSE6pOQ+/uSyePji3aLK3bCZ5l
Hg1dFlERsRZDFL3TeUVIt5NchK8yXT4SPRqeg4/w07Dagk7EwXB1K+kKu3DZHggUv9E+TTswzZ7k
1QsR/bCakIQsV0lz3NObEpIVJlzzAmi9Y4lQaunuI4hasFZP7wJC9O72/5+0P12SXDfSBNAnChnB
nT+lI/W07kgtmY56Zu6PtjRmBDOTqsiIECOiFpn1u1/CAcIBEv6B1VdmqiVPwQk4HL4vdQemhlAn
T6SjFd4gjaBpkty0oJTTyQV/Get7/WVGjOYu7+Ob7BzyouE1d7da9UlPidyiTE2ro6FQ5DoDg+oa
4GLQBSjp2UmpsbDLQEEbiRPNljZlWHKOAKS3ogAFYnbYEcVkE9ZB3SbLvtdp6KCRisCi+MbT46tL
IQYRTtxMDG9jVSss1heD8sBeyMDgxqA+C9jwzd5Je6umS3/hRvVSCWQhd1sTQhNyA7822ZyKsweh
a6rYH1+IzbaXKUxx7b2WZm2xTUmk7CbQvL7cm4isWxBNb2dQ5qg60bsTqyjG3Q9Vta9QQvNwObpU
V6kcklTrJtgEURjfI3ZKGk8zNxxlyVWDdlBBy0I55bVDQwBWWSqUriq+UqFThCf4UIRZeSpAoDRu
PHWgAXte7R2zRFNeT8MNZCdLrqN4hosZYiH76csGdIa1AY2EBlpmddw085xB19fH8w5Clyo1QGpb
7Ch7+/KwrEx2riYC53km9i7dRMLADIoMULLk6ZJHHVRK7le/o4hblR1oMGhUDLcNoHxJTbCMqTCL
clCILkxM374Gop0/jfNvsqRs9g0f1Otl7ZhtKNgBEJcdVEI55NfreJqGxxNUMWYVnPoTs3vk2Hbb
7m3D8Do+PuWk0EqUC9vmRtCQqVslTQHy0juTSmTtKaLlnlJ2cmPKQtU7npBkv0rMBByn+J/ELWBb
+yaRhGSkHuj5myz41jYJlH1FXu4uEhq+y83LpN7onnz4Nj4+ZP2wqMt96Rpai5JfeV0nRgX4kjPV
WisvhUTJaDO0RKZpobLUjGOvJBOnb5TxcF60XOA8AwWJqiqwRtdJ4amW+G0ForUbb2Q6baKud5Wb
y3ELTt7QlmTp+MfneL/Pph7qAVg0CgxQoJlqZkj3/K5vWqLL7d1jWVqrvBb4Khsvny9ICww7qCX6
pwnz64GBKddZtgXQ9k1bMjN0bsec1b1juv2GHrWswDkS1FHusklnMKQCTmUX1+YiYQi6xdfhAVQG
DrDYZvH1jp4RMoFL3UDDEZHkKQd1HOXPSVl9A3J7lkxgR7CfJ3BCVEIZdDCnWE+6A+6Vqmn3ERml
M16en6j1XJIp/UQzM8WGYkUcdKPcw6A8SyRVmbYKe2xDWcC1cT7j9U59XsZ/PoGIzHYXiSWJO8/z
3coIHqdQxFlf9MZsJyN4Z4KmxlnwafdoqD5m8dyoXa1d2VvR+i7SbUJqMjtbqhTE3WLQPOdq3/Rr
Zsa46T6fNczFBKxTdpI2Qi2TOAjk+vgArlKvFZA/BkqKeqMZ3YWKJ3iugxTP26kHLcelJt/s8eYh
oaIvTci/i3mSQa1/nYF6+GlPd82yKeBEk9fr+/MOJxDXbWrcLy5xUqpNZBylW3G0Rco16TK2YRcW
tW9gkNcdBhhJnQKZXToGnCp79vhrQK9RAyTdwDhPpUc4fetzPJ0AJM6LXYcume7CWbki8cVajoZF
YfnJeFvE/D80xWSFqRSOyq7ZP1DPL/wAnTwzqVVwjPfvdMt64ex8NXDNlYumrUCpV1Rodp+HyzvI
JMnkaY2+NZdIoWz3FceQdpMoLMjzBtiXNpi9w0QWyp/XpVmP6/P4IXdPavOUMHSPDo8OqtlcWmdD
0upZf7wCr0+VajjtlJnkxA3JquEjfdEe1lmxvY93VERQ1+Wuxnw70rVqBZgAtz8BI7cddsk9kf/M
0EE5Nl6X+0pNc+w+yrs8TtJLYrnjJWAYlpAPEc/VAw7EIhnJMf7Uo8YVGKMp9dAN/fQ4JNw2SZNx
bYZcP8cHoCTldU8IMiM4My4ltb1mLFunUqQHB/YcVkmJlB7synUJ2xbs6w4jSe6KvHeb+wexvC6C
59ggvVxWPOtdwXavaUeyp4s0yTQ5zQ5n/1YqlfcTa8f228vJUIho62aRaAA0A6E5zyzCq0YWivvO
aISbUHrCp307X/tHIkWJnRRaT6m6HdMfgMeDjcja9wZFIscJX3xZNj/Zdz/t+KiyWOkbvEjYQa4S
YjyhYjfpXhiyXtemhyeS4SE/8S5WmRWnp0QHqSz+fPy6KiD5hICQ5seH42zcXj8PupbkMBPl6XCc
+rucMcItPVp9urYrol7TnVm1iRH3QY/r5JzzOp7h6lUhwdacSglpCNH3Nlzf5LdW7mo/aIoDRUZc
pMwmUL6G0uOyVO68F2pMJox7QizIaEL+AhBFz2DKth9zAG2TC8HKjwpFMmIud/kaYk1bksUwiXF2
WWouoZ9lT7qSqETsqEYPxwPLPKaKF+g4Z40NvIm+GqFWeN3AFyu0TbJJKqyBKpq4O3BttFpmAno/
tUIPjtXczVzmlLGkCdbvbpfdPQekUR+wc4Z8tKyV5pStc3o0S/ktjUAWEwiTvZG3lT0yc6ob0E3U
lS4BM7/sSlA1YtJDEo0WhUZPyeJe2dBT9c8lYFOqEXCqdnHrKkzGoXK6EfVLLYXMuYDX4sfaZTBG
zEQgqwB1chw7hwESlQqV0E8j6rCSn4fXYb2OttpMSsWfy/lO6TXqpxut7mqyXKvkfBKHONHz3KVM
c18PBEnNkpSFHE72OWapWimbMg5azsQa17hcu/4+4+di6mjlPMw6To5xfxOctyJ0wLPPjIZSgiKE
ygvkBtgNXUxanGENucp2jlmC3a1qoQ9UYD8klAShweO2mh3WjufYqhrTGf0VZ8mEM942vZ++vqM+
iXlicIyfakHFTSBrL/fcb4ELZ90zAPejqtkhTI2k6j3D8OTeHkooTo8eMdGqNtnKjh4WYDfR/tqi
rzvRubQW/JNrTbGSNcUivh2UJQXUOxWHtlXvUAJQ5akZQjsyrWakA9NFtc+q9rIDGzk7sNnXV4qr
WGU+1Kgd3dq1wXRPVPY2eYs76fpujB8J1lYkxn4ZpgSb8rJ+HwbNN9wRz7BTNQy5+Ma4/Oy7WLVS
qGUgKmxUA9I7pIIX0Bk42arPkiHK91BVE6+wYA0xUTeTxwegiimDwK1b7eusgIIjHBr1AthQwUx1
tqvaeBaJNPTid2Csdp118TjZNoQIpX3exVCFj4l8/FzvHeneF1ImDv2XFZg7Qc6fpXy4P4Fc51KE
IowLlB9tLhT5RhsNvw4fI8C6F3Vl3XOVoj5L3LOuAL1cHzO1v4Lus5yq5bXeYmizEjxT5qyd/6a/
H8dRBiMU0nKAsievh5nOfX7IxMmBRTtqPdLAaH7M/fk8nGX1vvy5GTHGxyi6ZLLd7afEZIJ8lWnh
zbi9oBbV7U8Ke+JwjdyMroAh8tWACdDRSJijvikqwC0eCpWaDLv0zU6EQ/O2gX3ypFl8iQ5LQg6r
WHq9Y469kNsUMfhAWxqhCWzcIQ8HcrQdaJZoEyVxH5TVMN1izSf3dC4pu1Yaf7nuOoJqV3PBxRzW
3iScXrUXa94OPPGtPS3prOA2RRIYbiPM1Y01uMSVf1mZ0kddY2MwPi3vYv6UeDAVOr6KElQbE8NO
BDqk7qNC52nZ3c39w8IkRtQEY0eAr4oH0VaN1oyrB8x6VqmOR9yHJlWRCIyamL0NezDUQtoUyNQH
nYxasDHKmtPz3MHMMBUvkfDSWoClprymuEH5SFiARMnNogOqSV3TIpOgbMvbeqdrT6MVVI0VoAUE
pyHKLQnaDAw7D1tQw1datg1oauq6eAIPcC105AHzSOUwRzh1L0zBMFw6yY+52aCu7lu5mXa1c66Z
9YU8PZYGhxIcVAcKyoNLIqYqitGfSf/AbpM85hMMg62iMdClWhEFPe9w7iMXLNB9lWJSXyEHZppU
c+tN2pc8JaGIOQMF88tycZgV1TTlvsG6wfhg0P61BDqQMcKSRF2nm/svR4RE1HDugU41rwR6vE76
3RudFY+Wz1U87pIcKAOKKQRnAbuedkw2a+Lup9iz+556d83OIoF03+W8TfYEM0hKdNqphImifvVD
sgymzkD304DD9XJWY9nWu9v1LD4e0XMZq4uPa78fch/optg5Fzsx9VsSZ1EdE3TzFZp5RJvov7/K
FkYNbounLMktu8MSwEgALkwbAmOWmr0uAmTn5p6dG833NGHafapHhYLhKxsc+z+6Ku5GibvNpsdZ
dpt5rT+JjbTijEZ+/WIrH6H0cdN7BznBVejzXHdnTQVdG8mvkK5yk5k9WycRZXopcks2CamaeDww
UoClhwMCJlSz5bsue0QtGOQDcleAkv6Gkn92JV1UTao9pQmHpLswNYVY1efF4WZqBfiqsi7eThm6
Q+UOJB67rGKzv6mH3FnfZD8BozVTCWbnRgGgPmN5NI8DxlPw0GvuqB0ZPsRdquQ2j20Xv3w2xitd
Ai36TTrgCwjiMPfn6/yYj6BvWllU8RyFoAQzPbSoVlAOGC1PDuR4mRJFPFPCN22g4s/jjlYz0lZZ
DoWspyswpYNdA6XMLFQqEKg9Ut+m6+UdhW+LUmjFuMpsAI6bwnPcBGMLNx2cvkEDOI+JeTf2BRsr
KodTGqyOqvO2Qaq82pdO4SeeyNGarAaKNz3goCJe1sa8bMDALxpN5AT2RLZrpLXxr8GwQ1dFrJxY
2PF5GY/XE7CeZRRFMkUoTCvfXqEi/G7JUTTtgaB4arImVaYWK8qTsxo6oK6E1k6K75VCt0hL3MOl
f53v7Pr2hjKLWxD0Y6NA7nrYCMHMdWQl4RKqG6GlrRTeNSWV/08O8KrkuKWUzqxylcobicxxBUGH
BtREk+xMNIgqi2J3G61U/51ctUk9CTt/yxVz7aCmBUp8heG9a4NJBxlglkEuDZrZTBfQEUecxZtX
TaoZk1GSQQJlU8XdCKHhfrlebtPw+ZTlKCcUU102bAL0dp1VFdnr0+1rVemPV79/Gb6Blgpdm7Ir
I+MYZYuibqHAtjxNnqBYd6lWCtTYC2k+qhBnMEkqrkzchVT6s3JFJpkRpyuSS3JHCwMY4le50EIy
Mp6kB4EBpbzcHkUJPv/13/P/ZmDfrtOXWYuhRff+1fw+fkoORToavbpWaxKUujQfU0N6vX7G3VqK
mubltEZRNz/tKte/NWbl/LnrNJ+BFn4rjvS7efn0x3jNkqxTUpJ3YVgnyak8NRwgNpdBHA1A4DMj
dlS3fu+hVa3HKsyKovA0CZLtnqAhednpG+uTBIcIpDbeawISkN6ynRQ3tVtxUCSfn2XOt0lzs8c4
AGi5oV6CFkjmtSBc5sjY4nqAdNMlgpBeGMpL1+jWAF7nUL9NV9/Ro9AAqer4MWFHwAR1mdJmgtnh
zHctueXOEuZa+ZihThNPWzqNE2gUShDteD+CKIRf7RUAvd1eae6uICzxkFK9gKgze6tV/LRh6SVs
Q2Q4SMevITGfYrVZeW/K7S1sabl5YNKINfuy6oC3gZgOdW5BZww3pH4icUdSECx/LN29cmmuYUAv
dsQnecHuL+P9ZuwpvfuXLCNdVrjakMttJ7HNzBLhrSwj/C3M4V8OKd9hy7SfDDoawzcHb5PliOcr
xNOkvwPOURvv/wpe3HSdb1ZOPDHkUVXBO1c/N3fb8sfW549B+oo/eft5mdnO9f0ywh3Z7PCVtJRr
EQGNdnw4aeB84GIfZaLoOsevQydpOMgrJX+zso3Lo3ToBcqTrquCK8gSeX5iBScBaxjY1qL0xnwr
QFced8jjDjbykAMQectktSpWi88Z+62YR2CFZEDqckNZjTNp2iNBUqylhC7V+C2KoTxzc2VAEbng
+qkAopo6Isa4VbX36pDPz/C+hnlf7jPgjfzaofjaRk5bxQnYcAWgqTKL6yScDfs6fBVqF8yGKhVX
f5F6mSP1sgpIFKQLo4R4Q1RdG2g1O/tOQxGd5fGHjI6r0HGZVoO2RXGl9Zf+hl5jE39DYaE3dwsC
Nk0Z1+K8PhrI7Wkoo87iatLWvww6oVken8UVXlwhLbbOMdTBNkgYHotIfVwqYZ9SFxH78RQdPWFd
7vhlZDRbM6HG5PWhSG6qK1RKhm01VchbZx2Vr6Ly43ir0gepqtOQhrSvLWnMhhXYTNHFRWKsIBi9
wrqLv8KYI3KXztW1eaDc1LHkjZQ3pmJbKtZSKZIGBM5YSozaC+HCzibWGGtERf4jzZGLUrAzveAF
pJyMVdlw+usqjAwcGEUbKHaxHlOFlChgn0AVOBoyQTmnkCBQyrO4XRYtszz+mGnmBDRMpTwVczv+
e2VsH1GqjxUBWXBTu4LDQNNQ7LELWbhcu4+0BNbPQqV/pzfccCHP2wkK9/2E36QzkJ8HnuTuqwcV
Ug/auLohdltEHKBh3YUzbKNK7Wt/uj/f3sbvSK3lp5zpC96aNLscRqzQhhropp/ucEFgVB6xbCIu
AeQFUAFrK3d4FcRAhIVYxpnlVrkTw+EG15nAu3c00YdmKZNXmJCw5kGDzqAHj7vNIhxRoiyxhNjS
FTMeinwkys/FyjPLFYu4xcvyIiWFvVcT6MJyjnuOTJKftB80W1WIrQoMZ9ODrUCqQRsHEnLTBKLs
hLSt+bFNSUK+PZbOodxx6LZh933orsuA5dVcyH6bro8rFhB1WaUsd63rpvBSCHGJmLeeDJgEwIrd
/yGiY12nEHKKNi6Sg/RCdFdFHX8a/LiSzlLvfRapSfCJRu9GYqpMVM42jTlO79Cga1JufjYKPsb3
j7OYHmUsggx4pezjQGkyVnlNRhsX90iCilSHNPmlwfWX4RsKhMTu3yUwwioby+sroENscwahaxOF
d1wtb45IsYoHvz1NJOz5iYBlwtOAud9AE1Sr0Hyxo/AZsPyMAzKov5ep79bYQ6iX2IDVlqfhbX6+
F+Dt6HIpquCcHVBB6oo8nljgN0hHjKwqRc/ZNuEL+VOzmI9+fwGoETueZQj5OyfDIS6fhxqHML0Z
K6B5KTCvdTBEShozQZA67hOJh9R3+NwqLzYZhIZDD0mCE9q2YEj9wd087Cso9vmivMJdZC8XVcRY
2zhz09kpORDRmsNCsypvBdREk6j33FhVxEOt/+NCKWPH1AHusX/YBCiBX7j0H0zMaepvEZWjmr11
ERV0G3xNwqnYo9j6vfbjdbuoJ4cNotf7Mo2SnRmtpyI0tBocyPj/XMF1qtIL3ARUsu6+0Cfik576
Hx/TvjEmkK1VF/EniYcBJAMlZVnG4Qrlp4hreOphvHdbNFBitT1w8gxHVHe2Q7cysgKaWqihm+xF
pKMLsLzBwsP38f4ALFKV+T6fXSpyyY6LyFBCjs/niN128ePEe/P/zhVuyu76UJVofmasG1Jv6zbO
1DyC2JvfVajUI7XkP16S1F/EIaWaYcn4KzoxL86TwtiNUHqOkWqPK50mACCVLgvPiaY5Sf0J7PPJ
9xkVWtO8PD+RllnvSwNIObw9f0ATb7+PtbmON6J5Q9mk0nZQslNTxj03snPiJ5Kh2d28iWSFKV7p
bGhWPb1EZjwHRix4s9HnLu4cgCSLzFfPHo637rM9+UvAHT13QxfpZsPGlUJJ37GckPtwfE66Qwyn
fg891GNZ0Jq/b7KgE0ZHxkYHqgUM+6sjE9aLNQRxFK+VTkIPqVaoaXYP/0sqOA30DHv1fCh8VWcg
UhQk8E7SyGXrtiri54xHGOSptDbCUAoyOzjcD3SwQvDhwwrB/y+KFwl5eX72wX6FzQsPiE3ZEqGw
QnLPSf4mpCUVDY7b2ieT2FJZhFnE7SYx+nobLsgnUu93XVMq0k8Ih6yOJ8iErW/pM+PX4f+Lgr4C
smQTCGlYtaBvC9IVZ9g2uWQyhk0FFOJZeZwP4zl5O/0Ks5Bu4jnKu7oWWMoXIhz/g/Fd1hNcgee4
Z+K42ZeXg1WBkkmmC+vP/4G8O4LasC3VSJS45LmQ++RlIE7aY2JSeUESYiHUo2CZlpRobTzK5G1v
+H4chhNM5vXQlao7eB3fE6p8naouWufXoIS4Jkx+39qyCerKmw6E4aZ96YuqaFrsBA19XqBhgnV5
VXGrlTO/Op35lVLdmDZp6uV20lgCOcqTHFV86tnWmoCGipe/GO7Id4PML3k+HfSEhIpIvsWPjsch
fpyVZVytZTKk+aLD/EY8JypQk7uIM5bs7ZRfp2bjVoree6NOxe5eNlWsjscG/eTJHd5vhTVsqyu+
SvMwbLiii+cvenvBSZSVEhyOqFp+RzS3qpJlRtuuElhFYFUv7LDsnTWVLaGKSEJJPC878W4rTtYP
C4bFTI49NFEXoPTST4AzffWAH01wnURjNXuuU6VKclb6bSIzw/P71nIg0pgA6UzkvBCIOBpv2xEm
FWRxbHfYeZIXbUpJDloK6w+kKii7WoguRmzEh06+ALZhHXcJbzNIEsfkWHdIuOyqg2yo81Q8VhHY
nbOjTqUumjjHQU4UpCCoIm4Sxm/OcLPk1YUiTA60iVM0bI2CkKu5dm6n+CEHlkMmtqUk3iCI1Anc
C5ZYQZOLc13DMEpkf1ekOpRdjD5xh8IddTlc/xKSHOtIe/oflELAGmTzINpoa2COUBlfwpdRlcDc
suXKKPmhErDiyWkwFM2a8rGKJ3hfUqtjm31dx/W/nxj7Yy1loRouVCTlcXqWXf5kRth8OKRoty0o
hCHGuxSCwpribm+7BsP4flme9V849VF+gDGTdBuWSDQwqVUWd/H8xLgB6/fNfzon71AiR0y2pzMC
yuvnKrF4eHHbFgGat5mQhxdmmuwvD6hUPEUk1qD7eD0jBqGEskHmUMZrAlhMEWhVwhhjuSW/jcUW
cc+41CIYl0/kcbMbcHGUQNDm+/JA9rlquyJeIrUy5tGGOLtCyvqLGHQYZWUWZ1tybiN6gTmOvexK
6ynb7ufCXnYaW9JFqBIRT61e6xt9onezyh6rUv2gUr4rLyMqPYj5q25XdYSVP14/kHrVKHvdfGyP
w487u3g2LNsE+/qd1EUHIoVTYiSz9dqXce84HHQCczZUvNgi0n7oOl1g0hM3TpE6XZMb07Cw+aGi
cloHamlLlx5zBGO0YZh/Rx9PxMJyoXgLmWNAmrURbh2K69P4RrnqDySzs7haSZLsG3UVS3VGaFSi
nYEfgH6boJmjvFYlNU689GdFAf9AG3f7rEprpVl9Vtw3cbYVKfCfN4cItE0k1ZkAUI2wHavjiTsA
ZzIf53t8FycI2uyYPZbl+wCpqItXf0eddSmTnltP7GRW2NMg1SiucF4gnJfxSEKUwsm9iRJvGyEY
GPrm9pQb555U3s6Fm/aEnIsWVZh5/YVR/mQ0niA0CxHHJlintEBJ/NRwT3yr6jUpVguSGbA/p4ko
kdCsT7pgCjk5jbMGQEyp2d8VZfc8E5svkMdBB0V1+k0j4uiETg6ehNnRfUfI0I1XbqQbf1Q51JJX
w5hhRkq123GfjlQr1hil9m8/mZnZccNEj/3F3+bneEHae+XVMQRvE1jkeG9lG08miZdQfZtQLWlV
1ji6bv0O4igMm0aVx+MJGxsMZS92Wbxn4mYeVKLio1IVqORbpVSQVEUPsSxTTNHqnLu8BZ41HfSb
2vR/TbDqOmbYuy6h5+t07y8n6n18f+lPJ/OjmaoSbUIdMVA1LrDjiGXAlh456LkQzT5El1B1+7wi
pjwAmWBtnrpO4/tJlmK1bdwvAvQtVIvr2XOB0JBsfOreg3s+V/tCTp5ZB5lsmQGxttTHjpejrjiD
pT+ZwKyXSuGZZVxAhlm36pDb/kx9099hLFF5TZXZ0gjNwx2RnWrVv6IRU+CSh1V5XkbyhMIt3XEz
lbaMpxZH9XCYkqqaLp60tJ1tiPmX6mKtPqPNYrTkSfchyuP9YjgMDdXBrqiELFQjvxZhmCo19NBT
x3O6hGmvuN8kp+r8TOdDT2wCgleRgPL/dDiwdbwJdfRxXo04TqviRlb03MliV1WpOEPEnmyUcld0
+3w4adVatWF75vCZa/GN0sEqNo6lCDzpmLhlLpt/oVseZYTtKveuYXsi86gqpF0Krg0v0Vb/Ebdy
yeuf6NhO1u2+XrDdvlhGkNkNA4oNZEUGW8j9uuJloml1/3F/DKiopRCK1rdJQokee1ksP4SZzOv1
/XlPdGEqVMohaSXqpUcpDnkej3ysvOaaAeBk0CzvfoI3mfebkB6q7CJuqbXNOZ6gHyiL5/VIxgrq
p8CJwB5zi5vAtowWeUtjffVC5XFPaCiLdWtMtOdDWQUFbvmyFCSiQqSu3Fc57qvZyEDxnJPbul6T
NI+Hhtqs+dgMDlAOSroXvkJhhgQMkSYDpHn8GcEBW9DCbpu4ebFvSqnNQir9FMDYtJH0UHIbA1G7
UuFxN5LM66Id6JXWMH8fjTMDuJqbVJmaP/wBu58qocnHeowBsue9IgxBFod8KuEQy2EPO9oTbH0o
jP5YTzCwMjyljalaqIDC9Wj7TIEOGOGhi2a/d8XLGeKAu2vhdpmfHpwbxMHH0PhyXDQ56iRvUANY
ur9UJRuX/Id36OmI/fGJhEteCa2Af26anXFRdPE0/CDvA4sVYTPrTF87Egjl+tZCrm/QHytl2paC
vgObAcCmpWEiXrFNBpuuT9iXqqojEOIKymk4zrwbak6CB8HFk3aoJ1kllHkGunuJdPcWtMWh9jEU
qoHtY4T6tnjV8P9D3owaNmASWx0l+r+XZbE7Fo+0t6orQG6vH2dD3sgunGxVQFF//QbTG/MdymmS
F1bsWA7TqHli7E/MYqsKoa9AvPlPKgt6ldpT71HXsOxuy3huB5+WbPHP/rsZ1rcjSlmofflHqSGH
nL9A6apbJr6jQKlVKcfMpgwIBCXzuDLpmhXc5wtFE5ZyrwlHF+mVuPg5/Uwv2Kc5j4MLH0+ihMjT
PlifZO9A8sHUhbALL89oB+9mu0tHuatCagA59Di5pMjBcCad5r7nmeWRzBlo5n77mE+XzJkQ2mqv
mpOhmVhSWpCXlmBCg0mVr+5SBXKbsDj0VsRcsbZG+AH7W9ZlKEfy+Ay69HyibnfT6fSctxKx7aCy
Ayn2RfbT5SZwEIWK5+/HmmEnjHTBLN47Yxjm3+S52FXJV6JgI+kyrr9j1Sfp7KiCjalEpWKqZa2n
b9Qo40/LORR6btT+Dmfx9impLmd1QDe15GZDyYRdBV0gQW4CcTFgKgoZxd5wcGwMZRKP37gvYCtk
r/6vwWPfqJz3NNzwfJAm0dEqiJaZJvPIEcnJXjQzuoq5bJMKUJE1YLigscuvr4/nHUZu8lQR+ram
Cc4vFZp0fr2Op2l4POEUW06rCD3Zm7tPZpCwxhHpK7RKqIBt5hVwNoSCZ1fVUFGFbeRaMREr7QlR
lVeBGTjDPI3B7QoqVo3Q+m3t2K2QY7cS8tQ2T45I80/j/Bt6cjubtGsIJSr6auL8xCj2iZ7jZSe0
JZF1elgJJUTatih6HR+feBalQJgkPz6HXvsnLQmkum542rlWaqqoX39Pao43Njqo/YN+LDjTLNkf
dJUfiDhTKVjDsCkQHjqc6NpspSVsuSkUsYWWUUJm5rkwXtETBN/GxwfS7PK62vneZo0HvbcmT3Qb
9kVlukuKWgkU3GUomaiSqyqloHi1XYk4dSGEE2F+AvLbSn2DcKPK/4e4aBlvuLF4LJNd7BvUm9Lm
ml5mnnPTkhCZ3dmupnp7QBVF3LtNrO916dmdasZaCOF8YL/B2uIONpS0GWlkHAFkZ2BCjt9RYdfk
v6La13zaL8evEXXmO/L2A89JMjRQq3x3V71+R1s9z/bldlaxNI970ndWMWveRi0k9MEBQwK34KBM
quSkava5HLgFIWTUbVxoRPs7XZ6feNSZinN9F+JJjJ2tBHUGGVhIaBRCGjP363texn8+keApQ4HY
7eh/BetoWsC1KOiYDl946Z9BVIajqGk1rSvKVO76+xAWJIPkCbV3WtoOf36WTLCKTZNHGprKsuJn
i+MSJUe112KwRHLD41jI79fGmrYJAbvvqNioE9pOrRMtnrcT7LyuGgWaptIz5oFxwBHUpOYQsT8T
VfJ2nPcdPmU/ZyvpKfHCrULRgN7DrgJXlUpO3FTeIr7ZtHHtluNg6fBKvuqAXILMS9ytgHlU6DVB
05WRiOmauP0GRnZBIVPG08+YFMJxhoAeYgGSsPAjPxmtG+TmtKCx5CqxO23olJmKq0KpHGpcHCxU
Uq25Qso1pzwPUbvJIlrsgB1ZprVKlZrrl3geLu9wXl7WxIWzH5fE1ZmZl9mWJYkzmYWrihykl9jY
5C4EVQlNaGlSdH0eP2B/oiyeT0D65qz9XKE3oAbTLjh1YF+aRA4ECrcEQG5Yr1pli9zEmCUUCqyb
lPtl0V/OMweFRVdCedJmTjTyD1b1rgZjOxLMpX6Dm6a3R40zhKJoE7atCzQVUGuzlD6wY/pwx2QZ
tiuOFt0nrqyqfmIMaPr95w0oyt1gHPauwD2aeAxPjvIRuvjh5EL2Hdk/ZfM/ava/I20tVrII1fTE
fKW83tFBxhZYnKG+nwldzlnSvJ2v/SOZwlDU+3QrTxdC5mRRAHILA1NJJ19RZanezFooJ4oTc674
8HID4jjflVKTVTv6ldp6qxSoAufpaq4KGXMhtF/1vXt7M7sauTJm25Ryx5zRIpWilRpimxVF3CWw
7v+TLIzPS8H7v2I7JucTMJpkVNpP7cOE2dVVvIQhGkHY4adQOxuj+1YSbE9Qxx2DlrhsRip5CGFw
UbBx4xyftMgL6q1SVj+TXknqoHwFakf5XThAD73mFnSI07ma1ksOyLSCk2adrp3SauoqVfOIS8my
sojnUwmjaWH3jTruYFzH8HMUwRW6jcfno/6Wpt6B4FOXmlexzWhGSm1bgfRPl7iNh6F2bTxG7YVK
k52fSmDPoDohqGZ3Pxesodg5qnUOR9RJQ9c/r6fxbcRJt0KFeMiekvp/AQsemCSQ5KyaVGkbOxVT
3vSuaeMejaihDR+egCD2yieFSsfRyE2+Uix9Ma0VqLAxQJbWqHf2ZsxjvRlD15nDICjEUPFkobiv
H6X6qSwr97X3CcLwyHOiahCr9nIqUZZrF9PPl9jTsb/PiLqYMiGUD9fGk8rj/oBEr/E6SDks4+29
tYRIqYtlVu8bXptoy8TOl9UgCl+pTkpgIUNr2w4oUfGWV5DNjXuSV8u63Tel+f71HVt3TVwhx11p
QDy0A5VA/uDuRN+KqsziV48GwqDyYFUl+if5B002eRCGWa2eC0wcZhETCTdtPI3JVm1SYiVKIoBd
rlspUXOtoOGAe9nlccRHPWmJTImqjDNzOS8Bpsw3u80hWD/V7BvDpFIsRnXlThaTmlCSC+MeIidD
b6ZtU7IzGLGQqBHsgE4tJTjDdoJF3LRibSgxqKYrin3d/1xiCuSkmbCdFbKw39mLsLKKAbWpdNsW
L1u2ilWMLewFZad3u1uTc9sQYK/lcXVjGw1JCdNoLBPjC3thV2OIkbsz1c2gbIH5Rm6MpfyrP8H0
OmHws98FPp3Sk9di8x5hQg1iDXket27jk9eHjxHdomrySMm90MDucn3MT/EVefXqIub4ZHjn67f5
0cyq8W/6+3EcEaBUU5GoeqTvNtGj0hthEGgQnKM3s57+fB7OKE1vjyapExTwdKdoHg5VXV5gT8q6
LPfFtQJ7qEGhrTB3V+HW1LDtQZnKw1mEcjJmpLrq54JRdqxMMhSV7QqcPX6qTV+d/Yw/O+m6WCVT
F9jVm9DeyjbZDT2hIeV1mOdTRtIt5zuYkKasSmFwTpjVvYOhSoMf1qaOZglWSpuyj2T2ZZsSj9zO
IlWxkXXxzKhI/z88CCSL9VaJB8mwY6fqmvjxmPcl3epVkAOTaNwX8OVEK9WqSRUCBS1fkRO5KVL1
pdvy6D2ZVuw6Jw/eZnwaeVp/2FgcnJGaxUs2BAs0UZDbCInVIF0VVtOVoEcW5fLofgDI0d0ISXwi
fx1PM+WMsIKtahMDK9JRvazKxRYDG0XsR9ItlTf7WpcS2lFFA2cqasFU5kLyFCo5bfM4g49Mxko8
8CLq6p5VmeekL2hBlXUgPsZPrUUDJ7AwKTns5AW9rDghJTpeCzkN6j2dHc3NJRJQMrlxW4ScdkT5
RVPPRfcSszBVJ4753Foayf4IXcR9xKr8Dd17XbSpTNegcU9iFEvH8TjvrYURCewMq5r/UVPBxDh2
dm2Gqd0g4QfF8zh/KJ5fZodGodfS5D/XZy7FnFQm1GYSenqKDu9Q2JpIbg70FSQiVKoRDXyP0K+T
5gxG2KSGmiqpe2Gq9zyeZVTEZcS6JyLWJTuvsGjtwdu86+9pwbVzoMGu0Z+qS+a0G3Ql+zk0Ckxj
ttnV6Rz7oi5AgWUgCvWLAnKwFbvNrN1RizMJeEzriJslLnTgQO7KG/yQaezHDZTZXr1Nw4wsZFW0
keixpMwigapQMRFzLdR0sSn2zaexMhQOPahAwxSdOJRK/ShbqG8sis9ObaPKgaa/0odTbc26Tnb6
7BoPn7HbShdjVrtGFNy/DN9g7n+VLAOzOMP+91XyLPdt1O6w03AesPeljGg+rKyk46e15xRibY4+
PvPVM849LVEL3409t6tEJIx5b/upJpLOpOIA1AkDmdQc9Q4Hb8XScvalPnQcBAzbWkljxFHjj05h
y9xK7JnVIjZdZu2+rIfArQrr6TvckJZ6FJ01b+onPPUp2TLL50i7WzmxceUViEPFLDFKs1ZdYiaA
8WbAXmXCfHPOuKx0rSPw09SgaUsQ/rk/X2e8HWFLn6JA/TGWsq89QwW8weGhaBFieaYtHgjmFXjq
OimVKJZUNPFZJ35paiLWlrd5PMduV7d2rDw7vOv2RewXCdMbd0xmzaV2kOsSyWU6HOhN3wJHi9/j
5BspHICoYh4b1zQ+Na3YC7IEAidMM9DqDkwnL+MRV5S5goJICnXdpLcf1O7CNtyC1yeauQn1QaEn
Axg0gyIYsVrbWHjzeRmP1xMcyVOL4e6I94jCwugu8zaiQi+vjd5wSvpV3twF5dsWEYsnzesqwSrY
8rrn5TRMb2ekuFYqx4kU1sZAbbgaoQPmOmiUHAtcMdcMtYSQL53GaY/XLy+q1Jj3HW0CM4YSJhfD
4WxI4fOE3nbIN8nQZIuWoqj3pUrylGLUXCev8FCIZWY4TMGvAPte62OwaWSRKOFeJIruPpjKtlWe
T1po5mxUYZjWyOnIoT4djUfAPldZfEINU6RRp8eLmZ5BY6KgkpDxk9FlX2W5a04RUly9SphYL67h
0r/OB/6O4gD53hwhpyTCXtFdRGDtsl3rEg33kvLzEJVXeTwMECLn+vaGAyUbDq7B/N/h9Zfpx+1x
/e1f/0jr3oeLNvyG/z38oL/PFsPj5a0fz7oq5uW3f/j18L9++XP8M/NplwHaM31U+kaq2jaw30D5
5e9/A1CqBUpDf6yUAOV//18ApFmAFNqeLLqKgdyfx+Nwn+3alz/88vt/l2HYMOUMQ6OvzmMQkjip
HE6oNaKy3fS3G/n1twBI5xBLf40g5G+//vbw119/BTDyBUZOyr3V7kMoGCGlQwg1ji7y2P3++59/
+wvYReZAlJTaXklYhTRSVYzVghxXMTAzTn7VaPnfv/yqDl/VSyUDrBk7XakFgv6tY6D9cD8cX48A
Nx4A+qUTD/Y7hJ/SHUyrNioXnxCCUjooVP9TL00Jws3gm6rdTZEzP49TC6La0lEtOeDnhyjQ7V9+
+4e/ApQoh5KMakl1H7NSuG/8BmoHSlNNVcb3s5dmbOq0xpDxONZlsaKYxwTQ45aXRpgWEsUgRlc1
6yNpIMPlqBn7y2mg35mZz7t6EXfV8AwSSo/RVFQHJ3p5P36itWpZW2h7tGi9RzDd+5drP9zQ8nxZ
nmtRkpfhA3wRH2DDnb70amrep3Ir5cbT+aOfLoPUOZruwhE7DRnPc+/Y78Pjb/3ldP38P/35OSAg
Meo6je8zEL4A83d0jNYdQz88pV8enePb8Hq4zaatVhkOGtadAPxxNrm+D6ff/47+Np5ejbZK9pje
O9lR60813E1HMzstLUvDI2YAo4Z4mAaqWR2m6TrFD03bNQqmBqK0S0zV1QLmNFtPOhHwhVwp0i5y
k2WsAehoX23fpNaN+qOZqPB6nR4Hq5pcp3ljs7HyEHdka5RIqdf0VGz3Q6l6fyE0/arR1B50mvDn
oJ0Z4j5Ld9BcJ4vkWbMAPj6n+3V66U9f+8txeCH0FRIc1bjzenxVgFLLUKoAijukf/kUmBZvv3C3
r9Vdmzu93P7L8fq8PMRD2BZ2RDq1Jh/joaATUF3j+dqfRFSqym2eFKtic+XmhmYcvMyw7vNPTCcL
CaBNb6GztP5Z3mZ41+nHy/U2XFQmnsYkWqxIcIVMo/nnIjqNnkdb4NyKFYz+dGpFACaSv32Nli50
qftsS13eXzyI4nZscxcNTeeAdVlsO7fnQ8kHMs42GafHz5v8ecaG0o9F2cfyZfihDaEXzy8Tvc/M
3Sdl0WUhLg6ncTLp+AciVpHOaodSE58SntoehCrmc5pt1i16tvKrdefS4No8zZpkFBd8uE7DEwhO
yfy/cEfySowdB5hFx2wGyt/v6oAF1FEORMf5I8JJwczAn1a14f8G7IHgHmZW3WucpWVBu6LD+DY1
sxM3aMQ6bbB2vpgVmhpxdRaubmLfn2H89nyewchytmCxYeUs4FLyburYbnxkn8e34TFquS96gQix
uQpYOJRijfwe6jiUFZeSmVTTxkl49QhEQVaw5FCa1cwUs7neSpaC3mIVLLaMyqLhkOB3tt6b8DAf
qO5EfuedS+Z6dRyY8DBVeRi+H4ebhv/iGj3Fn6pjOVr+tyuGoYXsTMO/0J5ljHu8nSOBTDmm37Eh
HBnz3ruuTLwjccrKELQVQPJbd8xIFeTDy8D2RFmee69j1xVkMspZvdYvVhWNQGI6PDRensOhv/+4
HGVKc4jTvZDqGhxPPp2gLlkYhgftU1OyavWCCklRkQmKX6GfT+y2syAmQVKq3UVSeitK3koTbEVt
5LvBjSffy8PlOtvGw9Mm8sdND+YzNsYg8DmZUXoPxudzJo44c/37LGH127dRxbgwLYOXqxaVLq3O
5b6pwW/KNzSBhekeU15RVK1Mo1WmuLIJdMJGlqK1LEWzuEy3T3KhuL9O42c//Zh5InPYA+SwqmZM
5RSUdiQ045n65s2y5Hh+noa7fNUOhhccjbyHPbKkY8qrSvazxgxN+YEWVaDNr4XkfDIZH45syeAV
2JW3l07Wl92l6eddSU8IvO68iTOaLenIOjfz3xguVsyqle/FvQn9OtiQ8HVSmX4zVvwrX3X3zWXx
CDnrF17i6UYgyVeaxe2WwOtEOr/MEjw7qtUW7voA5hZ+b9mDzAx4L96gY/xUZMdOJ7hkRFqtZQnb
pPXi+ZIBh+qQzQLtnbzl5zojt+zSRqpMK0UdVze2TwYbiXURGIlFUuWQVcesTTt7iKHJwpRNb4qA
F2m/AlA72K7TNKiYCP3XKB+HnbjaiKgzmaFgE6Rz+9Cthjq3C884FPHBlE+ZVFlC3S0P3pUfZgv+
8kgYHiUbHjNBtU3EFyX7KqvwMSmJ8Vfyfat9THvXhXdNxDbQWpScqmSUKCYU3aVKNRvVQNYIirhv
MqL0NzJPYgdYrZ1ggnYsEwm7jEtnqnvU9fL6fH09z6z/cjoc+9vjKaslJftKva5fEXtZFkINa9TU
l1btcbfK5qhAnyt+LVMY6zmePx1yFJmhlKzp19TEI8ZQZNnDWwn1JJn9yzRTeA6SltqYSTaVbAG3
dXw/vqojazpFwKmNIKV41KxHH543neI1XIbhNMgvT7HbQ7OSKmXNN/tYWpPwNAQuNJmdNGXcpbyV
sDLx5REkraMnSo6ecAAvB8qK7MNTTCSUM1VJHFomkryOMwTJ4QLiOHk87OHITXaIFysT29zot0nz
ksP90U9fe8SUStb6cm1g51bQxNyzMgz2zWRO2CW8XmW23ykki1nFIR9dRjArNgTmqw6av0y658Dd
lhDFN87PvHTB81BjldVM5nmhyhpQsGwG8BuKmgFbzV1Wx7xjdL6y4bind5sgfOY9CcJOKzwJ2dOf
F0E4sdnQMcBmK0mQ9YOUDZAij9vKPteWY6GZ8AjFC5FRyXjQAatOOopssbPeo43uDvmrZZQq5vYN
9c5od+iQcvS/E9wisoxWmXGAL662uG+MObnOGquQRJJ9E00TiZTOLMhlcMh8qA7eYdqxLCM8Yzdf
Lbj5dma4FMzYCEF5KewrEbLw9HefPwIhJXuiKiEkafVfHm4TvyC3mtrdquTrAkZBm3aqzeqdrPiy
c5cCeMU2pGTiSTKraFCqAOvx8tP0fECa6nK3h5dvw+u36/QFZAUpNi6jTh+fNEAUJJPUZF+AATdW
Gfjz3Lt9mdHYz6u1dTkzGJtLI5+lhm6N0Dcp+8FYYQfCa3l8zpYR3h67XCv6pcSuPhlFReC0FJ0A
smLIpE4Kb4Eku8yXKk9JLIKAl28KX5lx/8eMJcCc2JtANTUqr5NMUyZDZ61pL3UVJUKZFbDLkbIf
HREGGVxkGckugphY829oJmRoVZUc+/AiM0vW0Wf/fekbEF/Mkr7VNThiqoisLHCSYBjpgoJZZVk2
XE4g9TBn3VhRrnnEAQZoro1n+glyR34CvA+yshoQ/5eBsLFB1W0rYXrAoVA711RUUbaySzZY2IlE
Vk8FFDuQZ8cB7JaagrTJHcneEhW8ICmZRda5ixjx6ZLYmUwAEyk9+aOHc6hMjvKBbLI68vTI+pNt
vipwCVZQ4MhZRF0WePQrQJby9vnxe8HtiCICEltqmIfgqwIyUXK6GCVHqaaBSJFxksezjH1eLu+i
dhej808qtVHhKcl3qfON01QV8chEM81ez9fjF/nJl2yAaQWlarAGAOKW+a5kM5Aw2WXpXL4ZgmzX
en6KvYEEOSO14wRQ/adqY2LLPt7OyyoqyaDYLP6tMB/OrC/j1tUSiXjR5aTTZJvExt9bGRcDck6H
LN9W6nMVDUDxE07FwgpOSwx8syYRddRZx9SscLf/uIhrRjHNUT5kJSUqrvyssuTlV+35eafhn09d
l/IT0RcvnBRJf1lxKJBRXe1xM3mKSb3Psb66vEKKOci+M6+6IdunxR28be5xtFQRCzyp3LKpi8T0
fLJOPlkVLzKQX50sJMo2ngeyNqlkiZl3cR4gOURkSFURN119d6MsGdjuiOohgd9LpmeuIgkj8St8
yJfD6pBcQkL2B8hMaH/iaZby02RKM0XLhkJ1muBLOk1QxWOZcWYsM2FmD9qPqGrJBy47lzgNN1Lg
ZnDgzOu4SsdCqnKdONhWuZkEP5jAxplKjc5WEsPMKTuD9UKtratMYUgyIEelWgmwhUGBajcTyV0P
F9SGw4S8tWWcS0bUblkLUPFkcPduQQlaEyczzySWhamQgx6TyLJHl+PCSr87VewoMAJuMxXkEKTt
SJmfMSMJa5Ui/jecaFeweasJeV2YENg0sklTSt7NsEIUlDrlQYQ56jJzB4lr7nXcc+GbQ3I6fyOk
joouNmDf1VIq9yp5WOYoAp14gVIZk22O3O1Ie8zZrRsy05XuIctoTtokoxKWDHWylG3j1qCgMxSH
5113SDlMumXxof/Wy8kiHP6Si4lmFMl6I9OJjCJcWFsUHRTg/oMDwa+cnVJFEGqK28zAEcD8ufMD
645eZH9w58Wwc7G0A7KOovE4bLW1Uw/UQno2CaYf8ttt4dvdslVQ1dOlSQ+JrKIWuNDaAyFrNIzU
UCFZe6mA+7UKDlFL2lladnOcd10Q7zsRYFVj7uVMBz6MiA9W9mYosUgB1c8dUmmTiu3l0Ne8Ta2S
L8zTNALDxBc8cs0CR2q14dbWUJ2X0wW8OsVVjrFs0XZL0eKe1gj81HU8SnWtUMRrX+3u6l0Wlprw
Vadi6JOx5+5P+6u6akcwRs5y4xRkIoYyreoB84r5s+ln08XsVVnx5KocL6DjY9s6deZfkPe9SCjB
G/TIcoJLfLwMsu39Ly3/f4IEmvgL2L5B4Bxo4ub9mu3K2UzsTfdq1LeWqAyA0/JCY8W/bxm7nWDq
xMwVkAfPVFeapnAJ3alLe7IKrzQRWOkzdmXceDqpV41EiJlfVsrdF30LYquIHUyf88VoMMMO55/8
ULnHSlhrIsOSpRy7dqjCW9WNpAsdXkc53YWldquFb9vVEWvqcOV2kCLiS6SKzCQtK1L8nGhyuorn
6yaCEEXjabnUnhzUcsq+/rqMcUEOmpoEIBA79RwzxjMrPAA5rNSG8ctCvNd+mvpUCXvuBS9Wdcwy
1clSr95XXbRL7LERLrolfPbTHkj/0EkfsoeubFdWRm6afpn2mIfT1Sy7n68P7iG07bxFjav09lqt
aMx6V12b3wxN/eH7Q89AuF7uh8f18AcdhTj8caERGSLlSxDEwPNxHvov3L9rJvPDTKOfM8y4oqy9
mDNxE1+iyDIbhrqr6XzKt0lMErKLq2VxkJKlFxx0j1ww3NYCKB0A92I1hD9fn/fB4OM2XR9X3ST1
YAbM/j/7+/8X4Kdk/Jj0f9rWr/Nlkc0+7kBxs4Dw9GsKEx1MP9rhdJC7WxOEzkHQfonS+roNjPGi
Oz4fNPnMTORwEduAEwG56/aMmd9fj8/PED8zZd4e/wFBFXws5kq/Ek3/7Xp97MKMI2dK7FPWXtVH
uR9cc3r5MG4HXjJKiBTzxB7TgHCi3EHYJXI/TjPR6af0+Bg09b5/Grg7YTLZ6GIlZd2SGqMelo/n
62XAWKYwnKU/z0XBzOLg8tWEnTAALY2UzQr897//+U+aiP9gnvWu2yp4K14rmZCSwUayZbmnf0dI
zw5F+PU4jTdwLtI1DCssqJm5Yfyb89j7IpJ0Q0bAIR0xBA7zLdgZVn/8+BWMQHJTfiw4L4uBKByg
yp1NZ2O04isdZ5xPqWfa8Q5y+kXiP4dv4/zLNOjRBKfDo59sJZFwMrdHLxPTQP0pOJWjqqUayHSP
trMETFfKYF6UkUmmyfnL6j+90HDGlyxTINeBlTIdXyKTnT76//78p39/PG5/M5bpsvY2gx2+z1Lo
Miudp+USNP6jIj+nV2qy34uw2kd7Ag7P6XzQGo5mUbNZGVf7DBCTxFCE+Unz8azp/DH0s9VxeL2+
P+8HMYuNQFUmwLECZQze5013QjRs5KD/qMftSoBsQ86iCGbt3uclM3oOC7Y8YLqm7CEf0Ur90Gp1
YKx7x8Fdxq7EYZWM885lhM0X9zHfqUXZQTceMtlchzsxGEElIaSZrK6iCKcV6bP2R90rBVw/H4t7
42sqJYfCfZCX2lrS1dK9+LTe6KIIRnqucKAz2q7P+ZmS2WDcHgLjtnjoHNCcpgfPv7U+858V4tMP
mrRhZRKREaCixlFRTU1L66WQ0D2Rf/Tz66YbOlgNMgcPpXU446xS4aFIrgL7TtyT87jaBtKsmcwb
Is9D8uFlPiOoMqYhIgUyl16fb29x94E5Xu025TmH+pkd/ficddvDp1Yqnpf783a7QoZiS7iL0JCk
zZh52DOKTj+YxxHCwLZCrHuswD3ggLfMcut9si2O4xBb3l/lnEgr6r0MD024piTqIDUSM8hXjXTe
LRSzybuevgDYVRGwq8pjo6cntakyJwZX4JgUhcDyrAhYnjhYyrI4xxy8xgw6z3Watd3P+V2TWnCa
tcqDGXwjniRvo7JlRg0hY8vMRReXgdeVkScoMB7Lca6Xz14YCWP5jsO2Ullrf7MK1Hy6mfTd3Crh
/h2yud22u7D+Tdc82z3JF1YxPybL1upPoa5AKs8v00Bz5fszdMlYsO5seUMTUPRvCmHt8W08Dghb
7kbzItNyVf/W+o/yOIxf5zf5eIu7kS2JO2bvGVWOLVuZcR8/7VRcgbrqGMfy34mmUYB093Dzzo0f
dJtYrDEgEPjh585f69aTu2oRKwU4hSMfLxtgkeJAgje+DGnyuAwh/dYqkkB8OERSVoFq1wJk1mUA
v6rLgKHWoXq1XwIVvI3MDsszsN71sQw4ey7LUSH3scGKYkkjbPl+pmHeCNpK1kaVstlq1AJMJ4bN
rNBOBrW8XGCm/AS9Cm7ahGEN6ysDx+kkSdg/58UzTziaGUPH63TfwNXM9jghQ6AK5XaB2MQiDWab
5TZOA9RvnZaaq6y2v5XCvd5vw1EnlM8anh5OJMRaLT5YGJQrMWmEiZgJZYWkIw9rNZdxQUeXRaR2
mJ/lbJTPOAFEXERElNmP1VOSGor1gxdhAQ1tw+wF2U4lP+ZATdXp7B4zIAwjE6FkHcJLr4qRG4nH
Lb3pBPrZKn86f65AdSET9y2RxP01WfC8i4WkZr05pKr7fPLrl3FAGG8DBboJWJg2y7Vz2slGQW3q
ImyQeehwt0kXAOXuqXgeGWxX/cRDLJT3EEkZUIsy4J/0cziNPRYYZZVFNkpH1ZLCuGZmfqOf0CGh
bFYOa1r0WMnjhOhwOV5PQo61FcJ1hL86I/ijR5deBQzEk99WfcAEWGbhMy02ah98qIVnvjP9buwk
135cIJkuoj1gkkmpeEXpqXj67evfmvju9LPQjwxoekpiR7Mwopj0YfQmhwsmm2PV1BPHZlXYYyWs
szJiTMX8NZfrfJR+vnXjECDnwoTkGutt3CvHEd479L6Uwc2Xsow40KjF6zS+jxfACTuWZJ47mQ2t
n7SyYu6yuF4L3CXs1/LuzOFH7sRlUZRHPIACXbOdIF1V7RstjfnN08RmQf9xDR2AWp5hyrKFnatb
XG2R8M3OaYFEY3bMspkZ5chUbyJ+PPz8k9gqcv/9Z+Y3cwH/Nl/f70mfv90sb5MsTzaKTUSpjDz8
WUScr0exF5h9+4GzrM52qaWIGHz21hli6Dzb4HmfkXTr7/cZXydyx991fUDiDdqeZe4mGgZIZ5by
8ywpdZLCt35xYANVJBiwwlPKk1EF7poOPPwKbKQIPOQRjg8u212Ol2lKa5/3G3gHHVvDOpm3DZ7Q
34fvj4Px5aCnVEYUUcEp++1jFlf3W08TLZLO2dDAV4FCfho19ffAoKiziFrps63jEueZjdKH0FnO
kpl72RQFy6POdSMxIL3aumDj8vKGM1p/mVgtZamM7S6TruRH9cxaaFIXrFJob5T12ziJaTysh9D/
8P6v8QZsNqb7TNPd/GsdUl7K01Z2LfsuvLK0+OMpweNxyPEyHIOQHlCFmYIz54hOm7PPx9uhBcjJ
IyIm8LJhWmG3grdeiOUlFBMmO+8l7bSPkMDLfIFnfJptK5wz7XNljZzrLNw5/3FHsq7kB8qdGZxa
otnYaUgZRCUbkTzwjFXBlCu67GokixLRGhUzqZzSB92ItgNasQykaPd0bbGeoIZd+OSBzzZWLZZ8
ZdlGnp3vS0qHrEtmiaZMLBKp2kXlbJZ68tOsTMYRGmZDpk5IEGNWMdnpeqyymGtjw1mWQHpg9gtM
JfNd77ZR+tYduFu02Y4kRVheAsKEqfss21ry20YDx+BJdJFw4zZsPLzpUhzISqsslzwGMQ9w3C8H
nDpNxAyxjDpUgnH0MhZeDZ7SeH/oGmvgmeFYdKhfOGdaMj5S1iwrlDPPDdkv+k3CkaqyiBm8uThf
LwTe9Spz2PX6EG2ekCZLLWoScVV25Xntc7ygQsJz2sU8/Yuv9KLTnM7jvwb3cgCgOiJr4joPCAZ6
FpnOIMptO48NcpYd2hjjKdBi7h/j2+MfI5BNnGDi2eubjzw1t3n8JOgiFpcmQp01B0DmXUBhRcRE
Nukk2BHB4QLPExV9uPKjbQLLYKW8zuQ0a1Sv5/7yJc3uVMCIy0gwMJ2iUboTqYp6xFZtCRyHKfzE
XJBuS8aKAnspIpLF52dYnBfs1A9qPMJ8DiI6AIPxYVLPc8iMZrJ9HU8nKEragD36pmA6PsX5dCqz
v5aJPLiTjrjuyIZTMe0ZZP5BDt6kA9MJwzDGMhJaRSIXkeP2XtQy4bGb0Xi9pAyPiiOPlJPhezkj
gdZhmjmfxgFi70VEzKD0neSNMMT06c2xU9k7jWd3Uxh3/q0BoUD2AwlWSBdJWYpopiaiSFHOT6Fw
yCJRRQCuM36/DeczKTUwQJ9LTNp6grSmfHxOyAMUi5lvnVzp6FXpZSOszHqTtnqYpcX7s39HUcQy
YmkmUp76yw9ke7Pr2ryA5QGIgSt5SqhlITHZuvG+7fG9FRHfW8iLZh55xmpfixJ+tQHRHz8Aelo/
HYwma8y/FVKWdip9gn2AJuW/WLEHYvz3FII7L1VRY2b+VcWv7IKSucrGXb3XidFsRtNx2oGXRZIe
UVYocHC2EbYZXjVOqCqaqDG7zu3aaxxXXqSKbVk/UG01auDEYxWdfK55FD8JNaZiP6tm276HxOjK
l+H7bdbrdD3H1QxkBfZdzFr1H2bCU8Veec+62/J5aw5owIvBAVg9n48Hjnp5O/pVJJJ3GjFhFnsr
wnzKapXPD1S5PBI12mYLJW+DRRN3HsaJuUio534pQGl+q0B1iyVjHGTjuIPnmFg2RR6TPpFKEK2U
MTGP1FJW4HVcfBmzttO32MRyCFN6GGC5+Vruangm78dMzKB19APz90N/Opk/mRxOqgaIXmDhepNT
VT11ky6UkXY+QGp0dgIg6gUEzUlVVigEe/r6mPpZwgAg5QKko+4ihpH+Sst/Zw5iuCBFv35dHncc
WJ27QzHD8PejSWmmhs+brfeVQXUOlKlMt9LmP//2p4NfkT7/HWyncTB8f7O/oWn4vH4FJ+rcNTWk
F6omAuL0vJx67RAZhi8yqLZbQFUd1cdHbvw6W+vvB1u783krD18Pr+N8hQjprdtinlkH0ZYQZg6z
ELwApXW7axx38iEYqob0WC0gSIcuVSXQErgxByLsNY0jHIWb/myW+iMv/SOchoek/BVuvKoBoUWf
yraXrVtefB38d4625G6864zZle26clOib6dPCFvN+dJ1HGz+tdvAnrnf9W0WS0P/uQQenFomgHXc
wGscgLfbpym0ce8wr3VBQF4X28vxcard3+BNqgWcZ+PtwmniISnGKZUzZ123BwFfD19nxF534MHR
Q07Rnbwstyzydu5/gD0yS6N5N2qZ+u6DcJ2TTGk0gOaem+f1W29G191fiLcdxC4AhZvlYxmcjj13
+T7s9c/TuAd77oHn5J3PSyszIzLhcHkK3WDMw2TJ6Q/CAdIcbMtRjeeNi8pPLWkA+6wd9/Fq5IIt
UUIZO5eF/TBnyEk7lLjwgRrmWZVV2JJjB54HNNgSEZgezHS763zF/od21bKBDLbpTrvUx1I8wLZg
4ep+2+8lrglTdMZYklWQQ6kZiKlO//1f/vz365fh8qf5J4c/6r7Hr0Jmn8q88TldYCUEQI46HtK/
U+SDGxncEcxigUmp4M0WprEdxrdRoDQLp1rgUAS+3cKxjZ2F9iwWSrlAMWHILRSXrCVBqN0+rEFk
O7jp8U29WfT3aRj+b3+mZOrlP8xvYEnuj99l7u6ScjuMLsqQ5IU2AadaJqHYHHlvE8bjRm0/3sbz
AwGzyXmV64BYroF9m3+jbJfng7qb9HITErM95WiUeYTeCxHkgyYZzdyhP4NNORC2TetmU7OK93W8
Pu8a7p/6++OXj/F8+lsK47XDuMZ9JgH9dXw9zyd2cH/9Mt4A1GaBSn3D8zVUpog7hGNTIKogr1WE
M1tcd3TUzh2V8yY1sv6N6MG0Mu8viNfkbj9Bxq63I5dDIwAo3R5YdfGW25YrYiMRA6RagHhTnH1q
AkvdO6EJRLPpad4utbkzDPNvppfNd204Pn4xDg7E3GzTUmpG0JDvi/ZjwHw+H6YdiHVD/I5SOAA0
O1C8cyp47kHTTVL6afjdVdtb04+/XsfE1hzfzRv9kvPWFktacLrpz44Tlm5PNAsn7/LoCbV/7hfQ
Nsycr2ZsURpd3pXbE9LJ0ME8QaDlX1kX8T3db+fxoXN7AbCGsaRda7ltMLrdkKlkkLZU+jLBZmSt
tzMNs0J5HIiDoB0pJy95DkKcoH5vE1wkdDNxFqQ4Nh6sfbK7cfoAz3PfXL3rkI324iAV9ACL+LmM
lpdCUe3QTZ3yVNcEl3Y+97c7okM7Bqlbypkb/2D3QTd5k7sZZV7DXIJAVdEluvIEbhqnddXaSKpb
Hxgpg3etBSa2VDMU6mxlXQALUvSkiudR4o8WL+59Km0Bq4Bg1peUunCHIeoWX1gHvD3Und7UHy9/
S3EMfp5UjZeXWRYgRz+DFGL4tqlz4WwA5cF9Q/7ALItUo3zpeuc4xOf18tvLcdBNGTU77ccLVGMr
d02qohFcnUA52mBK8gp3NK/PugEF3D12Iyxs/DFZFim7VPKmYcx6PlhPwKTut3QsigzopTPpChto
C6zPV6SZV8Hlhq/noBuFSjafJRbFWOl4Qhq8bSwaPIBeZ8vlkjTr3KNnMCM2c00L/7JmvUlrBTvg
NN6lm+55pTU+U3nUZG06JXLWT0hLsSEs7oxp1KjZkjUU9NnfDq4jkE4cus3v9Qd1PxK2qUfPm3Tt
XAWpmbpV4C/uOzGo+nKPEG61wKUWi10MrmmntLRnEuCUCxxSH6qd+0uduna74/oiveakm2n+DzHZ
OpismKx22t9NL7/Debi8Pz5MJfvHdP2G4BbrG6LNzvt0rVptr8L77378cu7vdz0+6hCfGKkhKlU4
kN6Is6Xb4N91jBGEKwhEVrjTej146eGndS/aQ1YHx8qDpouP/v0/EFmorHH05eWC/P4vf/6jLqjU
MGzyNbnr9C0sxwMwFdNaww6LpTeWAZVwEhhAuUNOS2X5Szw7dk+Fku/JKE/U7JZ8iLYt9oKlo0bx
8hftiDx813v6zXdwbV3wnJaMUH3ZOrx+vN5kt1XNYyNpS37247KLuzHff25TjYPppWPHDvmLHlMD
8F46vHs1k0SURyNA7tQv5Lu0vnXY8dwnpmIR2zeEGlUzarwkHEdAAQH8PUnhxtVkOh3XPMT5z1ZS
/+V1SRtME3bLdGSGWq5asSZV1noRQ96TKxm7uhrKSkT04psIy9gch+77T1JcxhKMu2c7W6UMSOZt
nO4LqhNsKKtYEnB6z+rN/+ErRm/u+Ib18rdbhnomj+meF+pRkT/mNWFDGgpkvPgdtQXOk9cy5ykd
e/W6SkqSJhNflModzVAWTi2Q8DhznstFciDaS+/4cBkj5pelOxHVwp9ES4lgmESjmNQ6X69fnre/
TsPb+B1dD+tLXo6OgJiskBGcu9ftjYFZmkVrfWOEN52VK+bQMACdjfOff/sj4gdutTdTTJJPGaAS
dyVeFFeithzAUQGVGDh/7RcP5eGfz2H68Ss5C67TQZq/YN+AQyzNcSoyeLq8ArsqGZKri3OsYWa7
Yjcdyxa6QJ1oJX7n0S8i/4bJ3zNuJNJrAek1kXOJ4vZwuR4TPLSsI2JzxUN/me25BBd1ROC5rIFe
gXBVBsYH5IJZAzBVB/oEhgP07dwpOFpU2EDphhLGizZwr88H1C1bxXRQcHv4v07X2R67zzj6o5Xl
Zpy9kToKsDSl3O5oAgZ+xeCUJVsVHOSXsAW03py1FT+byuMHoOOJZY9dhEuvJEXClWrkhWMmXiuL
hQhj+tySceA66mrT4z9sAY+kgnjaTMHajHQDgF75IXp8dPUQf4s74pun6G5AC902xSFOehrTeEwb
jcxRPf3ccoa9SiiTf02/hNbCZ/84fiDJmdWMI434vM490UskZmEh8mLVPDYyQOShae2P9S6KHdYR
wk3FIwzhstOAA5pMCQvAX4eHqzEF4XyDeY9MaapWVcfeVTKsQD4N1uXMwNkVqY6BFY+MJNaDahpC
VUJHgK+So6M67GmnTgclrQIaBO+OIpaQsyogsYuYxCYU+x6X/ztKE2XMobKVYRFKWPN4HXf4j1+R
fM0jvpu10WTgQjh5EbV1PIWcJqHr3j5YoWV/ntfC2D1HjeMztijZ00LDnCEHzsCNsynoycDFAwGi
/la2txG9PLwgdCsqMGXztdS8zXSCxSaTiJcZtpfv72BurCBw6nzIPZKHZMPHRN7gRQGTg7VNslFV
sR4mo5nsb0//mEnvknD8ZHUR7Cl00n3099/usN2zmjfkdwuB3iP4uNjJS7n3aj36yfoz56PJQT3z
Sh338eYFpjgsYkRsoelnl1eeBB7vf/jnsz8ndsRBAY//TNdr4iSqKqOX7vvBHlY6mIkz8b9ru+9F
NykwdUkvwugZRYWwJiilKhdAb20Yh0G9j28AgEkMUEvCvNnyXr+22YKD4MVQ/A3cpDidWV64E5jZ
fc0GgHa7PKcRY8LoNipMAfv+Mb243nAEasd52gWQPw3T388/bvBA2bI+1y7/XG0xwj1lbNMI6Uwd
48abZ7bnLRTsfqSrIZ/8ZiM+meUIUB7fiAfKtsqWALjbodDKdjlxd4AJdylUXLEMKfQhvH7eEABH
Zl7anL/88R1isnTf1+r5MvLSB3CUzLCCjRNCQO3cNVEiR/dQ1ms0/vcmCIE4m2f71jy/wvLGX4yT
dEDOmC5HqtA6YoSMNVYGuA2XpLx2QHnloEzuKssliQ1c0nkVccZQDmo649pYbW0Q9F0qfrSgP/RW
0iPhEdcY7NX8qsVxQmpVaa057sZJalaMGy9yyQbCK8iGNFqV51tX7FRylDIrCfbPNj8XKTJtxPkW
EOA0IJPOcyrzPWP3Vg7dW2XEKWKs1MMMI62wKNWssOMpLDoOnwjksbHr0Z1lCJT0uGzhr9f7mLB3
2yb0PKyMuE3kyyQt3MQpjzWzTgpXK5fni7xcUO+ss59yZ4EYSZkjB7yuyJR6k1pFk0NpOVX7VpCH
gZ1wLJYS04qI5UKZQe89VvIz7/pKVvLTJlZ/gg74PGI3bvzLj/7L8LfheJ1O0AblwJQeN14mYzGa
O+n3J7wdxQYx/dKu3W0JnZ09WUEOhHSJwDta1EFMs0q8HNvuIsl7K4cwcosUiRtNW8kcYeShhpSE
sMtDqlQV4b+e2zwVEW/Zddg4n/ea1l9NzlnKC8kPUFO+yjo/TSiRdWluv1pFO0rR5ZjaSyZlLyRm
8hqkxNIEAgGQvlhOEPMaykp0DBShoorE1BeCmyGEZJzcVs1GcVZxMfICcCnMCeX/DrCxXJoNT9qT
1pA1TEZVw3m85vIWJQfytCrgjwUUSCAy5anELMklVRaoxHmoEgfUZBs+ojfhRQC94iBZWdtxWU2E
NNeeuUR+vXllVWB9WCOuv6PzcF6Rvd52BwEicuFb4k5zOzSkHay+iHjCWM2mxicIOV4ExahHKz/1
9T5gL3UsfUWiYxBPYBET9tuJciLgRC1UENcubfP34Sd0a5aeAYN3Wl5iLL3R85qAOZdRd+IO/hzG
wdu0/3VHNpfDkE4c6lrgZE6GHbM6X6XxNfu1xx16h4qEHrdu3o/+/m+zpfqE9iTrINSUok5aFIjo
mT34lQ9RaI5sEbwmkmeyxwxHLvI6Ej4yFJgsRzS0pyIMOB5RQ9vIQdx+y/nS/C6MRlebIC2cRW8e
QIXfN1/f7378EamlRRYxUiXeB3LWOAPaswIk3qfkzEbeTyRx1E/5RGdqQA78WpNDjKGKRPsl3AC9
hPOnvZ5wTsv9P3K1vtFLsrXl6NpqmUoFyqPVyZ43naUxaxTDRRSYDZf+GdudXG726Ws4f7Kdy+cX
NuP8lWjpfH2lZCfRLWDSieoFat6QMq1/qxky79AUdg2nWTSPQkMSA9LqT+GwnhUwndfZvxsmqvtY
3CQ3bsPFsnR0UxylfJjDWz//879OhFwIp3ZwvLLS355OAQ7/cjOVcHrS0iiFXxuuZKMKJc+5p2H9
nQZraVETgEb30Dmk8VixFdKuj49kinvDhZ0GXyWnuMfxZVvULV9B6HNgPSvmD0tr5uU+0SHVAoCU
Cp8ydLtsPb3oPLidiIqtOWMXwGqjCJtO+EkpxpPHjzdPcwdubJZlsU4o+eoPOZbQ4tb6UQqPjox7
YC8pdTk/aefjDdnER385nVEqv9mX4zh+wl+InCQzcPzF6y67gvH6fH09D/fDW3++IzzVjKdyRX8O
FhWQJSjHPVsva2INxiBebh5kQdXpHbm+UJrP/XXXO6k7mZhkVp+nWH3DdGGmCc2/+Vuel1N60HD3
vWt3BNKRmv5TW65onmeESuuZIXPB5foRf44PzaaO/U1WtBuuSs7XzegFapuPB4mtCh5ltXmUC8DU
K+ock/Hs1L/aVvbJxQ5BXrwmKq7S6Gkd3XvpWL88Z7L8TG2jYmabuxZBBq+JVK6GK+GjjGQnodUO
iV4TptXFGqamhypT2jFUBBwqbBZHDZgA6iFmCc+9LK91hqRXXC9HqFQ0Aa4aTHfz5uZbv4DeUYaM
MlG70II3KQiyNQnTXJZRV6OPR9RASbmeRIujWa98TuZfz7/fh346ftz6qf+8iy0RSjcJu6WSIy6M
XEMAyfClm95KQDx7d7ONRBOC0rXjJ0jUbclBSgYmSjdInVZ7Btx6H3ZGtAChWSBQr1zz/f4wWIMJ
mLOlm5RhllO5kq1XWm+Bp+EKuygXMN7AnkRJf+kmA5uLqJ0QXn99HyqLBZIXonGIADuol3U5Oeys
9auv8HTVwx3+fv3Py3iULPrSTYYzxy/o/OYivZcB2ruXbi6a2UVNXL6MYsKMjAAbcYfx8lMSD9R8
35GRrS9ppO+DjzMt2SQFsnXthHRaootiaULgrLic+9fhLDB7aulhfeD6NrXUqyxWfRhv/UP3H6Mu
q6K2Z4DVC7Bc0YR5g+Dxfj3kWZ4f/nE7WKAIiHJAdBgvz5bEidELdet5lS0AkrmdWFR3m2PNEFSd
jJ4TtNxtKejZpd10s675+uMx7DlXwchpza+dhGsGjABWC8BOs5XOSmoNjujhJ8/otkdpJ0rZ0Yun
80c/XcRCIrOTzB2NupBZ5VJf2TIOkAgRXVjpDlNSXWq3IR17KLSP3J3B7230Or5XO1bbHIlmabFo
UxF9fHpMkia2zPhFKOXtZDUHODVaqIseQmnG1FJSI13l1tqAGIme5eFDUI5ObHG2LSt5VW1WZHsQ
07q95NSlKYvTLboZxi3xv67dgBjfL9dpeL1+IjBuJ0H1sQ9mD5/KM+YObZw70KMmn8bhs5++QOov
+eXUXFP0/vplD247RozeSmd7jX4bXqfHkdaYWe1HSSYpivGY7M8wZ3IGcBuGyVa4zwqxWbr+aTq9
g77QLF8gbS6Lf+Ew8wsAo11gzPZj3Zjf7IFv02x8kjmMD1otIDyV/XI9mMEFibWlQ5LWQkqbwaDT
a7UZcxnOxojmORcCnIKPYbzVGsz/HV7/+Ps/0YLh+LkMBrXdqOjHs46pwzKzBQetktJZAF6PoBkx
w3fd4NX1X+K/Ilgxl5DPxUz3YQTBOYK8itbf/+XPf1g+v8sqLfOIN3ILBRFhw42G83BiXeQ8QBW0
gJzLQds6bbdqkLUDL2wlFyYlg7Zi2pvqWRLnT7C6cEZ+R2ELa+Ut/368vE29OdNzWkpAdF8yrS4f
WOe3/yVszKWh6HlQOut7up7v/N/jtqPeidEqi1Wiqf7nV0Nje4DUDog/41D/8/lZ7gFQLgC8KrCp
P81rZi4qFtLR0sZ925Vu/7elDY0L/eQOegbNOJnIlH1CDz036XU8j48f9BMdLZ0Fkfydls+Y2cCQ
6Q09TLPQuZ6v7wbQ7fx8H+2F0MzuWWaPAG7n4Gozj5of/3fQMHwa3lzbMXvbsiugdk2PVU6T6PN8
GUDloFxf71fR4DRQuA2vRmprdZAlKHJfFtme/LPZRBOcZmT374Rl2yfORlx1XPHPs7Yy2/qng1Sw
k9OcH+KvNDorJ/eZ1ThOXC/1eesfev6Mbn/wXYRkDBIqkPBzOKNwcnlDRsIbBd6Ftz0gegogWN0t
qwvqemZHfkQ3UQAwlTuL338hil6AW+U2w96p6FYqhNeG8UptdVcoSYzSMTvJFxieuzW6E0Aq5k5U
OMowCqRGx2ndcZxaad8e9T2n3ur3+3Wy4WTr7hAC3dR77Hk5DaC4zubSqcp688Mo/m+sGPmVdAhQ
9NO5KrBZk6pMtMHGtFzo8jE+zktWoLAZ5WqHgmkRDsTw+Tqc7hwNtcztgKrubK8CDdQrp1jvqkC7
ctVyum6uUlEAcAeuMsyL9Tkc63GCCLVusZcqSZ0ax8fweUC1WLYd1qYmbr33GoFwRWlehpsDIFDe
XUxAKrh3kwqHV3lHQvvJuczPj/esjyQVxBTcHEVVwUhE7/sl+n7G3/d63HGAXo/xhJeSOSIvC/ql
jp6gQZfCCKzd6E3vABU6AJfj+jantxqRsmrwCzXHh4+hYlbhUmy8r8OXyMWmpjgwLBH//48RZkH1
Yxeea/ycVYk7Wu4QQ0ULWfRO0b0oR9heP08HQOuO8PP8TLlSaP35Ej0KpQI+k4OHrpEaqFTb/5zE
uSmTNUjr3H02ia+mqrkM1MJBNTVGZQoqDS9FyYAEt3S79bo3oL0O32xA4o52W7ndmrydas9uAUBb
h9xFNSuE0jQGbI11F9jgAPR42oHV7uewSsEJhE8HzysO2XdLOxBQusvSEUDVpbHr3sEO6LWDbtS/
5OZlQUsATQyecMvtCdF9LQY9wq/6OfIaTwiY22CMbQmXvwORLSPS3NWiR4cMsUX82MmpxQnw3yvD
9SE1RTFGq5uwlJekEZc2zOJB+BzvYIRN7UbYdJold9XGdH70r89zD6bQ1A2P0SH7u1w0OJsYr33K
z5tN0l48s7oOQ1fNPD40SdyeD+vMDnk+VWtoWQ9Kjzl/mmcpBZbRt2mW+udLCNn+UNQFDG07Lh+T
Vw5EjkAwO+Oq0S0IhUit5udgE2yWwcAiBjNVg001LBNNjYw5WaZKtIiFiN+PLZM0MbN1x8w8NTxT
CGNNgTBG45DhpbXuvXs546v1EN2Ne9leI8kM37LDDeW7N/aYFTqmY8RkIGT2K2hJzdfmp5Vmkr1r
vqNWDN9uTmJMZlHGi0qeT5ZliEBqPhG7NLMMEWLtUF2RSmt12kwhmmpyRkPFWciZZM6YLzmRXRXm
lxhdQLoMhf5yx4gUG0f9S6Rqy5iMD5wGmr6IRyDFVcXaRWclWpLlkToME615ESmaVnJ3SjMlxnws
r0FpAjdN9T7mTqbQNrtISURWoI91atUiX9kdlmARd7em/+fhDhE6uGmbp0SID6924zbXLVmyEu2P
m1jQTKkavyDzFRXbWJ4jLHBhouKNScyqdvPN10scHXWIjrxmDF6aglvborV1tP82vClVhWWXRXjH
BbpjFcOLKXOS8BKrEs9KtD/ube5l6Ln9IXRwp42ic1ZMphANco9mT5EWdYPaTcBdl61meYsefhF5
+KIyUbth2uumnZBJKB4iQKKzCRFXIsTlkQ7qWYGOxGWq1G1y6WqS5Q3CQ6yVSlYW6Duxvk1ZgfDA
XRI8JubeE5IG3MAo6PnscFghHBZRskBMgwdi+AKzQEv8zlye49CdDt0y12V64ZGsQNhv26jcQc+X
ewN5blGIOlXHZMdyJIU4Ehc2B4SLXnxXxglXoUNxZwJf40VbU9yAKtAP0NZ4IEJEiCikH3CTfxKR
yjYLznK0w6aNsZgCsfO2ilEsEhqK+4rHLjdDh+JGBUbHDrUzdGE518X6tI6eh6piDbIg2pXXxVs3
8V6QjpY0IXOyAqdAXJN76QXu/kwh/tzEmv2HZvUBKnTcJsJXtcoaLYkN0MhKpP1wI13/lZSI0WZR
xRvxdcUtC3w2ViJdghs+eV9xggBhQZVRIYeIoquj46yWz8FXomJdXLIKLeH2KD46kGql6iJiWjl0
oBvmthjeS3TyCl2035c7YwvGrUWXkK8n09ThWiRUuCmzh57100Eet5wbrHnu9KyCFl4dUx/Qzas6
yoxLtKRbKziLjoxeD/dZ9/SprEC8lEeYedzHIR/hgdvwLHgwNQ1nL1PLll1y1yaTWPUx6Anpl/u5
f3jTjg8iEitqR90Gjinr7B+nl/75uB7+4/An4L3onLvJ7wCs93HuL+/+FpADquFQGdkgWbiFP/zH
4W9oD87XQ76M3DacdcuN4/MP8CCN4ohKVnDXWp3AdR90XvlM+hOonTVuRefd8tQJD5N/SCCz5IPo
HPdMhQBu03D4HL8PIJLRFA6G5qjdagu28e1woqBBPw09Rgp70fw6jxVmbWYvvqUm9xBM3c1qaWsW
HtpY5kjWG9pl7wohOIvHecPz6HtCSHE+Pm8mReQY7kfwIDUCtuwH4lX9xB2lSLDJ69h7jp8Obitz
3m6v8RDYFDxisw/jFh7cVhd7HjPhvDxNvd2LZlnoiZfBE2/FvTx+nAe4FeUuzuvvGeWcNeKc0cjl
lqDxVto9NJSgnCxySbJAUuhM7EVnxRPxMHg2zsLQaQNLr7cIuNfTiN+q44ZeCzHxhCh20nCE3bOa
3JagsOv4qqiQymyDaOb755l+R9G2piyQgHAotW8pKW5a4dY3RNwgdKhYroQVvZilt4wPv12FwceP
f/3rB0JFufcF5ghKHVOf3HTCcULoi8WLloO/44M3kajpeAJTvM1uc6TsjffrWUxSNjvmR5CbQg0J
Z5D+HRTPzYNkKOTpzV4aLBFi2n2MXXMJuJvY+3KTj3SVJCqnMlebY4UcqSd1x8k7isZ6FQlOjGib
E3c8u0fQBiDr9JS/jAVM9JIg86oQ3ThFH8oDTlEw4ykKUWRC1biJXLMsDKDx00SQHEMNtuLKICOh
xJo6lOQFNIVAWwZLvnxJ7DbzjTloA7Eo0KpInoniGj5CJYjqDbUViNqaWGpPYM5BUc2UVpnaVqgE
o/MUGVbQEhtpVywhT1ArlNWcxpK7Dvxb/SFhRBVV/ECWxm7T9XGVO5cZMmuDhM02hlxoVeQrnqTg
9cAX00GraWPtIFDeXVH+XykgOKmZ1TETObolSHkJ8xK+5WLlmBHfMpQdWdqShJyaBaIWQyqrsMqb
otwGbWdtAMKNZRH102pwh/ttOI79GedYN6VClpL2F6VOU8T30OPhtObjGdKYAgqDj6eKqG9Hag1G
20BJ622YfAm00QodpFunEvv+1vkklD+5FJ4+L18u128X2OTH7m6TorxO3X2frs+bpAyazNmcK1c7
03q12aTv2kpTAKVYoJR5zr2CPBhU0nYSOIqBkblEYuphlhfZJhFYLg8xIJQDUVG7gGqpE7//mN/N
d1Mp3E+U9auhHN6m/p293pzGSu0oTC7rQYwCUoUr6/VeJwgBENI9uzKWcyoAKjIEqAtSdRXcUYMA
lREJKAHqECD3BL24r3Q0tCM25FVRcMmLBArdG5uIQSKKBKpEoFh78qNoEjVVCFN1xOqWANUIUBOU
RNT2GQzTqKdOjMabsyJ/mkivR02is1ahP6TotpAjL8v7z/HnS2FEA5zisw39YtgI3pddWrqlfkKu
7gA4f/hwnmXm2zCLzZvQRtJCKRhKbmu+qVmK4Rmu3UN1Hl9fHsP9cZdsJspOt5NZK1sHnufc5sFC
+LzJ/hACYaOsNGZQv2vb1i/cRIv2oBYAVg3NIgCkHCqCYIdIVK5D9QoCTW6YubPkxSIgNgu4WuVR
rpBZooPUCwRq4WFQ+dk/PnS1zH2QLC1aW7mLoKLDPPZthb7tbkEZjhFFYo2Q2DoIOqVlmZqpn7Y4
qtlsvVoWeo243Ye/Da9fxgfEfMUEkFNrihUFGRVqOC2wEB7yPHIHIRYahMbMbUXzzKXX+eoi0Pcd
MgqtchS2o6ADQH/QUHQrAkSNfBumjqSNbaRD9+mwWlKDI5VHLwYdpnLYyCvF45EdiFkh/Mf98Lzc
+zfEITKHE2qFmncKFAsv80xs35UD2mDeuYdPqbIxmleI8gq3M61H254L4XrEd/J2D+FqxRSi2aY7
UFcCasQcJTrEQksmWzOiYEV1ui2rlnvaprINeu+m/wwZf+krVDUzx4pTabZP1LFa+EiyAO07Nou2
xsxf59KqNkoF6BoLhuC3a3MQdKMlTZzwTJlj4Kt+dkaA0iLTH5fK0a6H/hD8t+UvZnYOTbm4Iy3H
q39dPkftAE+n0XQ6nj/xdr3r4QJmuCE3A7UfGu/zVx7zPoJ/Bq06m4fpNBlfBfTA/g9AOrVmcTRu
DmN0zAOlm2kPmauUPOh2LqZ70+V0ePTv7t+AFCNOu+Y+QNInqZVC5HPuyMt3v42PjyuVGPbT43C9
DGgDnNCp40iqW0bBXSjLZqaR65uea3PWvZHsB+4Inoof6Hge+mmpgJw3dvxyeNW/EAW+j1+Hi5k1
//1hK07tP1//04ceaXyYrt+Wf472whlmxgiyw9cwbN1+ZQ/wIlorkwC+A2652nQpUwRtNUIRpmOl
+c+P6xdhuLAl+Xohea+ZjaEcTUvijHNrB6hlNWVy5tan9z8kSQszdzDNMPryf0qS9oTOWPIaaVgU
0ZtKoqhdAHhdDiwAxweSQBoHhL0Wyy60HZgE0LHNV5C3bHVVYt8gi9bMrTeEVciEZYgVsLaHPFnc
yAUOXbnakP/eykNkCOROHQls3BAAsmVylqdaTKkqmG+bUPegieb0Br/PdijooXbfYUE/XvRVYjHv
gfAiSfvOBlVZB9gbu7Yy3xDOnYJGnSTzcqUFjffxchq+Iz2KLUi/gxtvQVMe1oFy9iaYYG630ux+
RuN0ujVNnslXI9/+51SUdy2r244trTCNzPySdWFtpS2jhD1DH9pUOaJh1qOnLwjRzrbzghYeGV+M
N8ocBp1FZciAWgFCTEN5NrxXn0LtpLQSb8a3HqbhbZhVwiPU6KuSnVLkZleCOwc+VN7Quveoxy3Q
kQpHJ9R7u84wmhHjUexb8gdHOlA04HtMvK7M0R3NjygaNxfzF63cXB5/uvYnnYqicYzo38HxRuKs
6B+xmpIZhd/EXMKL93doBHu8w/RxjO0L+TJLh2SrEtURCMhjUvAt+YmS21uCMsoTft4IYd7FNB6/
YBlTsozxI84OhB6PgYNvBqMVy3Gve/0Ko3AjReIsBAGpAiXvQbOaWWauPUhHneSA6b7cSgJSaV5n
a2RWlGxoYBrfx4v3R62sUvdZOLKv1hXm9CAyFXSFnIZz/93ZTVq4WLDzYn2HrkfPAv7FzC0BDSTb
ym8Nl9u4xHG63u8LcNNk2nZxjvwHPcr4Mnyb1frL6fpNPlGznEg78YiY9e+GnmNwZUjtAok6bec6
amHa0dMOzE61Lj3znGlm8ObHcg4mRUErbobUNuxqp/vUKLfGmmmIRhA2/+n4cdVNj4yDIfolys+x
21/PoZDA3Yfz2yGXwRnHVWb61OuqIf1bFwdpJz3KqDAQlYNoJink6Q0qcN5uAedNWJKyd82K2m3A
n9AibWD4Pt4fUozMAGwcQK3h5CVuW2DWVMuaWZpQikpjw+JMWoCcXIMvbcPbCuHL/Ex1surqHIac
LJU+rjcx5G0gdy5rwG89plmCBWHeDy12g4Ttzf+fcfiGuIHrPuplcr7302v/rt0VS2/0Q3+RTnEa
78d+Or3YEkwzcOjHi0I9bLlfaUsR8yVnJQqpQJB4+/pVFLlCkHIEifu7FTTLCe6pRJBc60+KORSZ
9YH9X3NXeHaruRRuHsoeB6PEmo7PmgHHr3/hfLrNIDEuQFauGbvX3cR8BfFjs7biRnJLY37mxwcD
RQ+E1R4E1CjVDvpWVTDD1YIhYzEAdDBSD+GOm/lWbkqFhdefx/4Od9O6DsnUkKz0V7tkSG1JQBHb
FaumxNatNhyf0/j4Ya/Nv6/lP4njOw2DKhcGpRsm2BDDGoK8unDszbUqDo+347a4Ky2P/xVvCwFy
7XW9YSL9bbxr69nMd9ecRrOdS/91fDd/3XCgw+sPIjbXp3CwxuuLbH8YZDgZSiX5ahlBQiBeaTr9
83KeTRkZROakHDUnWcZmGRCpxUpFBd5y8JflpC/2pKTlvkDplS8QKfxc5Ev4gjgG+U1pdnSciy+X
t8Uw+mbGBKnxqTxyeDkPl/fHB1jrlCIvRg62UQBQTnuglu5NChRQRDKnA3gOMJpbLw2AMcucurHk
2pu+j29vOqPGYvgxXU9PI05L407VMzdfjh/D8YukzJD2WyzaLzXeM1g2a292hqy8tnJrvaE9tPZy
fd5OUlYNrS3dWk6psHumMfDyytyttH0djW/qMr5pMn5OZ3NqGUDGpoPXhsLaWjqOYAOWljlcp5fr
RaPa/iYDVg5wmdk6tf8OVE2Sq8OrzTHVr1j/NBwuIuaxummDbafsnI/c+nf1IKnbwy4v0BSwOjpi
TcyKNIt42JcfyBNL5swinsDWmRCguSif/2lVw2o9FM4C527cuYmvZS3et5uMR2uoP5uy3iTzaYur
uEvLJOWbyTzGV2J+reFHaVXRLatKHUopmxK2HTFfqpY15P8vshy2FTRr6mUNzV3O2w72/jFrcl6j
icf10avBmsKtmQ1B+1sN79+syxgPWs9sM9hEyaxR/C2yPJcxabO98DGeBp9cZiL6NuvO8u3n2XL7
5GgvFEaQctMlDZU1lB1Fv/1XjGwXxeFKXhhgpCs3w48Al6Yv6qJ2OyA6iqnDrintQLkBpgSuKiju
mHiQbhSnOVtH2er4QpSb8mdxSFacNVn1qBszfc5mc78PhBeaXADihJmLdpJIN2TuVn+dr/iKVrso
JY3QCybpeXpcb7w/IVP9R/91mU6nB/CaqdYHGmtt5npLMtJUMtJjI+2fR0NLbMAkeDbLClvihp+0
qU2qljVeGFeiV7Mic1/Rr9L8hpsOm/Mo9yW/Q28OztM6DNg52bC5o/mK253XdJKGDb4siclgcckI
LOlX+xDN5C1fPi8JRW/Pi50VNsU7nVM2ltl9t5rrKYECD5ugNQ6aHZoVgzbv59C/6hyF13N/+SJC
szyzC+YjCTuTt9QtQMIkD+mhm+vtHLbNyFMjXumTL8sO7i8GGy/n61HukmNuL3fkov9UwEaChpTd
DvxOdgqQpGqZQioTEmnQrmfr93NEFFdE9swc2lpdL9pR/mJcywAWPxfKGody1pzGYYzHCIDGfGaN
YzKeV19SH80K5eGMA0iSHmTWOLx4kdgVP/3nc9Ay2b5qmkF2vYjDSAyKHLczI8KhmmQ24liCDp/a
lIvtBZlOL9MZfJrxxgM1pcpr8+ma8VYTP6+tOjsj4Xo+UyrifPrR6JX8w/5y/NBzkyUPOT1792J3
XCMtqJYFnh0p3SEtcGwqaCgiSTBaotymeOasPZc+6eE2zGx4mcYsmGsEyDFcLxbLCBp1jtRNXF05
lqg9KXUBZSJ9rozippYX1MsCb5iSJAtpQR69rkJeUEQWMAbg8dX24ii6aLXgx9R/HaZ7f2aTH6Wr
ZV6BTstTscUAgVnk8vDMQC21tPV6Xu7Dw/mQqKIVwnFZah5/vV1vZG+/0N7RapdL6KlgG0eW3sQL
6X+IRVuILiE3p2pF28Rgpuv7SIGVp/MGUET0alrD+Q/c+7GZbg4krOOiOsJbVz4R+GA8k0BLmlmL
BTAdV/Lc2xGYji+b/0YppEnYjtl6Dw/v14+6AsCO73vpe5qk+/uHSYVP00IVTVf86/VG4zf/kFru
kkCXth7OpnFJwmSQJGbYGhNJOSeD6zDgP1FX07ooTTz4aKEkkw6ly2qtjvLS3+/j++Xl9NTpvi+y
LUiDubNlMLeNd/mtsme4x/N4/OJUtp8CbWdlEGiKp5kX4mB9TNLENb26cuPZwx7eNpbAWyK5Gz+b
ciBMo4RKBGFjG3EwuRvjrrOcyvAUt/7xITdUopO4Ee7UR78K1wOCN6sbxoOXN+bWT8NMYkfw+dpt
33OV8iVchRHR5uNu/Du7JP3VlhzIOnmRrRMDy+3DegNWB7kP/XT8AOdwI+S96BmfY37/4NsFn8OT
XAEWEpdYOQi+15fJQEfgjtcz2L97aV5e4zQYpXNJkdHzY16oeS4A5C6FPCy1CttWY/uKIJT8Mjs3
NMijqMS75mfl10r35/P124uLRL4cfxzPw8vjY7o+3z94U1IU0WysDZ5aFcVRCj18U34zDwvlNt+0
lABAq91zyxuygPVvVYwn/hQrdOeiFOBi9Yi9+O2sE4nZI4YQmYwKV4jvAJnGYXqg9QRAuAsM07m2
WNYhC3wwx6Vpkl1drR7W7Toh9sJ0aHtzLMkji4YaSrslxeH9+vI5Xp53UfFtnN6fN5npm5dZAbLA
QB5gDaJufRAmocn6NRYQlvXexaHdtBWGk7lW9rOF+zpeLO+x0JCVUZf+Zsxv1mu7LMe7aBV7mrg7
teBOJNPB2Xyewoksp8rZNTR6srYGdgxXL8M0yfjq2MPmmkdZQ0WzE050sQa7bIS2zjYj06XNwJYu
V5My3Z/lqZ0EM4tcZ3R7Mqpad5sqp9BSbmNL/7iO2tOkY+JMGDbUBCNsjQvLNTS6Q/9W7Ymytd5C
CgQ1FJ6TaVR2K9SFR6NFFqPR2/P+8XPobpoI3UbR7fOrF9n87tz9NR0lqqhghzNn+dcwXeX9uKuz
0y5DjqCjkIAg64Y/Toyzls8jH6ENEG1iatb63CBaPkgVYwhK/mrtEOf1UfLQRoNjdVsr+ZNu3512
iHWq2+BO/nrtnzk3v5Uy9gBTyH1IRjTYtIwoJJng28p7xlTd3ijodSU26dibVxq8kkmIgjrGIbVw
qJPuvqrgbVLLhrxCQkh2A9ZVRAhlSe9hxWgqKltqUi3VJvE9gPOrn+MH/dusP7yk5ETjk4QR9W6S
ZisfzKdJaq6mdY31u7hcX/rpXU6rpJfhTkXltZ0dBbHvXIBRtMxuCmY3cZzL4qrOwb3LOkvFUs5M
CxdYFNYG6oi4lXzt9FV3Zs+0SQsMQBzuxdGs1bpp1zd8OyNNNI8zLlsjMLz2t5vOLTTtDx5Xk9zz
2t+HGk0p4+lt7MMiI+wyfjqv3VIbMJ7OH/10kXKxTPJEuyRP+P0pj/3lOJxnLfzr9YvA2c3qxiW7
5KaHlrGYtFP3NN5v/eP4cXiMgoFtQLjMl8AWmNfY+pXh63g2LS+G7/3nTSjyLamczbwnTiflaMts
wS19HshPeDjPmoj5wOd4nM2w/v7Fvi7zr9ElNMEsLCuONAAGdZ1Og9zL2YDZzCayOVlLcqSucT4f
cpNIev28jefhMD8aSkZN+EzNF3igjTfLeEnQvhhQ0/OikW0Ay7AKFZsbGO5qvGgz9u8ztOsT4K/g
GVVexm6wD1OfJEXjLJRwvFgbgbJ3Qzye1XMxhWdLbyjnOVVeLHo3eosIeldXpZN97NXTKz9YStZx
h/mf3A+AcxTeRF6eK7C5v0Rzz9rrLRR2OaHODstGA7AIkopM54rR1B+1O+BrD7HvRiN5Yd4Qlles
huhK+XNSy+x/dBMFuupuz034CEXHbiNTETevYB+wgqfaeUQY3OxOcs55Kh+NJ1eRbe3jYYU3jk3C
VlC3t5Na+Lk1WVXaNMUdsJPMJOcRmlqdtL8J9xKSFaIZFbmZDbgdr7fg6WsI0i4sFjx420sIk295
L1T/bmzeXhFliNRUIM1a+ULYsxTuch9n4EHAXkvlnbyu4FnqHq/rTycKO/7JMg6kLXT+4ET7Dn6W
LeXodG3koclsfZdEDOd+q//RnhXacxMZRogJcId6Ukbor0zqTgcd8viGNlutX54rXrCV2gYs/YSy
S6XaTjO40aU2UMqKshUm89saT4fnxV7W6TD13w4W2sH98Ho5oozbugy6jtkGRVTGYO9ngQj1XAvM
Bc4pAObVezgonBeG2gW5NGBvnpUlUDFaYZc6XHkyfS+uxDav9nhFZFsrJF3mVeO/YIupLgJlNuTu
/ftggB1pPMzzKBX92N24JAdPKw5341kY/fl9fhmPj08EMfN3ZvlCCDFpnVlILiXIm/4RQuKplUZn
AeX8Fm9N0HKvsGkU9x8z+/i0aTi6Yu/Y3/rX8UxtKlxyhavU8ctVj6ZniGyxVq4ewku4/o8F1B9/
/5tv1+mL8HQNAFew4NWiL4Fk6/av4xNUzaGbPGj/1TpfIFrDfdH8sbYFWlN3QeI9F82jNW1AgJwq
htY0keepXVPoPNn6O+trkPHPRSZsv8NAvlnm6m0ot3FxZBK14Fuj5TWXqXiTj6VLK9zod7NRTh0Q
76xwA8WNO6Vxjd/FKzNLmujGFFriyoj2XFjhBoibJcvoWs7DJaWTaiMB+rmkiAeiufV6qsNTKiMx
60v/mKb92xJ2pm0fIpMGzH8Ii0LMz3RXK/2fHrrj30OXUN+ftyXsLbSg4w7xrRl/XC4TfO/DZz9D
Od697C79fcXDe10DQ9PfxjgO153yZq53o78cz7M2ceipXWrQk/M+C5LbD3ekw/XbBaoZqox0CeSe
rPQZSp2fYK9Axe3Z3eSoTa+/oMd9BPPUTV7s/2iQ7E3rdS7JaJd7h5D9oDcj+YwacTErqQNCANT9
JwSUh1DktpNG0K7Su23La/ZMYOl45qbXr8FB7XUr2tNwPw6XU48GlXQ8Cskz5DVRMQXBTsQGiJv9
4GXhus3wPqj5JYLTcG9frxNfDBLudGug1dHxn0zbFt3BaRE8ngLC1vAaGlpfRgdmRw4n9tW0gKr1
XJPNS0P8LX1e+6RZo9Bu09xq9rv7NVsoXm9VCvUooQnocTbjKLd65vI6KZmGKN0/hsE+DvE/H6ir
PJ7g4o3+85tUp4EWCGh0AnoaZo5g1tshr5QFqIPwBmGrrtmG7uAVOJXNK9rYADCSgp+9OIPNAuUe
t+yPlYDCg1t43K2WffQJeKiuQLFJWJsGDU4bsBVKgaCddYPji93h5mYyHiuQLaM5/dxB6vOoW/JK
V5vxuIgsHI5IGeVyZrtdWbiV7JG3n75caX7T/LthiQfTNiiuqRlwxvrPQtlhMWBSHIRtZG4brBUu
mAPrSreOHHS5v31j2nuNf286VwrgwtgstHmmk2UTJdiEw2FJLXfmX/08lfEo+Swzbl6adUxNfATd
PcZYuYRzhPmq8zFvq4qwoy3jQSFZKKUX2tMOMOv/ugwPbZwiSM0CyWtNbSEtOrb89O0VKBkZi+ts
daGSl8/Aa+TTWfpAg3MJRpPJe5L7n5ulfLetI+v1w0b7r9x70sZxHbwnk2cikKQ7d56VNCWxLISb
RV9v3fa5nnpNmgj7mYh9rUEMF93++ITwV/j4K8Ljd+D4buMqq8hmqMo9pIR4bO1gelJpRd53zKZr
dxzt3u5UlBwKdCG1wwfHiRd8VAAfjowq6pE3/9oEa2uwtuJL1C7dcknRXNY2YK3bb0sVyu2SUu0k
zCwrvw/Hp65+oxSKWZ15Pk6zKEZorPg0dBdZeBsa6tv1qZttefARwBow/gIczz3vUhkKDzmMRxaQ
STGXYMfLIjQz8PmOsas3Pv9ar5lTWnA0KqI7vA06/eY+HY0Kc7599C7LCGlGXlt+6hdnmwVSDwak
msbH8tEyE+Z5hSNLTanUdkTgWz+enxNcyL39XUtro86dx8sXoxDrP2m5ZTOuzjOZXkhzvCPLVXnT
lZeW5hYZZijmwXcA0kgw0rZ83dH8xAxW0JqMaYEC+xTrQ5SNoYwidJcTsGm4zf/aGKe6Acy7RJsE
yExAMW4Xb665AQUNPbOP1u2jXu3D9ck9vPXns5jJa3aRLWC86hPxODkAlPNxvDbzIqgCgCoWUDph
oQvwMs5YuUvlVAYxzbLaNUG1FkT/PI3X0IDQP5HUYAOtXKDlpsO75WC0MBX8MRBqd5rCjTZfPpzL
H64cPvUTVsqrxzn2l6/9PTgJBbI4TvMbCsL/5jQcx88eOLpaZg8eOa+BkTUMgPCQTV8ZWQGxU2d/
M0vi8YS2xBO1qUTSSNP8pEcoLGNx5v9PfT+9AybRNCqyqZTZQCu9QeWe4RZF8PCJcBsdQHv9/Ww5
/Off/vSb26wa36b5fqYfx+v5+kSDk20EUYVylGGdr9+GiWZPPy+j7uGAQKkAv3bwlzYeqFsy2kUU
p2vM2H7CAEzW7QAz08lvnUt1+H4D8IoyGNCbwQuD4rJlR7X3HhjPr9f35x3PuW+9QbhmFmKXPt9M
zqOu5f/HUyrarXjumOqC/pWuoetthj7Lz98Y9jC/2un6Zfg18XazPEKkdsrrbyZy1r5P/WmEXtKm
i3lZ4zdge40gBsBD0v0GRnwLSwr//TcKIatj72FBI3xXYNKEyuOJvDnL8CK/fYzzz25iDXjFE+lW
17jwtudlGo7X98t4nxXr5Gtu2pBgq9UZL1c4SqziVBAX7CjSp5zt+x+pQxZdjGMZNvMQR7RWHElX
oS3GZwowBI5VR7jCLEd27aFpqljcQC+FNf5m/95M56WBclQifl6/wiMUHC/ifjbh4zyexxt6mO4t
eWPbQgi6ZwKCUEYYBKSO9AsvswhtYIo7PqAeU7Q/S8NioYjdoorMal/eEjOgz5FydhAhtRFC2twA
MW5wCfFICL+Jf9yG99/889mftSCYlezLc9aXJ8TamggPiikU/f04juiZZTGJqR+K3MPBvJJih5oV
XNmHNBHMkEAV4RpRrvran+7Pt7fxO+KruxTjQEdJqBZFsZ4gD/aHcde0KkLufHu6avbbeELv2qYR
qdA1EtLlaXyj+VdQ8ueRdxJq6/ePfhogr83X0XZRe0goSBzcA2zAQNqpcuXe5NqMnA9M4K5RBKJy
ls9cCrB6t+QEQm/VwfBKc+KnSvFJzpbwx3jGQe0Q8l5Cw07hkNSNQnraoTunjdxCQUOM7mC3JVZV
EfNpvUFt4eoXJJav29uICRlJn3+Mn1DS2CZoK+J3LqDP+R+PtzPkKnXsHW62owMcaBtVRGlxUE6E
9D8ijtJG80mAPyGZxdFyjoqXsxdyqVnV/ucTYYfllXfxMwx7PW5WIADh8VzO4I6/vgTl5DHlNnJV
Q/+A1l+ZdFEACVJGThOz0gr0nNi9bIZrQc3m+nzcx9Mw6dwmBLT9WSYid7CxLKT5Wf0yIVeKOqL9
+NTUnzQDRsTU7iYm7D7hNBtRE5iF5eWuu9qhdyvkgWn5eBrOAyTEJkP0fJr6b3+kfuRyV3JL0LEM
u/Asd6xadZzLo/+ougYgFmuknBbkhbejGp8ew5RWSYsIjh7X352vr+aVAKnKd6OZ/DLCzi7Gz7xk
ftyadx/hErou4zx83+HIFLjoXoWqaWIPZ7lh832Ewy5m1geKs1gTYg/QRhwua/c09qM2TVRtEuT+
23g+J714bOZ7CSILwAnnXNpW/ivCCh9NfpI72Nh3k8V47vpM5v3udE02ES+B02fkHq32pkNzsBSl
U44ESbayu5sdsY2U6O5iSl9EgQSMJcC1vbCF+rTVftdRssf4FT6k7mct3MTByirC7gQnMHa+cH6z
ojYWXWgsk6WNkosMAWSRh5qw4JHAziNhqfjpdjmB82qXmmsgptQT1e6OgCT3xWF77frbus0DhSzx
CluurvA86CG//RjG9w/on25ijqKtbmD5JWBRMZcHe4RTTLtE2wgZ3C6eXQeiSIXszQwEReTdRGTI
cpikj7ppGigI/3FDKkG1CeAtoWmbeOCHpu2PPEIUp0UaE8uwI8dBnroM53aY2ZpY0Upr3ZRKr37M
fhvW7dJiN6aS3CKZvxgmUZjVpfu0l9ofJJTcvTlu89X80F1KL9f++bjqv4Fq7coVgJfa3iptr/Vw
qts+ULVX+E1WwzJvzDQbtUJMA7sML3vgcfF7Q43vGm9rZ5ru/jk8em3xAyglt8PRL6JU/tg6KmRe
wbJ/TYCtuGGIvpSi8ifa6fpwM9NuJ+Zcm4CawiFZcAn9TKE7L9MrYtftLdpihbFZyZpQG4uSu7wo
GuBYrjeCvu5aOFQ5DTBol/c1rVq7fj4x72El3pZz2SybT113z/lcM0P+64yQv0sKPSW61C6RSQfs
ln6X2v79QR3gXxZFVD5YwzX8WlbkdbchoXkr+m6Wt4ewxH2QtNeo8iuiFzC2jzK6KMXPllhEtoUC
lhf8tLRynqtiV/qKIVZHZF5kx3z46/U8K72mNAxB8NoeUfWP7SHCd+L1Wd71yBuGSG2cS7VFx74n
VDITo8LYohT2lkZyw6AaUqUtP9TP6PQys/27A5biD01IgM0y1JsS+/eScc29s3TUYck1C6B4iE/x
itq9CvtI6yhjJTB4Pqh9GNw9SHsiSjuJ1Wf3KVZfcEcvajrhQ0ixThYTNOvMRkDv05EFl1MxZlJ6
vJjhYi+LAEaEwP37zEzMLsaWd9Int34qyPZ03SOPX0w6qv5ToCCZn/S3kdKK6W9ID+V0DRp50S14
OBzPQz8djs8Brlabclm93nAGLfqpYg1xhyboeVMs3gIrPwzn//t8kL/rg/zytENtT7IEqFzqKGmy
Bb/Cv1z+8H0ESbCVS5L0Axb6sv4utTc061xOpudZmLUe/DGXCupF8mgy1gDSPyuXzOpZDXTHYE0T
OdZwOSUOpYJVVpC6m1iKlWf0SK+BwJRuw0QgBjefUhKSWdIGS5qli9IvT7TI3TpJu0Uk9EfttvhF
ImKz1J2Uij0MwXwZL4DGSkcpHtHC9gRmmbsJz2I896/DGaxxxOX3z8MHYtJi35lJD4I4rLLI9q6X
+WNAxpsvujR2v1EHEQr1vjLUQuEjeQSP0d8cikymy+KpSWdG1/V6ZUCw88l1By5a+j488Ctzx/Ey
SsFgcfP9LOA75mnOX5o//Lsff0QMi3PvO3NdeuW///3Pf/qDx9b13w1CvR9iKi2qCOlIEzDNCn56
XN+aINDC4V0fxA6JQMmQZlUZeeQJRlZmAZW1K1UNfMwRFWlC1YII/WLBqm6NjOVe/qxtcf8eHguV
gVdZFBHczmzNUShYmgdLFynrVu4m7DqP0GiSsN3GfVfIxTCUxJXVVYQ4rpf52KmFZeQJzsej8+L3
VKuAjS3Y2jG53uqGXpdRvfFKslfS1l9TchdcyrUpVypqwnh0hgD5yNq6FY3HneokdzfUeRGF9TzQ
eGVrzr0cPwZp3Lo5E/cQ1JI6t+4tyZxLmXL5ygBrRWN7v7XMLSuNA68UPUk70cZdf3WFS6FabCWm
t9iwQV+U8S3+xPbYRCeBv+i8hr6osYbxHs4reUQyqcQH/YaXCeM7ysS4yqwxbmPWrg+GIRzepuvn
HlBc4dVQDDnzQBGgx/Vwnfc+7QHmJAO5Bmp3fu1p/RuUDU3B+2jIrf9f/x2+0Z3OOLb6tD27ZJ6Y
0qydT6vwnpYTEeZxSkXkhpocn6ipT6RlM9e3t/vwuGtv3FWigplw5YFihp1yiaJNhI15PpHnwNF6
rYNote25YB0js17HDDXhcqzZGjaGkxcq6OfXGFbj6R8kZ2YZK9ZFL/QGW2s66PXH68yDoAFcBqlg
NS/lFoxouZfbX7FXxez9o4epC1yRwAP8FmyMn+8BMi5kjt6p15Gc9GLqJbuIbUMhscMuPbwtg1LS
Jt3fwiyrIpWw8zFsLgh6wi2bVao1/LnYGeuh9V0eKDhV0DkU6sst68tNVpoW03a9eRbmyYFPs8lF
lYrzr9bkeU46VfpwG78P58OJAvA/lspuIUZK0SPbz7EivZF+MZJFbF1sYk6ZiznZbpPeGahfDrGM
g5T5YQ7jpIMZ7bGo2Xfbvuk+nCl0dzEkaGGCTeUufscp+KYfdH8wcBN90gwYtYAh3Nheca7HkS5Y
T5Cms3DCubT00GxDY++tmR+9cL9bPXL8JV4VrDOeVW0Kc/JwELaFTKMX33RC12w/S+33CIpJ4sw7
tiNp4j3NzTWD7qV3b9cXy3oKDOU2m8oe595fTq/X7y+36+15u78M92N/o+6FAKKxWzREzRTa0jp/
vg4vFuh4eTldP1+kplAGSLcACeZ76rw7O2B11+lKtxfqDaqsVp84XYE2Vjp8NVmV2zbz/t0lGjtZ
tLfu2pjx+YOq912ev5llcFgDjqglwnJKiH5HVco4/6N4MwNCUXtnA0w5QqcGASG6cP8Ie06mBl1c
q1QtEhW6uzJjatCqRdUEb+52Gy4narFJ/e1wo7zMG9MXduCJ7Qq+l5Z3pblNgB6RRuHtuTet7T3r
3U8TBCT7xqO00lJ/thMwPH3FlFbyNORElNKi3631XEMx9JeIKNSW0yx8nrTwgM0bvdwWC7w4pSou
glonlP12Fgboo3+lxrhAgjXLcq+vc/j9pSg3vt7pBB4VmPWnH5f+czzS7NzZ1p6Gc78k+kVBtU6Y
ciMJCVj/ep/tngcAljEwuvZs6dDXvz7PvZk/wN1xdROqMNRFP5mu3wQNvfUGJFVBAYm1VcVm/q03
2qAKGkmZTlR/u36bVbvHx/UkNpJqvflP1ar/6BZIgYB0bh+Na0r9+Lfr9YE2n7tF3PDRuOD//jux
t6j5nsMYTe5SS486yrrXXdblCdStN8BMr6/pYdmZhGahPTK6MmNCGKzRLFObnD7vexzgXatloTbp
6lZAtkLfbvjbin6xo780qTlQaA9u895I+ce/i11vW29WTcWNcxbG86Ae+YF+iTdBGa6FWtWMWx+m
+FTMqnzbY8ldfOKD2bZI3R3h7XoNk/hS+/ASgoyDwwM2rSH9UWSeFloTy0yeLZGZGP+2Y3kbKbk0
d/DLcEZtn72iHNYJDDJTK51bQJOjdSUd5zUQa+XKl2BdNd68hdmW/tQdrGehc6KRCbPCFaQU6m8A
hJgXUvAL0XK6qrzb0d2d9121dZW51uNKa+iqDBoTGYYR9Mc2P3vBrX45Kd6qEvZB7WnY03HHIFWU
tkWZS0owAeUQaXqvp+HRj+ewi9Lj+v5+BgFP09at4FaBTF8WHFrmeustvsIFbaexP19D94/90f3j
+u3P1xPsclpwe1KubbTrj+frHTUFLZpIhzq79nobUKvAwjVtDBJJ3qfrkxTHdQu2t/H9OYXagPu3
5r+BG+b6ls1s+ikO8mNC4PJ1KrfLXz7Hwc0/13mNh2l4w42rWy9GQv23Oz/iQoNPTwd1RK/VKTGB
hxFsBakiTclbKakpuPE0n39DeTIHmzylXy08kdMQvOoHb0toqVNOaC/VChVIyLZOOwhKz3xUuFPs
uRbGrPG0lau9vKLFHS+uKQ6R3AvSMxs+Wml8VuK9QDBO+fG82e5AUNFlGqX58JaP+eeZ4ezEbM3I
KWisVrPCbI/O0EavBRA8xEjB59K2V9F6jPYUf90n1ISHC0LXfPsWh3ZDnKeOTavQwJ4C53lC3u+6
zy7D79zeJF57w4zWiVLCYL1UCBwuwzcaNPY6nka0vot11/c/nqYoA4jb9DembeJysvMYP9j88ySF
GNBlkEC5esdneLxYUWF8B/BwrC5n5GKoPRoV6AAWBHLPBDdGx4KbRWtMK/NFL7QPzX4zH/wyvIV2
+xB2iwq6vDqslfg9jV8FeONXBLCJJrXqgnVW+K5bLNgf4cL2lgsJOZqgWbVZLCdb2dUKraZGwlSS
h8r7uDGHp6b5EHTU/H7u76jhD5ePewlcPpBJ17KhXsAt19R6uaEWxNf+/IRrY1V8/ueTiCwjxpkF
YAJVsJdaG2mELBpbmiJIg52u57tVyKcLRQgeICjXcv0a52NqWL8lSf6yuKVf+tNJzGkykFxBWtBC
TsPqj+JrNUtdIVxQWHoa79QT3llCklfFAHElbWuhN6PqsXpG9kdkaYmZBRlboqshFgvEr3KafsZO
JhJ27FS1iyn0K+dFWADVGoCzgmcC3OQjfJv626KHYd2w9jQYYxjbQSgWalp4tl7FRuWb1nq+abAP
pEnVDd6H3Fqh9QpQqqA3gx4mpjkwDTFDi52hQYlzlmLoId2fr9Qnb76nbMl6NFQMB2hYS8iMIKEO
zLbmVoN7LAPe5LFLGZsQxkxtuTZs/vAMQPfWPKHFrn08Zel4vaSJWQXUYn6SqHK1zU44D6QwySCc
tuu7zCGMZpuHsmzuc9Dt/v3N0U8QtG67I9YkTQJmAND9EHVP4GYb3oPF+ZxGnGeStf82DueTziII
fSWWs2VoFoD17K98HTo5+N800F+Hxx9A73cLgmd/cKaN9/kcTAOwQYGsC7PGSevpH70erRyeyv7Q
SDjIF+v1oCGX63C5PUOo34YBDZopYjOLQLclWpSrwB9me8oN1nxFCx0/JodJ4TF0cNyO75GT5HWL
4uuB1EUS08ce+r1UDMbbeB6QAy9zt6/MHAYbMx4vICHbfi+GV9sy4CUxOTDjmdqraUzmesk2TmGt
UNnaXUeX1E/HjxeCg+6JBS/HanfIBYM15b8Zq/3SgG40zyWPzcchFfPPYj9kQ8F5BNMeoiij8/X6
HaEqnBlW8yPAW84C/265pNENdNjzFc+qyhyO2UdPHhSxdY/5aIyw6IyzYAOjSbIsMhjFIohOCtr9
GDxnPAeotCYs0fT9/u06oZEwqo6occNnP0L0uEWB920a/vkcp+G06w3leYSMiXGg3XYRQnzMzO32
cb3Ar8WiBLN5gflEGeFLeMpYoSIPeyE7hNGKCc5LqNEdtCa0LI98LvGpPMRhZrNETicYYMh40pSf
RpaYC5bHIhqU6wEHBWUdE2XNvSw+++9p3p5H6Bn1XzarYnMF08wp77rI1074rWYFTzMy2dJONbc2
7qwpvE29SRV+TibRXPaKZOwPzzqXM+CpjNfnY614mB8hZZFdWO3KhaU36sPyf3Dn1hV4FpRNNXAi
lA3qg9YYTuNjQMftHF154+HDjTgwiX2wDcxWlggpR5DKyMwygmTndsNxRhZGHXiQi8hudOKm6YWD
4FSRQZshnM/+MRM40mS7XAKi6zlgXrkFkK2Z7sIyrOVglVIvu1lbpXqYWX+7ncdj7/xR2mAW/SNV
5vwzlChb/Vf8Ozr9+tflL38T9WgD0ssZy8olQz1Upu0kt2UIMqjyNSBL9iKVPLtLPDiA5JxKFXVG
Wbq0zOejgYM9vdJl6fCQfaoGnHOUhfkipl6hH5dAPSlu38bz2fp30FlzBun5WYl62Dtk/qj9Bo/r
9U9X1FCqc0fWPoQ2j4LTe/s/6b1xDp7vlxH3dnzOdt/nH3AFQOeAen0E1yCn4XadHv/HAgb+Ppfv
2NHQrS6+QxJQO6A5UlYasGoTd6FtiD+Pd2IQ4MCV4F2V7vfXj6vQIcXA410WGdtzIkRjfoCBD+au
OUWyNMFiDNVagTuOnwc9yhKb1br8Dpic5urnGohQyQr6z1m4TG9nIbvMwC33XhV6N7ayiVgiK5vi
5l770x9FS9Zsy92NP5AR3LfQtsQA637uogl3f/maRF2x3qPzOQ7vOsk9cDqaHyUCWDyCxLLGdldy
lbmCGNVRfZGpDQqG0JkfkfZyAJXt1svn4jlL7JoEAIVgtFvuL8bx9cv17KSVBvzHB2zTyQNvdkJF
sPKI/9Ie0uQjo8UcK1M8P9sWVN2/0JTfVGNeHqu1eCJMKedMT34iW+iInv/+Mry9ieqaKVzlXlOr
xIHxcl8nr+4A5zXA8gKwm5hT4K9F/tZc2yr6KgkHPHl0UbPmx/B1PrcuF7w8xiNj4/UUpgfov1+G
56xUnA92WM/hdnqLn4UKE3L6qlqNb/PhPK7z5zV1z5eoy2jkmg7lKmAIIpXz5zasE4d4m4bjfL9i
5YVy5WcGovYY5KpyELWifDiN0wFON6NtKT6oJ/5W2+ovpqRb/xidsXE70qpinjW7sAbOSB5Ae0bF
Teh8iDowdpMCOK5AxRzRH34Ljog2VDMwMjai+Lo/Z63teaEbnJ4XsLdyD/qNH2Efxgqm3JpS+esN
RNRV1lUU2k15+eSpTQHCKBiiKf9iUr31U/8+X+GHfczaqplVf0louNo2C62lIpRdTwntT63IbHsN
90HvVLI7XTGTJQ2v5C7APHAIuXJAe7KGjudFp8dVwSrOLvJGl/lGsGaOYVRw/msinav0Ji17Q4rt
Qj1peLxQZLu/HAetTMB0dy/He8GSawYQdgL4DfF4o0KIeQqKB3PQQdk/a9ff96xv3XqeypVuQ2AX
125xG4b0Xk9h7RmhK4M7MfWuFFnyPeoakph0onianlnYUMGaWzirKNM0ntBgcUMterXWWDr+KFVS
osN3/FmijXyfVql4WJupIvAqljTqvq2o1Ps7olRO7zFIWHQQdg/KikbmFA1TxVl5ytpM0ybifR+e
Givn/n4fFu+EiQpdZ5n7JkdJzYlzRldFlRhLsv0EqSJ31+N3NhuF2TIWud6seC8b9+16fN5JQaA/
oY+62/Eiurp5zrdpfOgMTjCcxm5B8WmVV7w9m47zdXyONOVdjr3YbTR8Dm/0fAAELW+ZxjwDbcY4
WuReoR8Bt2Emm0OIKTuPfnWJyckLVRdwoiZILkA7Ltw6trWHS3KZq+PxchlMBw3bSQMdsuBDeuE4
pHParzrSDJwYCXJ0bNY5H4OGEEtvKGcE6B+s0lX6989e68UDlQOZ96uDhubffjwet4O+ZEp4nzfw
YTsuTXI7mNz26Z25ThF0FCiWmljKE9LO0SU4OYuiHAArFmDrtBfqeBGIk/kHLx/zVl+el/ttOGpB
dZL5W73wN69LEYOA162Xl8ty70nwcnnuJS0u3GKWz7QYDqSjpc2y1KvmpaX968xyX15n5H6RV+ds
PSouqKT19+k4E4+8tHV75hfFB96B8GoB4A8EIK+JHgoROk30T17krjMannI34Dk1zELMIPRahwcv
m8FuQzuYRfVIr3UW+EzXtTK/GTzqJS9mC+PlRTtYtHz+LkJiEaulrcqUdwaQ+UlrQxLKdjUZ0LfQ
BSdv/BKCS9iCmX6wAynW2+G1b3MPgkBMw1nnbKG1xdpTsqDh/jEMj0RLDQvD9cL2iyxoA4kGJnZ9
7nXlKs2vvrXxWFft658YlTor43dsul6qdVNZyg3gxUpu2ZNzYyaOzvprC9BtM9Zm1F+bg03n3D2r
WVxX/20uZdZzbP2A1ngoM9P/4WPmfOfe2NOPGxJgrRNgxu7XnglrSOmaXtIN7kkoTcsSm37JbZX+
bHud06udekF5tXnLXSC9k5FuRzZP4kQla4jaTW27ujyGIb3UKZfavd8tw6uesyD/53N4mpwybW+/
/6DY/rvrd5eA61QLyo1duPZpgWYaESSQ5C4qN15bWxQ3XIapT+O4dbofdYAtbQLPez+9mm5sntM5
Acnpz+QGba3hfRtvumR7aVaZgFHwjdO0kcqh5KlDOGdqNml6eu1AjVPGabhFXlpz7/XHQ4cmdJLM
5v4AUApHN4azN5scpBgxJIGVC7CcMgiUTUgxwdSNC/p4vVyoZuRwtAN+BN9F401uKVxRRbG8HrrP
O3d81o/pV3PLyMFduixHc37d6HdmCwT193/589+vX4bLnyRRUro8OlpMZWyG3n/RRvt/SCmSpcsx
o3U6Zb/mPOj0dtWykqpXC7fSBFXS63O3Xl+8kZv/oYM6esd/7m/yUuvxpn6fppmp+/jfNaNPf7tj
UquY1GZU/0quHvh1VbmNc5+8v1KTL4zrwp2YSkQy3rQmk/Sm3RXnin4xX06uU46uNEeybdz0Z397
OX5cp/R3Hba1I9mSSOKkjjYU1Z9YzWZ/yK106awGiimMNFDkzJnSZa2b42peaejy1yH5tYJfgv5/
5yP3F5Ni84fTSI1kAK4dYWkJa1uR/vLrrzT+7ffD8dyDfq2lSw43EErXC9cRyd+u39L31Ti0+RXU
erIh+KyjTephqNxnDebSH634o14F++9R67XS5bKbha2x782FffSn67e/SU2SStdDwyz1m8kRlVGC
YXrX7s51Zkq77d2f7JlqBIJtWV0EExcXcXBAs9obb5xNYQrhrPdzQd3BDl5ATs/GGzZTWMdIscxe
+BnBljvBplmUsjwqFJoHdzAtlAcErljAea+BOoBOzqMyTIfnfbjPQN9nATf9OFzfDtdvl1TfaEKW
cklZBD/z4PPF3Q+r7d9/zHxvul6uz/sZpC2pIKOq3AccFHGqPEiaK3x4eqrgXV+ODlg9L18uMwag
m9tAdMkh3pzf5PG9TuEH8uCCD2QyCujS3FcS2aUGmsvY8qYXWGjU6NorvjWG0Ky9TAMoblU8arFi
z8rz9q59yZd3WuP+dlgwQ89pTzZs6XKEqfWccoJPd9K5DP8Ba09y7sQTpL3xfoYLvR/3nFAubMkF
FiZ23cXUWfeIbOrH23iBzThzvxVkblNNV4XQNq2U+Qd678pxIG6E6w6MFtasUOutdVZwmsxHc7i/
2bMhDtgsYLSNvbRwP11vj537z5b1NDNgaaGrF3hywHTkHr49+ul9QJKNlSAT9VhcwUsHdysYrPvg
/nhZ/sMLkBjGumHd2dbKked8eBw/bL/w+2V8ezMRs+v0BcYtM2cqe6mt1tl9sJDk5U3nHBGkHlZc
Y4EWcTDHpfxqLwvoQKt4aC/tNTfKHV3xbbT/3Pj0g78c7sePmYAAZ67ySH9Nt9x0HZRXl5yprX3j
eVaH6439Sh2BD6YjMIDFqcEVJedV+Wo3KQiVg0DCPHfTT5bTSEzLfL/zvs/9LldnQRRFUDj5uqWA
UOsKtAKcpgHxFF8ad1tXke2A5X5eeW5mWYYAdHZU/+ilmiqDUU6b97v6RmAkz1MVnNRP7LZIkUoa
RU5E56RGzr+u6E/XGprs9BQod9BK21BVUcZIL31IVhooeqXK+H7ARlhR0NKg7NSWhtOn8ZKZl+Ql
oxDbEL7+w8HBvOmWCnr0OAKsKGJhe7hQtQf1Ra/+awF8eBvPj0EeRU/r7cwJSsoi92/J67f7QRvJ
F0C11oRr1TCgnziPbR6gwWhqqm1aAYFZwnL28u/oWLU7lp8RFwWT3pSdrLEu4Fidbf7DME2zUpc+
ZLHAK3Tjt6Lxdne8Xr+Mw55NuZtvyINTd9ubQ/flLr7QiC58RMtjIeyns2VtZaYR53F8WPJJ40Mx
fivu1k3wLtdd5Gf6nKj1Qw/peNa2T7o3R39GtNO60xFDK33M7D9TW/B7aPUvUZrRtczPHZfdOAqk
hnb5YgvHoCEw/Cx05H1xYvmEh3DsnjgVPRc2m0u4drQNB8jz1oZg0Gq+as2Ri06h14gA8ROoqdzc
QypQbexiRyVUgJl3bZxmdzxkx/IoFt0qtd7GDhido1lljNHVa06DqDp+QWY6WUSS7NiJo3tF1kbX
4Ye4g/bdxmjEfd1VS4nfbLLeF/2a/jzbVUdTlnsczJ+jcAvqOG98mxplGeWw5f/lQbWQ5pvUwXwE
plrAUI1o3hUBGD2ymPqg3p+vMpCiWYB4Xu0VCJUA4fbh9Wh3h5kNxucnOIUNYlRBqmWICptBpWGd
RpBrZrCiFniqpsHV9Qov8gwhs5/cXQ5343IIOYEvW885zQGoOKt7c60p6nBgcvJJ2NwO0h0O7+fr
a2+7r2lVGyZj6VwI20KdE2hDEl6uOAfHqh2FcDf68FA67/Ewvpm/ncDRHKhCwyqiwKZB52sAII5i
qZS3ykKScfX64EStIzkvVSRKc2Abjk7syMcQymm8z5t4RdgoHKUSR18xAe1aw+8ub8H6D0pZuIOv
OybkzTRdvdqDnMZmdtAFO7A9FOynaYX9MxpeRmZKUa7mfRkpsizHl2ogdNGqzQWC9HLNWi56pWys
Lvx6YlZZ4cxZr2PTspa4DXC6FNyY0MyiDLd90b0Nz+O/0MHZwvPnVDjMXz9fRf9nYYeLBnXY1pt0
u57H4zgsuT7Wwnhe7v0bTRqD4lOzHtu+fl2X4kAtGsbHcEn7hQzEeoG4zECLwUttq1mA6LvuyhgQ
sLp1W2hdePR4vx1eZ4NeymU2K3OHDpPXsPryLBmw5khAygWIN1g8BiKNhmKBlFMmoHU9ekdJg3Cy
pTS/5OF2mFaAfMoWGEsa8x4SSW+tcsg2rUJtLh89ZZNiSu7QA2XNyh7m2jmvve2R40U3AEHUYlpL
1EHOQRGcDizjFBi/eGXF2xESCExVcKZEQWWR1rtMJ59v+TUJos45GadgorUgaB5mEgSnINVkRYby
etaYX6nrERRZ5jwZJzPlnG9kN0P1immk1Jw+oneWW2dqfzwOtwW1SSBFzdH6nHL//2spq3mfpC4Q
5moZof4MLe9OwNY5EcSvwl2TY3L3pZcwQHK83KIAnL1ZJwss5cfPx1sLgjVZkJpVhxhLb5rDSH5x
FAO4f/SzbZcEwzTUkAtS/1Zt6QjcgpdX4jWk9Z4EWBtPDzHp1aaNzbzkNmtfKLPHJdfUlPc1/1oy
IWgD47rjHZScYFO5BJvlUT5vlDOdZDCcbadFaWhnpdlc5bDhNX3ao8Ca1SVTccfqhUvZNWhM8wPH
aynumVdqs400HhTD0AHTqoltBeyB8/BMjLz1SYpEVPocmZ9VV3eR+wQHcDRNXvDFhLcolAS4Wer2
7o118ykRkGAZpE7mWC6kKdrthHL1ilyFykRyvUMCdTVlJ6PzOhxgoLtog5S1akNHAIksFfw4sH8D
aSJsgztc4jzs7zLlXc+ZvenuECYYlvTQkXxQzuS2ttXivJX9tsY+zKI28o5Ag/lsxw4VGoC1uOdj
hwBgnJ2sGoqec6Muwu6yyKDaPlpnvwtTREnLLJ2WSYkWq0uDrhWz3im/wVBHt5P5eEfgrzIwWAnP
XHLSzzuLbF4B125nVFakQlRtsVOCnTlrTVc3tHV4urSLwdgHzuAJJOYayQpA6AIEqdX6EzJOnLHn
VWVsTmBwAqB4tointsk4RRTj0LF0rYSQAFpKZ/8R811BMu4n+UgFW361SUEso8gBIBx1UEZ3sWZ5
m7NU4CzOpPcGDa7fEY4OERhnoXuZeXwiKilK37YDQs3V83Z124nnXDRMLPXSwt5W9n7aB2zr7C/D
pMEchGnAxPsyx/tIOtvJybxUxYvAzFrnrbXlHYZGvn/q7h/TqN1SJoNBBqEcCC/Zc9Zm+PPy0jKy
c5O0SGno3x/P/vxvuoRZyl40h6hYdNXcvMVDQQ324OQXefZKb2jmoT/9oz/CT6s8iIv4Y1xfltUv
ejUA4Zy0nXIKtrf3Al2fE9qB9e+tbsCHnW9aewDqzdIKfbgLIjrN+tJBrEHFQkm//8uf/2pyVil1
9d+m66cpTzlg5GUcj9FsU+kEFXpJfzSNYH//u8NtouEsh1c939O9rNOr6exK8bcXPfLxl+d0v4Lk
waZyRW46UGidijOgIy18ed50T78XMCCb3IKqjbQfYChm6KqBUgEwnMnotcBdnao/nRRosdFkXNnG
bd42B/IglmBD3K+DipVzO8Fl1Paunuz3FWRCGb2k4hLEmp2VvJ/+9FWzZ39DhQyv4qpR045RgEaY
zgGcugt6guQrOPqAvW4Fm4RUZ238zrQ/garsDev7C53vV32+lnpF0RATUKJYc1MZT/1ZEcNs1gBs
NWUVaSe0AmG2Ry8L0hX3QPGaua9hyfmMRn9XAdYdDEKyPsz/HkAblrrtEGkfvqDFVV1ByrFP1DsN
vPQ8jli7k5k7ffbTj8SG6oBwasB5asR6uMiXS/DlO0Y3zD1UKm6GP/WXuy2XOY9vch9++965IwrJ
giT3Qcynjl+3f7LbEz6AitkP9wqJMNQcMVTm7dwHwBEtkTzYQt0UkRY8brmWUTPRp8RU3YUHKZN4
RVvitjWhtBJIpjyYx0F/Me0YXq7TCeXkN14/ntb/xFuvKxB+0LkRVdcquPtuwymQ1PKERCdxzplw
ILurudy82CJ86b0zPwoPqOZAicZZVZ0HfZFakY0ikmR1w2vpMgPR82nnPZmKF7lvhgHChOn5MPiE
ppIDnaTl9gA6bXpzRQ1i5SpOgt6jQvy3yQNmXkvvukZIzOMCzT4p3b9xvDyDRwXAVfxCvYZXjM4F
HIBQOfHmJTCtDmVeIhL53GFN/z8PEGvymGeymH4cXsd3hGDHImxqtnWpmsPoRnzaL31Hp3EcgGrb
aqxhIVnbxQEJ3KozjindXRnxpy5AU1ybOQ894nGqiWkURMDzCdM8shEwJGuOB++ce45ZczNFjyhj
Ih1mQZjtsvZVFc4lwAQ+Dc87Wl/VTSAIK4ErN0icd1AKBto/MiLqQD6k5F9lUD0z91svzM6xRMUa
e+lzRPlCEY9jEvX4U3oTzFlpyqPabMK7fqQklM0u8wPdFuuCXE0Z13wQHroiUHDrmNGA1nPjGM+G
hbfSLT0D99lpdVzBs+/CEiXilKE072IHRLpS28RVlbW6gxTlukIGTWCMIKJRxbqFrAGzKEYzhON1
Ep259sKbwA5J2xAIOV4/yUDfirGMDvEMQbxvhTPSObjLbMh5xKMhHYp17F3WPVIovT6hgca81hqQ
xqCQOhm4wEqkRnVxrWwxHAyc39u3i6wAtv1i+uke52Dd5fGX5V4mcuZxizKPL1j+/ZJsStp43bdE
bdD33aDr5S6uXr4GZIEq26VfeP2mg/e+0sPRk2BXSvS1x9RwSD8CB1qDoysEr6tqm7iJEWMcCI5n
/wd+J98SRq+8ztOvXHP3EnH3Ou7CWMlyBKKsA+2vjB0DvYY6S29hPkaF9AmWC9xUUbiRCt2I41TU
dqRcBsBSUPpg2j0Ml2E4QXW2KuIejq1AQK+8DMm1jaFVZQivVcAvy4ghjXhUFXdeezqibk87QT9C
HnFG+DaGYS66sWrgn0C8r437NCPaCKI5VaUtDu0lyBB7quPsKe3qqTknIyY9WABB5Vftev0devzs
auHRPRJHRLEXVqTL3LeZQ0U33W+7qkLTYg/LR/vq8nRkYuZuSECWJdTLPBylzsYOcI/d06w15DUv
4m7qiKWEtO+ujPPYtcsFOVvc1dSa8uusSesKaEtFLKI5vx3Tg/QBQ7NNF3dlbVywKXufX0DoLl3x
ASR7MrUrFoFojB1ispnmKXStmbX2MiPrjjT3mAY2r0k5n9psNY2ggnwBqVxtuUu7QOj1nA1qy1pC
0Q7Dw1k8bCAHm1GQmJvEhv6crYiHyncVJ2NfRM4yEY2Dte8hi3MJX1eABlEX9+h4qgKMqpSReKX/
lMktLI8DNGdod9EKMhjKdpfvv0WvuYxgkpj0y8xTZloZv0J2XQYCJ0+GkhGHzGLxQTOw56C7rx/o
JePszzYcG5TtEKhIhNXQ8tkeD6a0VIEq1wpKw7LFQ6+7GyLdYYfv1uwQWTPFPn6z0+ZsBK+O/zA7
pMOXgaN0mYpztyGExN2XcRU+LiV3hSjZb+ulHnoagMGvpwGUevTySyoCUHtaVuvjyXd0Ig7U7khn
mV8+uvhsnxkKvSl8XUvxtGidoNOoEnoqfDDIQlB53MiJ+N3QM2XvnZ3xAZWTZm8agHtnNIe5TJMS
DEkUMGIbaAkteq9l3JDx6RAGr9uIMmjrRV5en696AAE1AO1vcum7ebxC8o6sbKN9eQk8e1KBisOT
pq0cJmo603/rf6CrLAIfYhdRY5DcVyg6HmO4yIPDymv4dAKviUIct46k//kKmb1NuUGw1QRUwE7a
DSUhKspRXhE2WOumjnsVt2IQxVPLLK1KeQRT7331dVzRRLkzSB4JIZxYRBMxXFYcvfy2iDsIyQ+V
IXVmZTShdJE2xFEuCCK0l0pgHi/fhldToQXzM6o94sfbTotCUVU8BrpCLXRedHHrBuiwyHbrVMQv
6rs1f4pPe4Eg9qGRY9RMDR11nd5+13EeJEk2Yo5OP019Ou+g9pKZg0xSWYqgV6KCsFkJKRwy6SpI
b2kkLoBefhmXOVsuh2LbHKCXzXj97hEMTkJKeqSRhPZShupYMCiMbqLnUpXpHE6cg9eUQoLJjuAk
xw3C4GRE6YSe2zbuVZMJF5maHOWM5vSHlIt4R5unBYUfekXxgyLmDw68JqYzd0+TXSfsEBX8UXHq
QcRTR6SYf7o9DkSY7xiQAOTTDSoJoF/1TB2UgNNl8QQh0V+B7KA67iqO6RoIwRkKlXjJjzvrDVjt
8Fq5bVkYeu3sZ/Lemn7tybfOkV8eXOlR3fHzhjCRB93Va0yzCAdhwDXHkX1k/rVt3A3hWw+Q9bbp
yC/ljkJFsk6wvo1ljGR2tbOaad8jUEKpT+wRIIbsCZh4YhvMasviYcu1pwYxX86dCHVKWb6gHRXF
rlgscjzXOw+F/N91G49xyIdCRlGh4p7Q2F2j11nW8SxL/1EhC6IuEoyXEjRgvmwTt0FgkpPKsmy4
nGB+Z8PpIl7n6i33Ra+9CLQ1JVZ9IB3UG6mN6A/Rjse6dMscFeSkffbf72LDQiPzi7ht4DvOEENo
6zif8okE0cgOxptwdDaVgj7ErdmLzpPDMsCI5oFeYlbGNSEfOVA+NukQtdkRisRyRp+Uw67fIcJJ
m6jcgsVyTZxAVi8Npbt4ASc5zK6lMyywwpkUgacZeXmkOqWozoJUFkGSxsvddxhwFSxvi/lj0e5U
PAdNspegsV6kqTgVqm64wDEURhsagOy2SmhBGw0Nysd9aZxI7nfxTLS17oBed93EvY7AyYZcPF2Z
DnyiUFpdN7v8hvBMSsXfKpD7KDRQdOlkIa8eFvlXhMfvGU6Qn6vIZOmVsEW8tN3hIZpxC7MPW5hX
sBWW0Ibt1ugwbWvtNJu7nbJyvJ4Pin7k/vrZT7o7ZmYmn6+ha53C4Cozmyai4G5aGgJNPT0ch/P5
8DFQtCszHXRiwIwnOnMD6Vewvo2nx8fhMrzPJtXXAQBqMwZUu34qKzhmZBICUi5APDJwQKbnfK63
yUatAIZM8hBhyPVU2QC6Ph/3Qe8mE8HUDozfBdWBMcfxkCNuKGdINbXAXqHnMtz11LvMdKyJXrrD
jB1stToSlTQejufxhvZh/CKZch1hyxBKml6M9W1OQv122xDC2ziTXf98XBEQ47w0QLxm4A7I/dZf
0MW0HV8MjcAoEbXlIrXxWczI4nqFU2o7mAmdqwif7inaKc9dhNDep+uVyEMmNLXayIo83vsbzciQ
7oTJXfNB1daRXdw/rtPjQ0eAwMW0vBHts1GqiVI8Jdg8hvdhQsCMjWpu2ZtPG95yP5MLOFrHlKIZ
uyqyKMFa6tczSCHx1vgREaI+TD9PdF28KX9KUAjmNky6dRbaTtNg+pv///y83BF+FF+9P00mJguQ
EGgd79Z9oarIkwboKLIVc6sF5iZLNGZLmpZVqbb0f9YDPBGQkoG4BppbpoDYQR6Kwky6jVK8DX4+
DY2SXZ1jvHwM04j5K9OE32M1sota3AUjwnRDryLvbn7DAyQJjzapb3EWx2YhYtPtwmvAvVq+3Kms
DzQISFLa1ZgvMi5FNGQt32hOem50C/J6FjFaLVJdi1UaEVDdYbm7yKpcklV1l4IwWw5f0DvPPBVE
8bzRlZQSb6Pg72vXmmpjzNeSpcx6K/hGjaR7/PClrizs+Dw0zDgvJVXGEy/TAK+p4Ps2Ex2KOMlZ
pwUCpTzSoXEvcbYsb8UzE8oIG7C46o9fdPY1whPzEzMmJY8pBTqn/2n4vCitchacLQ2cbRBXkBk1
iyseARyjgWk8vWMScPzFm7ISQpr/cIVqTs3oMRUmgtyRmZy7KG+2mE8x5/52T9wRM0rVkK4VQ8qC
Dvl1dVj9My9cVgR4E0XJZTZxG0U+iiMSO1lMRY6C7iPDT9DQR/85nIfLO7wZWzdkOAR1PW8TBqCs
C1crmz2Ls+9CNjU8TU+7fjJJm7YOBKt1vY3T/ZFUjDtve3XEPjU4uxqOJZtleUqf3VoPMq9gWqQB
edHHaZ65s+Tli6yRgkugTtfn6xm+jpp1gYoGTMeQdOrvHwPEUs1aien1G7WxEC0xJZhhXE1Kxogy
WfFeOiNo0jcmOzlaLOBZ3ZI1tg4fbZ8R2+7U40Vni2JC1kUqG/+Edh3348XwZBm57jB5S7/EGNHt
O7QQGaWq4ekha14oPqKaD+IPrAvX62bP2A/mJBwNUWkjjOftfO2xn5EpjabMl01Em3ntz1QghbQa
7/VUkddjuV+S41UeZlqa1iM6J+Qz8UOk2S75itKWEsGE7K6acCvVCgwVxo2P4RPajfxy/AkEG64i
v1610s3qrezfY6iUCpvhG21RfIV5iWWm85TLmM2wPW5Us7Qu3rIlSX5pJdCKUXDu4+vZXLns1mKd
0c07RcIcEaGHJRrYV0S9LzuQxTqA9p9vwgq+Z1c28vhgmqxV1UrMtxHZZhmqsq3wqhDHqmq8DU+z
Z5+MeKj6JzAjXnlR7lCx0CYUfuBGN5f5JksSMz9z9Syn4fQ8QvWnavEGojiVtfQSGyyLQqxkf4an
jhHb7GSnocyt1pI+i6qGj0dCp/PMryLmJlozPdGFmHsRmjpiIseCe7KhzPzPn9AY12NkR4Sn12lE
R8NyiHBYNGnVVeVKFLUi9XdeYCKniYBxvvK4zgSYOA7flRbgs3UROU6ScBqmX+2D3zhFNPXtMQzL
ciUuC9HMWfQ0WfF1fMobMBNxPssudE/dXGbh2ri1fdkFLXsUyv79+Jym4fL4hf7yGoNr5t24EUW5
olEfRrl4lHl5+LifD9SO4H54PdTyzJms5RlLni47w8gP0/trf+jVb7JDL+6hc2Os7FzO9frjuf+8
6bdAgOTDdDwi1ycgBvT2vBz1XLnP8bu2wGVAFe9I8aTQLVYUmJCk3JAjpZ0My/CxCBAwIkxVK9xW
sSPdjg+E35rR4o2njmwE3DGP+9VRpcX38yjLhdIM2b1SwQa4o5bnG2ndLbchunkzSh/InGe2acF5
Wt6L3taWXgjGt49ZM5852Cw7AcXwuCRfPGxR04IryvieS7psAQaYy5W5uVx5Sb8UIVY+dNkrwAi/
Ym2G5UuL5SI/XGcM6PGm17e3+3EahovJb7nNbOv1+n3eV344ynC9l5nxCKft0TqAHsXo8QLFEeoD
s+AUk7A2HVSVS0DAmC/Fl210zy5CervIpq0Z3yUhfT++FcB3wyPPjaNGfKkZOCZzQUWzD1d8x04B
k9lflzEEmkGmHEVXGkK/A4TqmKBpVnIXboJ8zdo9OJ6GWSR/Ph8yurtMrV5ptXkd6S21rYdck2cj
ILcB77STRJ2BYZTjXj4JP6hG2QGJ0T2At5Ax8ent5EpFyBhLhJalirZSVVdvEFqg5Y0gsNfCoD9+
eZ9mDfuE3hJfrgnENitiC0jlNHwdj2mKUW1AwartpIcEmLLi2ZF+c7KYXpJhvYSPqIlQddKtA+aV
ecyrDZhXcaDimPkB6KwWhRQBxoqfk8KoXjYi4jVn+tUnybtsg5Kfvqy2K1Zcr4oQ9A6trWUh6ud8
bdEM9K2sinP2ULfA+klXrtDcxq8qRzCYf2qc5FoSLBr/t/fDLKIeLmH1/tHftGChH9BflhvwfjJ+
9u+bvx8yJTA7St6zk0dpgmPFbCIAkCEAJruSDAujqVVbAJL2a3ageAdelkYIoEYASgegbXg0tu6Q
oLsb3Lc4O5zHy9BPh+WfiLE/cvvb3Al9OKplsmVZKYgKQGwWiEqnuaqmjUDUkPQ8aYaYyxCtK6UI
6g9TOywBvIx36DlvUxDBDq0PjMZMtoTKXWdGeywdxEI48xYeuBXrPC+C0rkUPEA3Nieu4E4O25dV
opdVMF17Ai4EkCMA/LJ890b4sir0sngHWypYAHQIQOMA+FGEEAA6gklv9JhDE8EBOkLOzMHPIQt3
0KId1LwDT6AGAHJ0hJKP4Jsk4Q4QHdhxweS6yXlKa4iDDACwinq1CuyGR0AsuvQIyfMXhwAUOoK3
g4zjUiEOEICcARjFPkLKGRISebXjGhEhlTlfY8vO6hAAugU7KRwKygziIFvhIILEDJFy3ux4TOg5
594RcvaZhQAQIeV5yNK0bskQZuM5Iqvnn8oqCLm0bWZbt0rWi4EpABibMtC5FJNaBJMjMO0CJtcu
jVy1IpgSHSrjQ3mjtWNgagRGOTB+5CsGpkVgCnco4xvMzcUZfXujcz4+Zggf1/NJ5EzmTbnZ1V4h
cri14zgdz/LjJjC1m8FNlcSxa7tdzz/ebexchNO5idZeqaqwHXmgela5geqllpplu33oPn4KgB83
G91rDyTByQEcNzPbq5Q2cFxougIHclPKvSLXGAWBq67cVXsV9dIdAeR2ZWRiugQH0EzHqO2E/VhE
25Zr6HQqc5RDoZsuAm04z2bzfcAX3jg4lGvdQjjgdI3DklcnHcJZAlryhPesdePhqWa2Qe+hA8/T
XX2l3Dg/6VAATsPb4e6MAhwFSLFx75Oa2MFjgUdVOQqigF/0USEuwcyGO2PFCNBl5cvUlydp2R0I
PVFHNF7PDemeALto3H1rTLcZ5FqAHZduP2TT1jEEg7dUZUmO49SOw60fJ4wd8tYwkhXEDoBTh9SH
hRXAcsc8XbkZRfEnDnDcMhUaq1zB/SD8sBDmJowCEaJbc49cu/paBEaBc9WVKLIc7SDFpAkeZwOQ
2wLktgH/rBBKwFmqyt9M9F3yDQGG1YViXIFDAb7VsmjhBiErzCJVpPNfZY4lJcBtU+8XBmg/jSNb
7YNta6AHLBkciBNngaLVIupFPKJM6sV8OHBXDd+4DmcWHeZaQBVoqiTXcqQMwNSO3VCPviZGPEgi
tElF1O0C0E7t0OJ1jY7d+byl56d2ISdYX5pbLKL80dsUXkRErCpz66z4OwWbajNR59/ePOKkXaAV
RJnYklpnfozBNbuZEHi1bf4TVgCQNh0boNxWJr4boJi2DkVe59UEitDrd6yNBiBWYFNAP2irneqP
T+TIOHZvT5E7AmrfAE7D9JQL0mw5HTBw2jqN8oUTIMu2CzhBDjYDqKh1VGQ7niyu/uftdp3crRs3
CcGLuLnsdxQKUNQuKOPXlsfhZABOxXDatVd+DQcFYDgwZlKHAP4UCpS0HGxqpHDYAqeS4VQctPID
gXE4KJjG4TlD7/Y+LX1HLs9RvuQBJidawb44P5dXAqUQKHZ5+kltEijkaLRV092q3kp62tDZ2Ky8
hBBUAXHVrNyfmOF0CBR7Ug1ZQFmYIxexrSOgDVWc2SjtCnpUOwZFJaVwVwrtKudd+UkR0gErdMCa
6WoT6dnuCnrlW77Bah1t2IKCvnAmUb/8VgKFDpjzAU1aVAVJFL5B74Be/aaEdhQzKIotrigThGRY
hOE4K0LoCantTZPhXJA7W2OtRI4hgUVoQKUdnF25dAUkbgWUGUCd25HOdcozZCDlLQBUux2ZqAa0
tBqAo5p35OUZCzuqwY5KtyOjAyATSWBXZketA6RV+DDKtwFUAEB8a7KUd4BKAKhgQF7LOwFHGQDE
129+QXSUIzrKHCCN7BwiW3h4BpBaXT/y0eQNAFTx9ZMkRTgqMgCIr38bp97sqAKA+Na0Y1dV8Ggd
ANTw699kkWzoqALXz09E5uIOUAsANXxrSxhaQ7ImX4RdOmNQonPTCI9wn3er4kfJruwQqMKBMpVk
0ESVuDiBMoFgArXNj9uCytGu6gWULczAoDIEqmRc5RJVMK5aBCr/qV01CFeKQYkWCYOq0K46d0BZ
xDCoAoFq3K609zRvsdMfHVCpnyIGhUBVTKJLO8r//u+YwcQV2uKTbNyT9EPwt+F4GL73et5wLAtT
VJB1D1OTUJ2vptWG66UECuqB2i7r845+iRGoaDjQDnK3g1ZwDomZILSDelkfST3jHWQyBFMFpSFo
e7+Or6/B+s7hoFpF0Hi9AutLhwHJPSYq7rS+ceuV4K8V005ofc4YFLNQxdwgguCoCChBYtoV3WLl
IHStJJDFHBzaQ+YgbHPXGEIB9uDwmJvU9zgtA1ps3Slo6mobXQ920Dpa9lqUr9eDe+gcDkTPvZjH
SRhgSjaWQ/QWFIDQevzA+EMpYX+4Pw63c3+xvjmpz7bxL7kEYdN6VAXZa2t+iR2HRpHJWCMSPf0G
WiJQaJiw06/F57aAS7n+CV7rLAgQYl7DA4ZEywZpLuRXrZGHdseaciM4pNfQcgCNbZNSYJVraMhk
YrtCSk3fYg7trtgNLxFkN+B4e1JsYLs9BM9p9ps8NXF76LTuWYghp+32gOHRekZ+Ynup7CoDrwlo
ZddtALO4cYS8xFaXsv/78Uq1Z4rrgOxP5q+drt8O9/P1cXjrz2ddhhfnfQ17nqnRpu9UiECcrjPE
j/kId9dyE8A1Tsx8XcgSgftxnRntt/HxcXgd3q7TcOjfHsLUPwu6WUCTJzG3EcwIaILqKjSeZ2GE
n8VE5cDqsENu+z1JuD2N91k6/KC+N9MMH0HOGBeeRSThQm8UHb92+/RFvrBPHWNKADSuawLYUG2q
SAIz7Y66jdJAoNEeW6Yqr0BFuqLk1TQMruQaQXBk014JgSwcSNMtQqV3qMsQTc+P89DDR8VX5Hsz
I8D7+318v+gNX2cS3YWMnK/Lb08hUZMuWdSZBf05SVj8APzSYgvs2N+P/bxH0+JBVIwb9n8Tck1P
ou4nzr+XCxTMBbzaO4Em0GZzpoSlztFYu5/Xf43nc2/s06/v9Ltrc6VHhz/nLR7m/3LI8pMu5ox8
gvq1mK5KufO329woKpe9P6c33W/geKZsTvWb5UtrKCaZnaAURt22JezUqOf0/fRj3oa4ennl1aqt
8mP4TvOjz+PlC/p6rrz1XtPVoNPMrAmIu288HFCXCrNeD2C2dP+dBmFPP9A2lDW9q3Uj9v7+ZWlO
VcqrSz6EKeq2mubzfht098pGPn/mPkxVJblVejX+TPOd+Q96hN2hj8GgLDKT4tStyr3exrMmo/52
O48zy4ovbmzCVhdrSKTbSxw/npcvd9PzjOrvJUAd72IzpkYD+r6MSOjfZzYkHCWrFyB5SQKzWgM5
fT+8jqdR3EXFx/GaOpx+XPrP+Q7frpfHQQ8CPJQiQjK3hZoKKe2YuPeL5h5Oy9KaigjC24RfbDtq
t5Q+QX85fsxkrUkDHKZVhYMTxDPXcD7H00l3AkGgHGKDZgEWlMNvsDcJVs7HIw+H7cIhbEvcUevw
HIRmxB3tOGXOp3QNrexbojHz0gPiZfo1Kiv57JVbhUy8bL4kU+pYB9/ch4zCAbGyN2cmaqSNuDLj
i808h5VBIz3bpXZYxFrJ/IPGpJSr+5we50MuruZ37yuh/GTFt964haZFbBvlPPP3T+Pb20DNDSwy
EQdo+TL9pj72Mmcp+xiPs84yv+L3i3invDU/QWU2056nq+mxPatqD81eRbxkLV+MX0s9nPWotufr
r49p1iXE16FW15qvGeHHVWuO/jtBLyNjMjHDHPI4skctN2et7k4yc6Fd/oiIde8VNF4Wh0eGpnuL
5cQiNfFD0FHN3G+Oa86d3owZK2Y2s2nR7yMvJUv4Bv3GbzFJIJJB05TR5xE8LhEZLJuD8tAEixTB
MVVv2tt7aBGxyrsxAefM383zMqvvuj3DrCX350EWHh2fKeepIlsBXUgYrR2EXKs7ud8INEnKgIL5
eCbVsRTAhrxIBKdW5ywl7gaZWbWinnI3j5TpqmmZEGrFPYS12fDXniapXR6yvGjqioUVNfLKtkqa
+KaaKFfcXr/4oGrWG7Thktc5VIrA81INn8OrLV8j139ne2+/Y2IKcr5C5g+EB7+SoKfSSqkASlqR
rxhyCxjpDngZM/iy8rKNDNqpAdFsXn8eJl1wILOgNsqZHeUljJXaMdNcozUX0FqIN85S0B9EeBoM
hN+exSdTs2HiW5mhYQKeXOetb7z12rxMPLdW2LR9Mqfr53jpZ4rU82A1AxaP0KxEq9psAYixbvVW
ypAgF2lomlCJRFlGLYfN6xd3oZj167cvaDHmNmfWL97GWt0ugK16yA/j29R/ikSdMT/UimwuKbIx
gSReOmMqyCCOmZCIxXma0Hr4SKgJiajqVuq0Wm1Eiy+ZkakuzgiD5SK3yFZGa7ZX+olobVdCvgrJ
OEU5beHJvoxeEj+ilKelTVypjMQ8uhIZAyKtempJvRpqY0AlRUHTMRcOcgMitCmeiPUav+OlVa1v
1/uInm9TY5PT0YV4gmzlMRNNT6RFdStUtiaMtnAzMt6zWnYamsRL4zQkTBjyfj3rR2338kN2fJqh
B+S2pXwlW+0rOJKB65P9v0rzC2Ubs34dh2+/u37nbCzgxK28o2iEWvEWoqKVt6DcFnJdKplbjVRP
ItLmBDndH9P1y4BcwbY6yLiCNRSbNGIdodaLCxBhXf/Vqre2uZCZMj/7M7iOxl2Hol8a7+MmF+1t
+B2Bij50SpGr2i5MCLV29Nvwy/Xy9Xr+Ovy5n3Wc7wclg+g4I9F001QWxK+34fg899Of9BwBCvKK
QOqs5LRGT0LqfXzS8xzQKTovgdRTX9+Gv49nP3kGfN8lxgZRGAshBwtdwim/Slr4l7c3nUSBvslZ
oab1WRMuRV/l5Fu/Gfrb8G/n6xVeeFfxR70mhW/Dnwc9kgBtN2MUKQ4cWBTZiQZozw1nY3rTGd+G
/9U/7/exv/zu/Jzg1usVjSx3ZKgckGjr3S4F2qrg0GjTTNx+Z7rN+0Db5mvWWn1etz7eEMIr4W0G
COvPt48e0XbV8emN/MxjcGoAoFml5C4390dqdoI+3THiG8pz8Dnkl2G6DOf/vIyPP9lZiQAbKhM2
8ffn9PqcKeA4ULvy4QEw2kWTpze3aWPD6GAF47Tw6cI8QLSS08pdjYAvu/rHYzpMw+d1loIHEEVt
nDimkKabeUFRVGMVH7JKFqFeCDFosO5FYcHqoolGUf3VQHwXLPj8WcGh4ASC10b4q1XcRSdLaDmz
Q4OwFbl5tTINr6//mBXy3+lu3zMkrY5o22nW1eeN6XTzVxli5cVkW9KxQl+DPVYOAuM5B8Z1DqoN
bUuh+h6G6hXvxhtTqley8wTdka8teq6TOIKWQwLseEofpZrasPt1hmOMVBDvNj1MDGao43yTR3Fb
Adw6kqGSqNI+/eXVPe+DGySveqA4VlEd+ttI6IAIrfNo4kIcoWTgAVqxmbobaiOrEuCBgu6RzIEE
3YO3yHpogJFFmw+fD9DoGbH+/BH/flBChOKshqplJ73ehW5QsPhXdGzy9mHgTfi2VHQ/Pr2CJJGa
LYOW2uSEjicfCqDZlt+Mn5hvmOx3nCbDtonSIVtVhF4819/ZeuLukDG1jl8XWmwUZXg59089XsuQ
kA3HHJ43CLFjBDVkOVijwSZ6LmOxwY3nedQEdCkwNWBtapXCs829QZIj/oJ0stf4fvmLwQJ6ukUe
fTGf/TQrRIfl4aAtFF10C8s7oyuYARxlCG2cvCVR8wpFTR4VNZQRhU7RehLGm+ftbhCgsGvCRDSL
Qv9d1UCaKDaddXa4l7ax4A68rLwMNIdF8bp/Gx/HD5x6lkVJdrm2M81yQypG0/Kxaa5DFX01CITq
onLD+BwWt+ZxkJHnOT26gmMiPupR7h97LahMZpnA5emNJdAb6/jTM3qj5TxSwZrhGnx8U8Re7VL7
wEvyBZc/ftC85uukuaxtiYVedBvVaENtHmT1lXVafIL3pDyO2HmNFJanCPiwx8mpN9hSfPD13Qz1
nujwJr1/Udf0/RzMkEqxx3QebQ69AqEQiIy7Xfs5aCsQOdxFxi1MOg49R+S4xy3xuZrouTBEeEwV
tg5ZtITVMQsIQvExvR4ReFMYYs0NWzzf1mpTFQRRRDvRrEDUEEQZ9nppV7Y2PQugLKuC3cQl52aG
on78fD+QNfX4GD4HwHuKuIobZh4ji591XDPw3WYiGEe1GTbNcUScfex5nv1xdk6zBKZ/lUfXGoZn
Yo16XNbNDZGDyhSLRBPmbxJGEWDEeVTjNRZRA4RqETV0nXJr4wDgEBlbp5piChUyXysKkL3Qsj6j
E7jypvI0EqrUQFbpUklUrSbF0/Jz/2N+tFAfzvkStFat8iISTQHSI2ONKBjbsEgPQEyMOjNhz8ay
zRSa/7UYKWmlvPXeFgEOctJfNSFBE0d5KNRd+1TJ/pJhVoqOs4XUT0N/+Nf1+jkrGTNKgUqcZ/VK
y2oj4rwA4tyjZS+ObumBCHKJUyGFM6+jRQZG2ZsJQ6PmLIRNbZTJU5VLJm0ylZwfaUi42qrVAwvJ
a9Gy2BIFPJAZV5FRYWf0nlHMzbsZg97tS3sFGG3jfs+g+gRcrBI+7+m/4KF6WqIfMHQPrQUPjUVZ
oex4C+KOegqc9XeD51HX4fuyzNVGG3+S6RdsfPplVYZTA1dT3UH7aTF7gfuu6aIiOHyXyKuioox2
bYDlYAses/Wf9voQwIRrJTPSu0qExSa6PBAWwAbzDUhv/0H44vjRX6TAkNVlqsC1tXRKshnvx3N/
vw+YYbfliiKzjRMHrPYZrOd78K1Y5KhvmStSj988IjDBFWTu9FF9m85wmwYneV5fr99lxTLrWIj6
iaVRFywg7qqOKnbhqYC2nLESo72nS6ZsykuIuD37O0zotImpZkbzhQoaB1b0H4tlEnrw7IEc9bRU
X7XkaZRm6sN3ke1VeuqomQy1TlIwS+fbvg/T1+G3uqPQ42/aZpZeYcWTYbtViasdPqHl8hmcqeIZ
qOv2XQYCRknFk5FdGoHyD4PRUPDWvT4nAA2FvIvGHcJPV7e3AXeheBdevolZ6WRYLn+55i8rHve2
Wg/wVy3rqadJof3fsYgWiIlxMW6htegiyz0pikR5PA1sba2gcACHnskDalsOfUzDW8D/54Vao7oD
TaCOx8QsAo1asUyiRNEwPpMO7C4aRRhQRtp/vJ7WKMpmAjrQkb1gT26n3C4ClXeP/MLYAh0vl3RW
XcbykJqfFNYIm1LRiLaLkoPTKZEXoY7GdANNAqikfgTHc0Xff3y+Xs8YYSpKNovA25E/yIemsX0q
FsNxKs3r/XYlqwL4dsqohAjtAiB7Vdx+9UMSyM6Lu3OsU18/aEC+pSdkO37Nq6gEUqqbaFRiQV8q
DpR1fHY/hS7uAwCe6LaJeuJF/1gOdGzeE+n8eVn8l5ikAzilhxrjHA8tFs7EIMGnU5igk4MfjKlg
bbZq4y4rmt98kSkWHZ4VqgmP5BBM4+kA17Tll9fTOwomMX782rrAGh/ABlQ8Bvw5mmfaX8bPw8eg
808pGDHd4nX4JMcrSz+Nbb+7pIhEgCgApFyAUNejwibtEZDvO9bbbFq9vqKRShWvp5c0fZ9+QACZ
O0VFv3gb+LFsIAfrW7eBmg6QRQ5Qg/W1W99RW8Ui8v0CrO/C7y/V/poa+FJ1exRdvkO1e+rwNl0/
D4+rbmxzi2bhmxZ73CrRtDP3LlgDNCRrob3+mC/9u/6/CK+qok0LN/DmjY0nzcMgsI43l3OvdT6t
rmnmk6b2VpfcktHT79fg3NboVxlaw20qvWEMcczthFlxu0K/xTW63ttM//P/5Qvmbpp+WrQIcr7j
FMi65faaXjWcSDM7Lrpmqqk4f0DEZZIKuXWm3+F7A2/f5kreXMa5wmuy2QWrVnhj8fd7ucrXm+2i
6f1XURe8Q6+yWHwkEFYd7aIqM4PEi+Oz+m2Q4ev4DpHHZ/Uz2SXkJflLzqjzCjThU/uOmHPN/I+m
j1fdngMjbs8c0O+KIzHUXZfidcoNhljMe+vH2UqjVbNWOJxm3W7QHtDvYrvWii+kouIA68NxfRqH
T7zeu4HFB7SV1BWQtBVL6py610v6DhD3rRPXpeZmpQ30R4CAnbSsc7RkwNpw16Iem1XGKdVf3qWK
nBkrtUmvNz4dz7ETLC7ExZVb7Av0YLESFxfL4iDdhL1xzrcjg2h48/6whuHhmQry6ppXL561LUEA
Bbhj3VUbPUXpM3/tkpfML3OJrLmSX2sxv66THQam83Dvj356/Np/zjcYtyiVHolq3HrKlTZUDpIH
QAEANQMoYgB+q5vyCVo0ASgWAOFo+hWAQgZQuR0EbfpXAHIZQOl24BryGH/ObegftpfzOJsD9HdA
FDlTpdcAQ/eBftMAhjQExWRVWqJ0ZPFTpTOWTnK2cBSZOREDQaazpQ6N1uuQdFVH1iMDqWFm01Jf
ZIljASulZSunpgmtTcRKQlZOwU+N5pcX0iaAqdZWzHvpl866/IjCljUz84hnv2Rc5pGtXehmXQ7W
cR6b6zezvYYKXCOzC5NTbq7x8+rSBTWomW/+mX6inXrP4X649cdZuMbfvlEeTKUJBblNKSdr7Bto
un9FLzACA82kuxbKpbuWMjS7t1ewN+WgOa1pSzfIOufHo/12RZVFiL8GWOf1fv6tfcu/3q4PqtbF
D5hpt6HuzpYhmMgDKEBvpMwxDtmiausi6m0CFQ3IA5avgidq67pGaRxt1N0bjbgCMH7tTJiyRkv3
1LE1dTyJfvzXeHm3YoLaZLlGz/bvr+fr8ctBzi0t9XBWI8UaNyGmscLDQHw7X2fBMRHBJAA1C6Bg
AM4CaGnAMMuiWVPSDucEuM6BM7ZMEdnXeXhLbqt25/MbXgoYS8Aq3Z70A8ltb+fNEfvX+/X8fCTB
tQ6cX+Gw3tquWywcKFe4vfEbw8fCEYKSxhqUWy/tEUQnumh4y89Cg5mdWcVJXzTZYvXa7CPJUUKe
13MiaAQV5N4iR34R1pfV2Z66ARSxjCeCpQoRQBimKqKcIEzfAHmwWRdNxeScYJQgse7H0a1CQFRU
BINAzAr9hpFSQdIRFiSh7GaTZAeYspem7WeChngEYSjO/Sy0klQsw77EMBS40y7ecNs8neH78fy8
C31r7MvxWm1rJcvmuxlJDfqjNGU0T86E8lAxiIoGk8NEG5BcVhbRVFGTbvrjhsNjZbwm3SY0LLlU
MDGxiUek10nAz4tJA4YpwIxCbUyrZfQ21cUcVtWCCkJqUNWT+ec457WNpuytc01Q2RbXB5lGeHXk
TaAELL5X0/ujjheuocprL8XDa+FknoJmE0LPZPsQWIRp70LeeF3bkdLZZVGach3kzB14KmcPxCjn
UldkvbZCLjXKW6yjV/mvYbruqFTIPc4YSz5N59l7eZuxxktUUAMsAG6+X2ifZ1FniVRwVELMvFHf
0tJ3iOUVSKT2ZKWfbrFKLNyTy8y1xAVZRPkWIZQnYDk/QE0TT032MkCA0MpR/ohV0U5A5sUrQFwS
EHoh/LKMdrnV7swrAY8zj9bjrrkDaggS73YRq7dHScmsAfkVZ4FRiHJ44vLHx4SlKIAKJmqtdecd
V/Kk0zHYvPbbN6/ZPGpbwIq2NpALO8fPnkDbeTAPrlp1JLOOufuBE2X1fepCAd1GcjDhnPjYKLpF
w/NJ6PnVYbrizjrJ7ufxqKMBMgxjlxXFJt/03epiaRCmgIW2EVRY9rN9fj+cpv6baYRknuksAmRQ
Oe/Gr57eoqVAQDK3Hx0S5eTT94Ntitig0yhe7c0AtmWMnlaCbsaUSxU8yagWgAyfr9onhkC1UVBb
lKArMvnIBMTvM+mhBNJIzVvwQjcenX0OA0ZIwVj1a+BejT/c5AXv2InJ5CvW48Yctf72cvp3b0eQ
avmK/BjGFq8l2g8fy0+Z0fuZmSu+V4dUa0926+/PYnbQPRMglJzxWvDILO9ia4QD91KCgB4//jQW
+UL8tmPe9xH6CkfbwYi3yHXu4ELd6p1UwpMz3YO1HxpsjFmIGxYFWBoClTvuGOTweRiq0EY68enZ
1fDVVVEaX90vglAyfflDF87j/bFnA5VHYF6+zJpzQOaTi6w09uThYZiPmRyyco1MJFaKhs/ihV21
qWuLXGZKe/7rXz+oCPaP0us3QYLG5QXkHf3CVMEw/vJ8QCAth/pocOQyOVJ8PxA5LGfCYpFQEYAg
Sr6qKryqj73bKDyGUvLLk58xVCc6Vm6WBKZt7jXQ+LwU/pp+iXURBIZUGbc7glpE1Aq4ihYoh4jo
L8fh/pgtAGPI2OIS6Mdhb21ZcWrhWhMGLYK43rWkweClYSzsgrSC3XhnT6nmb8qrETEudCOIdBuy
X3XY8C+X/7wP+5ullXEHpzZUqKn9twFF8VpusOI5oMNk8sX2vU3X2zBhIzhjt1+hvciFzaOz3hGX
AYMjWZ4N6jvf+vPjf51/3KDpkzEZhiU4zheAgnDZigZR+QEqpKnTvs9ddpzvx2xXt7uYoaAVUL7y
wa588TaRB5nB7arbW+05jYHzt8mir27t3IE+nRz2zaMymsWdARxtVdTZ59clvD4nVBLDLnzzSx1r
nglcAdm6+16+okfgA69U0sXmOlWiRl9cpKfF6NItZlN6kniV3PqPerUoywilvhjjBXqyq23dlplQ
OtPW51k7xvXiyqRR0s8soDN1kTJtzemfUH6ljW+7LlOH23W8SNqWmZKqeE60TmFdZhEt2EXTYDNv
eq+XfjwvHO6ah8PFise86gD44n7+53OcBh3KeQyXOzmo4OYrHvHq6Q4xMHAvPHmXh6MbvoC+nrll
mhJsPGMJREPE8Rjhzn3veRn/+RxMwu34NlIyHNgyg+Dh9VsQBQLB12fqr5cOtJof6IKu8XWW7hhz
mXcBvjm8IUGIfh6j7Wc6U/nsrKIcv+Bb4IHkusZjGSmy3QLEBc8K9r0V3hYgFngsshlX6FMQXMjD
qrWYVm3hTYKf2fqSsmKJynD6OMCC5maakRikd9Av9Q6aNCvbZaVNSFlagD4+vvbTqOcbOQ4pvQoC
VKoFkKLGwvOvSzHqfXwdz1qHAvsoc16uONhsiwXA/hu3f78+Udg/2kDGKCxMb4SFKZuaRNu8UEdR
nzczVmLqj8yN9d+wJehSJYMZOLTu1msbh1rIQBCcsqkvrrCq1RpEjkBwirl2EBaVTd1/9LNaYE5C
fzz038e7teaQv5FtZadwmsr1YX6EVzuA4/Pqg5OOmHEtNSXyay8ApQ8tauixP99tCvz1kcaZ3aHz
BZCHoSjsWyNRZcBBqWUUISf9qTzDlobTshwtK1c9Qi127sdpvD3Mx2mAo47b+gcqfwPaOToMFZqO
inqZef16f94kbpdxi0qzUkc1/HUV+iK3RWyczI7uu0BQKr5ZIpVChpMjOK6ZYRCDt+fI0fldjm9B
xR7+OkiTDX/RyW27Dt4Ud82kGJZ8XoWgcP/Hjj4ffH8vENdG1FY661dg2NurtibMOzhOVx1qtK+2
/3odT4fT9anZAf+3w7ePweinVJtD1UL3w2V+kY8PHeTV59MpaYgJsT9LS+DCuqOPz/vj+mk/NRso
k+73cJz6+weC5fKng46xruO52/gCkIbTL33QF59F8isuX1jrO50tQuiPMwtZxBstHL5qqLOcOM24
0baJ9V4d+6du5AQ+U2rvistQXL5CLtjZ2BsvNLrn3L8OZ7De5V7qcs3a1r2cr/3JlmTZ3dx/XGYj
cv7xHTDOzPljtce9ypzL8cX4fF4sDgVDRy1D7Ezxhu/WyjJ1+Odv5FWuasVmuFRhFdTdT+dlO3SZ
v3DT96klxB09aa+hrVe29214/TL6RUbXaXyfrTFwbxnne5kWu1odJmDFyZhpGqCZyOH+vvT3mTnm
CWm5S+Ib+aJ13OS/7KO9nZ/zvqw0pCc3S+/7wfx43u5gtJXTdbjrVHC9fSJ87TQxQxXlb7aeduoO
YyHPlDO/8sdsIRpKB4hpvFYNFPjReXs+LEvTY3I/zlQ1dg/BGD5v2iu3JB19fxxO/aNHUNjaMGmh
1oduMk19mpYJ2ozxswTttz3U9DKyLni5HvhHmhvooMN4nC9+Vh/1vaEbZwuvqLgpv02e0RznrFUr
qqxcPoHAOWuPMrOrpdEib+/+0d94OFjiQpdGpZpENGlWa2jOTzp8t0fW1VVjf0Z7ZFOOHuQ6Pmpf
penrkSC4rooYyJQWdnpas/A+v4LziSTWUfvUz+i4eWRr3nE1EFNtcj1rtRntrI08q+dlZgVv4/fl
OjXTQdtxT0FbzJVl8Jqf3gE/dWWENh/Gpj3e70tA6zIzo8f0PJNkePTfD8M0mSbMoqipXF4+tb1V
mX1Ob8/z2TSKMlbR/FfbOGoWiY/++DFoleL41HqDCL3KXMEFxbtcuEtL9MGw1ZkoZnbXP0zL6Zm/
Wl3+oz9dv+npvOav1HjLPsoHjQrVdQwH+8/IkMgyZD9kHPmvTZszaxZ6SzT/Xdj7qxmBY02pD+Pr
Jtfgoi1lpgn89Xw/aMIEYqXpWEpRyaH1c12/JZe2Xitzz7Cnr56Gt37+1+jDXA1nvIMlfzi9us3C
duO698t/L3Mlp2G+NV0fZtHh2Zy++Wkc/EAjqyOG7GLH2kCmqrJFRwFwvD4rRGvW4KRs+2U+s7my
t/H9OQ2IVjiboKJfKnvw+KEpG8YzQeX3oLiohtia5muL/j6/42/v9AIMXc1qwLdppAFgn9eTVjEs
XZ7GWVG/moaIWTxbJFtaAraUhGAyTWyCcbi+FNeb0cPtehIkrTfDPOflhbi8dJ8Par+Dz2vzaaJR
llklAioYkJ+SYCqFHIQ9JzJT5elEOu9XNXXkREreSMcb8TpO0HKTFoY+Tk5Gex2Zl1Dlr5Yv00xe
N6v9pDK9+nnRta1Z1omr22z1bQXvopFRUPClesmH4l3k8l3wlvxSNZ/iDx+z1v4v3YqC7uUswVJZ
xqTul1lI55Mvqcj4fF63hdWbkYlepS9ZyQRmpjob+uz4mgwrnBWy90lbqXryyqwofD1PMnIb+b49
PMjkVvFOfB/nCgA4Ss3XayotW3gjMkbzbkUndfQo8pVWBeNCra7EPXp5eck8wx/tGDxbmcrJx2dX
U7elyKOXkZjxLTgxtNl6K2+9XhFzvuUZ8tYbxpsJlG5Xq0zmOPwijbaVRbYuf7zMZOHhlsv8rmT6
91sT0/JZgI/G0ERkR+3GItcuMToZUqdWjzpDL0HJOClaxonn6ghwAm6k9FiTF+1dsTbAnOr0i0Yc
Ia9lnrSwRnn3qoyKizUbkK+h8mS/ly23BiDvv/JkaMONRwTmPJ1lguCL8Mcgry5CftZ5sXobZZy4
Ze5e8/PwK0LD1yUvL91dBI3uzNvwdwCkP1+nb8oGrEnWCBsmJe28UE21XS1TQsPf9oswpAcJ9MGG
L8JrWr4mKVmbqvgcQUb7+iZlRtdkKwkR4QkAkSXzeL+/YIBI+fwNPykzPELFeCSC0HoKj1f4YSCk
pWvL2/dTB1YvSV6vGlk6RyhB5k7FzouU1Yx6jQmsoctnyllKGG9tnM/J7KXydMclp2GtssiPK2tW
cl8JvEEmiq5Y2Z1N7FblV5Xn/Cy9qreVoJIvM/euolhxFydn5e2XrLD6BQAbWpAPULOA8FsHBK9S
pqSGt2+aKrcpw2oChhU/cT+pNiAGmZQU30RFbQHzOIOQD9O2e164zOByYPguqJQvomllORl5lDKb
LqqVNtlBQLLoLfg+TL5WEScuGSN1LUuMBSPyjTaeT6jxfEKb5w304TV9RkhKvhLFziB/sOcGATKD
rIuoHkvrjtfPVx2MfN5MEyDqgzU/+gsUY/MzyVb+h5gcA2Iwj2N1ZW3LLKvyjGSv6Ce4VJmommbF
MKMmNrBMas/Ya1fkvZxepsisi/v31lcqU2XdyQyTuYT8PHPPuPCGN61lpoyASu2S/+AGG4bgz/Hd
IAF4XPK4UixZrIAcO9lidUql/ETLijUQr19d+Bhk/tCWq/fZxIUGgOCZN97wlPV1yvRQeaYyhfgy
gcsBV7PHZjOiy+2TkDeg2MTTHsncn76x5lGm+dk09F8oX+J51nPGkHrVycwmIovkV1ewGeiX120u
CujvHpJKLvCXtgJ8C56/J1+JxV0xhqrcylWbyT+cxt7Es6b+aPKr6GcuDEjxfN3re/jmIqIHPe9t
AoFR5QKjfgD467zP6xIm72+3oZ90YDsKpuFyt2xd++56si1d2mZ6M7DlsHvDo0syL6vftHq6Tm4y
2OU0fB9Op1cTjDpfX00p0f3wOTx6MXfDxtXqaKm+yQEhWG/jGQbmuLpWw1KZ0z9ebdu010EX2+lX
8jmihNeMqydthwuGZHK+7Gg3ffjhcEIVw5lLntUUrR1rJvLYL6G882gyjW2dC2VD6N9n8HJkvuZm
hZkpJjK3MVyO19MSpX4+3g6qPlxP88l/POKo001vS9fMmfJ3cs5Tfx8uNg/FBklNHPP5+dlPPxZ0
9m9eWyB5yyaHj7ZMLjKTJcQ0uPnWgbIoZ66ls4hSWXV1F4FuaOdtnO66Q6KuBTKJgcf5AXxekpl6
NTdy5JwkI+R0KwECFQDX2WmOxswZUp/gDAuqSDUvlMaKWQC2WAeA4L6OBMMCsdMlTe9WShMzhQLg
grIFkDZoSptCreUK/fN3Kkx0Pero9N+u0+mgw9ozycXfAMk322pl7coZzjPt38e7vt7pcYYkZAFl
DpBvKz1vJy0O7v18pzNrHd/oJuYX1J+PpoQOwLTt39aBtW9aLOi8HX3f8+2eEIjKgfBdZSHG0LGE
LXyMD1NtRcv0kMxvU3/TgyNMWnpv+2sfrm8k6kGujff4lhF+JMEoK+k0am6jiYSkov4I2m3Du/V8
IFSLO+/i+f3g3giCki9QKG3fawDFiZn/fF4pB+45fRnvH4f+X/Pdzp94fDxnsu4vdmTeMKCMMXtD
7mteXhbldF3odfRm3Zf+0h++XkedxXGntDRdCnIXOafN3Vk3HDedqD56ylKdxfSr8H41iLZmEF7w
fpZRt/Pw3XSb+xzvdw3KENTSKkrelWtiHhRuBSDPQ0850YaQ9I3fpDdMIDMG6TVb0K9Wzmqh43lT
BkoeAKMTmyh/5x/XkQb+cbqeybQSAXYZAyw40WJ+ZA9dO+K0Gn04y+y1TkzuLXiXbRfF2uv8IEiD
tgm2SgRQN4EYLUIM0WS8ma9bzVDehpvpEPDK52U8au9coP+enjr90uSJzpcqw2wdTN/xGhCE5gA0
9EGmAZ75UFXGA6vkvc0y9tzPQuh0YDYmb7Bh3HdsZAcbnNnCeHYkK++SCU5Li2Uwr2F0urL2cvjQ
2XsHXTl2lnfEBO/b3MGOLs/ZWJus/jNr+CILpn15swmonYbn2jKUNRMZZU5Sj0fA0InWPMbj8TOv
2TXR/pq9a3kNuFnLBEwJaJUjYf10chlZTBmN202AKvcE7oPuT0eNG+R98FiTouAZi1oYz+aapijN
OZzaQCc1T1SfT94ls0VfUZoG08DDMNdXzfUBk+BbNAZyF2USMqpqh2NKerVti8eZip6zmbhw5R1P
pvGejJfGEGCdMGNTOU2vDFMQJwOtV8zV5knen6+H20xLZ5vV6n1jdSuy+WiZEF2ouVoL+/r2OHzM
uB8uS+MekZlZ1aGLKiD6Et6Hh0fuKa2gcoA8jr3SQWbNbX7dpGUg/UI5SFoM5FYx9fXjw+X1jtQq
WzrarcbOBUrKYSaLJcF9H6oYKKe2W81kSaW+GVGpk2ltGv+suZ0kd0jLIbilwNCYWtd/jIbGXCvL
b+MFbU3x1jyV4vp83J4PJ0ZmFdfjh8kbtQnDHZfSEAqP14m6A5kk/NuoG7GJLMhCqpg2vG5mixR6
4Sf6ArUne7kFQ1va0psEEavv3A/9HUg2C4XNH+d7XEz1mU4mXWxznOn/0zZGsCnxZDR8jhdoYFHZ
qykU74KWFdwwgpac+9nePX6M55Pry69jIL+RRne1nTd3Tl+L7ZYz/SwYHrCnZVPlGfjOo0XDo6lo
MXzEACpPnjOu2NzaMsfn/XA863kp8xI98gcWKRIonsdoMh7sY9M15UftA3TzHogtu00TEgDYejuG
TT+Ty/lHcikPhfMT/I1+QEb8jPjxkTpY6w2rcz6KfcfSIvpzBjbrh2ewT54056Liq5pG5zvVoWqt
+OpSjMOMhPmfzDawnm6nJzzdPwThpsl5qWOvApPzehvIv3SfjvNHDk8CCWC0CwyvnQhxO6MG3nXp
pdvtjOnezvqg2gAAt3ZwLXmbYhhXPGC6atJ5U1V5Gp0mSkDKND8XA+Nz5ga6g82hPz9SLKExuXUE
p3Bwvg2vN9tb6DZdtVs2tZvaMRYWQ87NN51tz1BDQeeHeb7I80VAlduaz1Nv2tKzBvPtPBOL9cg9
JujxI4hVcNhyzzZlYLk7s+tuGilx/RypDIsVjpmYtfdB96I8HbhATpbHZTQR2Bu3zT5WN7tRhuZF
4L0eHQzN+tpMjTH0bWUL91rl66xLWw0T1+g1TnXZQ9k5r7dO4i0tQmkrS72wcfRTBRQVMlGUHpQx
VTzay2+5amAOjght+1gEqAz6Diztkr6O74YDzCzmNhPPx3iCUFwxGEULbIfAWfk8oYpes5RbL2hU
5zZ29/F8H9b4QEXTles8EaQI/aP//7H2r02OJLm5MPiLKIv75eNcNJJ2ZyStps85+66ZrCySjMzk
FJPMYZCVlW12/vs6AHcHPOgOj+zRB5WquydAv8Bxx4MfEyFa4E1ZdMJMx3TLWAxW4PqqWPzAsc9f
sX1fwdioesbqxj9skAydrScjEknbUL0tMPnxfJ/STbNE08OvQfjVFg8RBR/kVjaINBjGD3wwC7LE
liFcul3TfDpZUIXD8Qem7yDLo8GKMMAcIULIfg+4SkBX457vHd6z//fwc9q6xbwOjG50G4i/zwSj
oDwpIu4PlnzUYLYNXXU40km7JAanowbAIblQtIgc5APyOi4dW+Zvr+Z/VhbFTm0VpNV7RDqIxFlx
IK70ab59QKOra/KjX+Fb9lurtR8ReHUNz8+K/Ax0U07mj8+3i7FIBTNp1BnTEEIptfWPlw/0e2Tr
pZu6hiHExXrNiKiVUBH2VjziH/o1jXiM1n1z+e9pscm2HWixd42mZ0nIFllT9Tecu3YuLEWAr9z4
ii+8VxUIqGbYUziWqv/tvKP+jJg80PDkATp+c9iwiRXHaMfuQY8g4mkTT+QWMJGcGOSZOxDIdTiW
di92e9N7JiRjSfndYcC0/qrQ04+O8R3BPi5L69+6cYqL9XCvL0EZrPvP6diWDcZhyAx0rx0MLRr/
yVp+PcKtzwdQydOS0MM9j+dAiojHZHnVD35Eg+x9us7n/adCxZeAWJakZ0U79CmTDfsbuJRE2rI4
6GPxwy6egckFFhxCMqTDgtSb3fJkbjtZ5r8tfBYoCq+KzxcaK6JR8l3eARCpJ2Fsr4N5fVBxsUOA
18veDRVTiHILOgT5asuSLmSPBT4MPwSpWfwHgle7zpNG2iO9BcjGRPqRkoBn0oh6BLoRB8PbCBFi
3VP0lmDv3+ZpuV9nm/y5nZLQEkPFE6olnLOlcz8/TScoRDIKZPoxp8mQWYBkaICOrVOAsDLqn8vz
s0WRUIg00VHTT/eXpqz6clB2wVOu0bi1sM12FwsiFps/jSNPkVVlDYwPI4spYY7AjgJHx+fd2Zjs
CBGLz0G3lZGoX56AX7OLQ4altRn7ZTkuxh/dKwusxDxuB5TuUk0YjYGaGuXzivFv8A8+46Ytu0r5
sol+GZyx2AHw+OF4vX0qx1KsJoOXkqLjYdxZ0hmnpXXB+QZDbXD+8y96sBBpeKQrjHz3kgaXBS0Q
h31RqAzMiJ0AVXFxMkKhwKmuT8cXpa6jc11KFDqT2WKjtU40GbZMf9tweFAC7No6NLec3e0Dy00g
tLro1Uida0JAouA9NgGcs8ChcRR3tkyJYjTp8FjjQ3er5AgSsxGe5QKS8ml5vyhBQDt0pg0KxRwd
jIw6arRChZIP2QWV4asN2rCg/aewOixNu2basvrV6hsbwb1e3nyZWPAzabqkIuvWN6oOkm645uwi
KUVCByCnO4QHYEyeS56WHdTUrtKZlhY9h2BZGLPNbbcuOaoKV9RGryjgQfoVZaF+01XdyymlPunu
T/F8cNOU4a8uOAHekMJUvGIcLhC7nkwmh+7GP5gAGsghjOHSfgPPU5SL+EcAJgS0prfL+YXsisAV
wTSZ+qCaFT+5QazWWaWnjWn/+QR/yy63YXbvSgZAD5aL/OlKJ2bER5t/+rPeeGv+dwh+diOXbbrJ
pony8P0sUe2f5v3lbV4CpPtXo5bskSlpUxxqz8kHVo6r5W+WXANLLtG9HUiurcJKCFjRucTvy45K
cZvPEqT8qXgUw+PanI/uVJ6yPN6p1L2pJ7Z106yfghlg6de6+WoqFl3UTBVIFxunceL1jBnUi+Og
7cdChZ20ATG6yz5Zf1eUP2QeVU6ECVLtah3nT1ogCIrL8y4TviVWHfk8fLGAlzb+3YKTfXNAlitn
Ull1qd1j3DpA9YFJbDa/ApWS2xBbSZxm8xv68g6K1UV2jyp5Ve2+SSdXfOrUBxa8ahaJnleu88v9
ZJzrdLCYXnfNhAUEl+U0JoZ8uIXxemHfyKLXpA7dLDkE4TFpOUY4WtESfFnBLMWoDiKuu0F0M69+
xHPuuG7xN+686qM8NR0Owrr5GpuW/Iol9E30oeW1F5sgwbzQB4Mhz+asa2R2Om3BbzXBumK1Xzu+
GJwfZh1i9m3qvxsCsUFaIRRAlhBMwqG2FxpaRglbW2vqPsj8WjNEhJTCpwolfvA11u81gST52iH0
oeFdrEgFYu6rgoklXoDwSawgXIS4VggGxCm3yHaiKF6g+XHCO3GQ2he+MKUfkR6tWL/nj5VPstUG
6djUlP3k0Wf61XPu2Nqn8aXD2jWzrEDtjo76VsatisgBR8XMSoXntHYb0FXsBPcK708wECpLl58H
V7fmtGH2mTRBnVIXWpCBJPsHDJmu3iwj7I89X05GWSDKf1ajsVshK/FXXsBGf1hYXDW7rI/6Im+c
c2EZoWcOWX2x2SJnU7TvHVSvrRWH2iDsNkU+qGhmXMrXxQhfMXI9p3CifDbpujmCifXw3Hvqq8IJ
mHe68VahtD5Nol01j5SCBOTa0l+Kcnc4cxsNtEvXf5R7FLx63/ItRW0HPkKBJLp6MHDxB+YevaSl
cyh6RJZVWF570LdcXks6qo0tiRs4clxSiZrOABHPBaYrJTDtv7WDrNnvp0bIjfE6INP4kr4QroFy
VmtP2vi810kbiIR56YZJCrBEczbr0DkVoMB0ZfPI3pIEa66xhAfVBysMbYH554Rl7MrqCk9MAnva
dgFtNAF83RZcqClVaHQxi1EhG4+s4sLKQSDzsGa+Xd7lmFla526ys9OD60lXyeNPcampbBGmJiH8
geSnHdfMytZC74lczjs3cSbNbyX/vIg4upZ5rKxInz4zQjvwdPH8E0Yu8r8MroeNHFtnKqvbkUAb
KfVdPRS4m3wgC++BD1OiQct4KtUEZVbVDkzHB2lEyUzm6y72tO63GzTDbTNIcDM9c4Y3pabD3yYs
NvPZMfKDkHXTZcE9lwWTRg7a9XVh5s+0hKCYx+f68jPKCpF2JQb6oPklTjf9rvhN0AjF8mHL+WAE
7r+K7j8In1lLJt0agWwhXvrAMahn6CNYC9wN4q1mmduhVdxFXGg7hSpNZGRGF6UNvvZp02vpWH53
PrtpJ/IdzzAyaEmLzprZK9DZq1vfYBvjUviyKFVUyzgw0El6c3jX3Isk46e/xepHcqwWKKHapm88
+zr4pnosKKgeIzBW8B6OP9JMyP0LMhw/LWvPyTnF3lrHQqhcLwPLzdY7arTEHy9hxDmcQJ8RqFUg
jsvIpWxKbeGdCEOqCULkcHRCqlEJnWXjjBLrIuuzXx7m3AOoojdigyjuzHI2VCU0ViWte+pNEIFu
JQCNy+EnQIVGnWoZbrHDWBLLEQT5Igy8rj76hMJcbBBn0YVwM7KSEXiVgYWQYcY+4HE5HCZfb4oE
vJ4TU56lvac2r+EmitUmqvgjTr9TIfZFcJDFfmYHY8Q8si/IOtH6e+EjtP1sxGLQSJqsCsQwAFcP
eUSZlWXmIJDo+dhm9P2FGpgXxf+r2BcV2NleHm4O7JInys525cN20IpzeIwASpNQqXHilkyZa3k+
zT+fLj8Vtz/+XRCjpUYW5RnT4bN3LUuPtkZNaDUijiMCTvsT1hdfcdq9zgG+9iwI3aCLjzFmHMF1
cXEw5b5Fi+sKryYMT2mVmZ0bhGO3JEyoFSNii2buhEvmQc4NJ7gGoRtyBOuG+5dFGUfyvSjHVUej
Ry/X48FKX1iPGImaeR/ctzz4WOt5fqGmXqvsckRqf/IoSEvRne3jH9AMsoqQKOdfR1ZlBDP0E5iz
so9FX1RbxGlQnPJ03Vxpic1sHQ88k9jdm98cEfEjeoOJNZlYpf225m9FOjobcaSPxai4wbrjMpkN
/Aei5zorQb06Jkrd6FOqPULQhl8VbmPm5Trn3PY7h9ZtuV5YVS4Nhf2IoRy3vEY9CsqmWA5y2ON6
f/rMsVdTBB82tiwLbwJfNTHp7XIhnkU2QasGQdsUwuKYK4bpR+5HWDoEy8vwvo/ngmyuXW2LyKM9
yDHliLjKmIozBzu0eLkZhQfvOk+j6qPKLyFSpcWvrKuNHtRK7ihCpokEzOUNumcN94dBiumcd0Po
DsfgqdSytPrL/hxttows1qq0rL0gNGwR1bC0BGiaP2Fz90t6dmfnBtY9ErTZRTJi3KXiXab8HDqs
kgW18PUfDL58HphYbVzZE7Xz9QEZGSEUNrFsKXIYIoLBvfDsnOrbY0NJDuUxzLVAbOUsIE8tcyHh
LV3InYO9p6de+KduWc0h4LlrxqBgPi9NDOdFdYPDYAWEBCJzeKxTV56rwBp3Dkl9bVKd54+g8eG3
3HnPCg5ha+RUulU8hjgzN1+488OxHdLxbxSePet8Gi/scique86cmwT/dZl9ChgyboOts8mc8DCK
V+mDH46mvSUkLbr5LUTBnIW38Y8KzKq2ZHRYtDeX468eUsr+oCs81EbQsjlEmWnR3i3BIayVrGLp
toXHr2UAhAdYvPnNQl29wvPSDCaPg4BVwyXb2Ien/aRtqmMgBsk9xk7BQOXpbq4akgWvII8OxwX2
dtDoiQHBD7cqqjvf9aPm6fVyiBAAc5vjfRGXyNDD841awrXF8RBhUusyCHM8P5+mXNsvra6OnBnd
vQfTydHoPAIHBClbGU1avYHsajqG0vCxU7clZCalqZUoNMGdVRKfMfdtJyBJGLPtizsoAuSNRp4F
zql/PpLS30TMMzRYNa2NETH4Pd0TAd/DjIF00UQZrdR4+zvA3ZxTo8jxS4Ge6QZPWYC9764Dmf4O
uLuARjgtb7un+/Nz6pGjxKg9nowN/9l0q8Xm4Vrw1+PzzYX0zD5vlzRAbcsApMGYWJt0zCM7trxX
2akK8Plg05KMPR0xx+fHANj033H/PVvCVYjeMsLz8opdIE3RdPgc1BQR9KVLDtNSbPhpWmZf4GhB
YTWk4baMIJuC6Wanczs9sDMO2vV+Rlidq5ZlKLp1kJjeIsBU+MWpQEa4LIbllWNszOdGRNKV4F93
Fk8DhB6p66T8xP5W31Iq5J6ltAXDDmn4htKqRayvLvDOcH+ag4A0fMtw1MM7X+CAAM3Bh5UUWt2q
R7uUu3IILYoURCKi6bzkpnPw8xH5zUb3X+f995TyBDIN9w97iUOLma57MLHeXUpVgZxuO8mSrq0C
HC/6X6MLRp3fhimh103pZC0iRapWwL8d3XwF+OsWioSK5bHdOYNA5uWTBWxFWwfTGWSDIEE6PLjd
28U1ueAnCgyEnwASRKCMnUDIxU5VKxQaBpJwvfNWuM2349sMgHknMqqhXMloqdOBZLH6vyCoRitx
BAAFedpXbBNLJ7YKLnzx/fLOuEXgBcTue72cQOQK6nWaY8YoXDrYWHSrrqzTpbHNv0sTYyhqnCji
Y9rmJe7o7BUJjRQYnxkTd7Zx/TSfD8aheTdKw8EsmkOmf7RClg7w+/x5uHwoPRhFu26qludHE3Ji
h7mkgb/wYjgB6puCWbUQ7AjdObbwb38x7ClIpB5Ly1PB1wDoCynHE2gNI7++XgRWESUvxcj/c/xL
x8/NvqCBK4+0Zt5LdA2x/8BqlQ7ArCQLhukbA0DxOODBKG2KU90+3zUMTC6wF2Z3lNw/dFxl+dih
iHaoeVOv0fOK/pd/UOhwNn2lmVBN+uCPM1HSj5uBwGWVgH9vgfubpzZEAc4/YMhG7GRi/+G3HwxF
GkReEQecVTZe4r+wVrkx/xY0KzF/sGTDOhbKpw6dsjeo53QYq/B319V3uLxZT5jCXekUfiFz6NXo
LExqV8D7hBhOFgCrZ0BKjBbJuaIO427ny0iQLiFLHuafGsXWb5uhYN+m69/v8+ziYjfjw2HqBkIB
2SWOfolsopMT+Pf8xx1Hw0QzkWF3mBWhB9IK/ynYmDhwlvayfHfBJ/g7zgACMBbNz+h4jsjIhQ+Q
96H/NSSA5HAnBdi+YfCv0c40RHWCdZgWHYtqMgFo6+6ACdNoVggTw5ZrgXNESw4+W2ttf7/C/ydo
sQy+UMWgRRim+W9e4Q5swC3BZqBTeocFEdSa2HwAa+LQ8BuqEHX/Xdk1jkurCOIVR6/RUN9O1lYY
jXSe9/OyYC216opYcg0PlRPjKnk9EkctvzieMCcTAjZ4+0gKkZvSyPBEk2fNyZGzPgEvgveX52dj
5Wi0et5txSg5z9dpb+cH2Bv3uNTYdZgc1EREeS6fDKwjKBXASNtZdchFQd5Co1nzQWI4p2GafDfr
9JRGsOKdt1YJolT64WH9YLbB7g14B6IbGNewQwYOMDfkpIGxloyXSphNvYP8eoGZHd91z8fS8ICu
kOOyOyYH1DgBH9P1gEPwltv9qgE2lh5lMug+QSvVCRZA9/MMZIFYDvrqCob0xOJdQZSes/UBALMr
jW9FpDzMpm3LrW2kWR79crlf9zPM6yCbgBoI03j2tPc2OEI7AwDonRBSbL6SknVAd+9wlt+Mnrt+
pocfcg9YLcrDlsWcXe7TMTLwyf3q/Pf7BFZP+us2EuhyPwzgmdNtn3bpGh421Xql7r42Bl7213nW
Dyfj3NrtyJj0x9z81pGh7i9i9aaMBExOdaAr9XC7hDFpA+UwleBu7MS3L79UAfGJwevygZOn8/71
ct3CyIzSK3H0JK3lx8t2cgMjOqPZYfHqp7MFRTZ/+7e9illdMrIvLK62cojO6HaFzJJ6OB6ZeUCb
gCyKy33/Sl4h/M1YgFeYokNP8pAbYDn4AZaYpqITslKMxkbS30U92vNJa4MouCg8QIynxZEiM+L2
juWxuEZlcX6Ap7M1yc2D6BcKM0A7ptpnB1jsJFEGprbsAuBvGwyGLAHFC3bmJ67WRlcGmxDkLYOI
N4DaueKK7FL6NRizHQmD/3PXsObirtMLmRT3xDxYGvNhMafK1fhmSiD5oLlIUKf6HIichXxZ1/5Y
64En16RjwnZZg1+WrDilCTo0LVLLVdD4987TqEQXv/CRlzeo1rKVGKrDTBRJ5NTlCqsvHDv7dN25
mTcTmGMpa4Ym0fB5BZXxAtwrBmprS220i/CbD7phP+YnO73TbBlWmytxstfROmotzqq2lXOZcb32
GvgqWf/42kyju15E6shOT1F3NkaP7ARQdPQMjYzGkjAN7YLu029LNFIq7wgtX5s6Z49KO7eSn8Ng
+/FdLQUXyMNolfcJSjO0bQveo3/xWBXp+nEItokmdO01olXD6xPjaHkWCaQLFh3FAWPNPV8KRq8f
3wWu0AYHjwvK3+mGEe3cNTWjJy4m8QTEKTFDG9cIsUTg+Mgm+W3vYGDWExOaRKGxrV9xqS9XU23R
BjF6pbFL4dcnK18hIknlTODEwT9BdFWxoS139361IE7LNnJwadB4K58KZhBvuuJIIUT8zsoNvwSB
cWlfji+Ky4qfZigj3AWw6ubezqCZzAsoiuaffiokWB7SYFQHmTYdaNCUDQBCyj9zJhWvpsO0ep+V
G3+/H1MDae1BVSs17OFWdndjIhsOuhw+tTVVgZCteU4zIrWrg4TtTfMBeb/aiSqvgvwcbwr5ak+F
JYts4L3cbyjnSfP+OC7GecmEEYgE86GMnThWovAYQe9rfORPCa1ON3sWZofDPAg7y9nYiyiR5xRe
tSXmd9hAkKNxRfr+0I/n19mwlhu1qJ09PxMuTOfiUzgqZZynPfCWZdMDdJPQDvZfbdIOgmQlq2uF
ALE9CWm4JhK8Qs/IQeKBKILjd/XIdviUdmZlZL98+MRgxs21MVhshcVIhCYxi5WQcNOT7zAmxVUK
WUxAB3Zru1cJ8jbnRFEZJOYQOQax3CauNwMTI0fEFzOBLVTbLASgdx+OUAaFbjSN7YIx21gmZXkA
K340LmJOBM+gsuOC3i7kjM0wHXXZ4YvJyf5SSNyGo4nCtoBwpHmzPyyEgR1Zpj05fz/AjzF2NLbE
ZX/0c7LN/g9ZR8GWVdRhdEesk8qkrnM6RUo2EFsHmL4vg25gtPTsUF0L5H27XX07y01B/ME79wPR
7MW0vkpm3smf8L3ZaFwpBDvvMcsyp8jiAM0gs7jG06JRcq6+buUYac/Zm7ciI2y8le/Hm50He5re
3jOFVlaXdhFSMH/V8huNNIaxINpDEIaPGP2AAuYHDBQ/39x0QE2yl1UgpYqYc22LX3W/ulw9Jhu2
Nez+tnu7mHf/ySI9XZppnxEb6+GAjJVBVasGFSsHSh8PWSuIBLE+2sReIXODxKhy1gOlR/ISiPfJ
1Vz0mC9X6H3lN/nwb3MzKbuRe9oxBhmUG6LsyS6vCWzrYaXBlJCXfTLsFkncUWqooiq+90WOzMXQ
gUaw5VMXeG+PFo0dpK6RYlkokfdCp418fWWwNUlnET8QWE1WD8O0LnDHl9fZcAROBLa5/Wxcoo48
TXa1Ls/rgGE+nMCbbn3mlU/PYoRR4AXAzKkyamMIpiwj0SxfK2AEQeYYhz5YXCRy9ZXAVTOyYKOJ
wy4cgSOUnTFDCgQHfp6NHrm8a8dX8QqDAZ251LzluGblv0Q5jsOH2t76KClb5kKl4bn2InvozGNc
0BcsyRV5OIcjb6yw3JVzGeikYQjZfIWiePxnehRFpR06y0hKJNdOsezmxZjPELWFhCK0EeTDQMMQ
OOrl436JY32nB2S/LovmHDWjP0MxcSE0+k4nL5pu+UsZWbXTSExbFPZzsY1ppE7NP9rOHbD7sFsm
05XkrSA3NIhc1J/WqbTD0yD8Tf8iNcLOmpNtEBIorTSm8UM7JktyZW2uaoS7FWHrQFCojyoXgY2y
o1+pJqbkSmHvh7nnT41naSw+olDz6DpfGU8KGWqUcFkLlC7/6y9/+fO/wb//Z5LICskqWJRDgjyA
JAK7Cx4KzRzPbq8IFmeP6vV4eD/Kch9x/BjRVipSvQeI4chmlPtdrnswbGCwdaWQ8P5fVbY8g/CB
RKOQ8LxqR7S5ac3Ty/HMZhFMxHybvs87++/VAnweCSalpjcIf8pBi7en3emm1ER19WoamJ1Mdjl8
bl8Qj6EjAGpaENoIW2m03C0hw4ZiUwINN7Ml7nOgOY+jcj5PtwwxX+RFMJu1m8T54+Gc1Yl/DRd5
Sfg/6tW3/QLwV2VwW8v7kvCPfl+fX7n3novXJGoGgcvAUhZCWNAAx+iAuKhOTjenA5J3ph5Py7P6
5MSBh2POXVfTRc9oZQmQBpv0TDAuq4mMELQXBeUJ2dNpeTKdHGjDT+N+3vI4uiiV2OM4XfWD7piU
DDUmH4dOjB8+xJ4rB57phcem3TX16mkMvrMj22TV8POkKbGD55svLGDdqTVqx6uLCyYlu68TYkw/
XO5BCyBLUs9dJdbzAEpZxrh6pbndtQU/BxCG/Zh8pbowFJJMACrHhKr+2vl1yWl58SPKSnruG5Sz
bpLE9PPmkyJfuk1IRf28+dYkmmNS0+v8xLIMa+ptetdJM6+BfirrYSUmg2OPXKTLevFmXSWM64y0
46I9vhWY3NCXgP8GoiFXTB3mcDYKBnYZ/PQ1ompBKxA1KIvBVXg8IlBzFmQX6XhUMNfgnyFURxCR
kNDbhC3WNDOYavYVMjwKtIVwsC9M2iGMgkC/wH9eVWBBakavBx1HX7MKb7QZGKIB5gmJ6iQ7hwEx
yGwxBAHUJdGBkLyv8QKh3zRM3i11fnvSrxfJcM2e7Y52ZHBBrhgAch2Qc6b+zEMiq2crCUsuTBQ2
LBL1nRxoHb3SlKpnyDaCy3p518j62kkH8YEVyv4Y/aLzE+ELXzANRoVtIgrOzvhdMAP9BneVu2df
4SZ8fUqPCU5SJ78XvnIYxEJXhKziX69kGtyosihPETyKpl5dq8dLdwnBLPIMrbNQmcViSH+RWyqm
WeFASXqJLsGOX/lkPg5kZliRJ/BeodvifMnD5vi+IIzL1BYeDuvTWA1oBLg3SLayWRJoh6KhlSx7
sGQa7k8SwTBuqQOTbwGodFdilcxj9YxxgrKQlG18Z+qSfFcXNoDXNggmd2b/ntsbN3N5HD94DVQr
+gVCPTdT+RYMpuTaqe5nMYTeYoTdn6g9AxNnFmnP9hqoNRsUOem5AVzm/LlFxW7FZnNsxprSF+51
KuR9h3rVtJypFpaH5wKl+oZIdX6loE8RtR5N/fPxjWMh/p+89nfNWZk+Km97w43aLPhpwjg71nQp
UE/4vXeN8K2VDs0RUzC0ssOB0SNccmZnRMUe2r7Pt0SmrUBkZ+L4cdU25bNG7iJQDpkntIf2Tirj
O2hke0e2og5MmxGWkozW7n4IbkvipBnppEAS0b2NngUsMmC49jVJ+eNpqiNH/KRBig9OUsiKFKJW
8ysQHg5JOHOkKKF+A1mOugbBtsv1Zfdy+nx/zdXnERXfzyjqX3Fp/vQ3LofjrVTKb3EBDpc3/N9j
HhkjubDN+/m4h52ezXu3dU0/0w1fPbfNcfEfhIL/aJMIsgWImkgWBeKo8YhPoj3SKEGAi9/wNYNg
Mb6Cz2ZQJSGWBxwSqWNLpl8DfblN/d7wgw1v2/iy4Q8qbIWjs0JSB4FoiqDRqeaG193ZLPR63G/p
3Ou5xZBzV+sQvEieg5JYWEdadfFhq2dwLrozWBUcH3s+Y+SY0z+zIow/RlUV+L9WfqgtAm6IxOIB
HB4RkjQqNeORASCZ6zXYumCNdJk+iet+y9qq1dpqZra/zOf7v5m1yMs0f7mzlTzjOPt0b3XDCFYN
lv/YBMkvxm8kuENMV2HhDWb+cG4wYmAjoE8ae30Y2gBE0r6RCwJVONeRErpwthoj+0ZjUfXtC4kg
M41VYkgylYkkQoV/EfIu4Fr/HevMALhL+74KXpSLLi376XpAL5hrBeiBm3+XoFTySkD8+zI9X+zp
nC+ceA8W1495C76eJd9ENvrH//jLf1IzgEMUyJHpRBO1Lx7/L4+mBCM6XOH1zxsUAvvqTxx/SErD
Lxpr/OOKglrAOCvG15z7DRCvp3lZ1j+TLnXzXXCiaGfbTvAPH/vI7UYk6LjjNP07DuPzgqSVRjmu
I2SIyTzd+xkCQrvpBAXznwRrnYpd48/46kKBSpg7Jo8uxaWbudsYv7Yb/BmqjPzSz/juQgnInNuN
4yj/rzO/MjBWkWjU3forOeJlpPA4RzzCsekf8HltCQ14ml9mW9oLGFaZyiISPowYUPgaErT3jtPp
8iJ11QHkpSxvNtIOnP00hgDqrHIFfDMEAPmhIHa7J1mnmakePEF0YIjCD9/u5Ctsz3vEx1GOYmhX
iBG9RXT5PnshDFVkAOU0/5z3UGn5hqXUGck8sCaSaV+Hp2900u16fLqjfjSOQKbcm0iyzpDz3t0y
YVWn4/n76kAVep4NKuRYK9DpRI1fAVAKOw99ZMyCT1sPo9EcV9seNJoUS7/RSai4GUWULJrqqFwI
MHXzzstAbcbW+H3+NO9q6657PsmC3WRt1/iatB37JQajjEKStl5u4yIF9kjPDT4hRYeYtY3iwGvs
OHQOSuZ4gtHaNKfT83oqnkHE+IpbDHCUq3kzEMlhxNdgZLMm65ghg8L5/3M8O7mxxbFFc5mB/7/m
1+LHQ/Ax3eblfYZYF6xk92ykl1nFsnu+//qrQqeXc1jA4sPt3O2kaCh2hINibFelmq4KLAgHNevr
rGw3zuVyk8VXdv4ieEeAenjYpVDJsYSbJwVSuWL10P3qol+X61EZ9dmNPE8RD9AdP6wOl/QCkCXY
liIrxaCb85KZ5NaNDB8H8ajSpg1jq/yZXSdDLiCoU9lmdqw2ryFFnv2I126Fy9P9pamKohrTHzIU
Z89gveZVv1s8ePIX99Md0MKePildgUhTO/xf2eJMai7A2AhkFCHWCwPDdtgPDowGUSYwDHIJmcqn
2uA1DA7oAX7JMBH379LqYv/BtkcKRB5tgGBJwBf0qyDyMHLqQN9j5Bnox9g4yvBZS7lxlBsoEWvq
9I5cWAniTDQQbMLpIP4HCUhfOUH6xdrvBeKJZR3bi6cpp6toGMFEuvOksXy97NKbgbYT7C++XJmf
M8lw+pHC/YhsDw1/w9alXi4wSEqj1Yan38SImcdP9LIr6/3KsPlt401+9f4qf8gFAWBZ+e1QGZI4
I3KYiW2cce185ia0aiksRmUvrsM/hjCOT2cUZCIIkwfVmkK3Y4cK/xhF9OxtejfuLM/zyvRcjn0A
IF+mKSk0fOzAJZJtmUSN5hdJPfdPAh/Co+pKzAjCAiTjPA2xI8YVI35TH8WfIOcpR0uMpBZ4oXFa
Dic0TU0MeK65P3xNzYKC6AvjUaeyDHHBNjuLJb/uM+afSLqJNWN+MVa0GDNiLRrbtAtZHOB++y8U
bAZMmjcBivIYw0SxaG5YFKpQYjxmOYUeePF4vnO+cufQqGHYo9bJhETrAJ7X1fO83wljfLoePsDn
Nj9Cnfd7rU++79fgDX6SeTgHiNKWQS+rtlA0oFs28rkS1k6vtiMIZofZ/yyGEtgzQZmppF6HNQQm
goK5QQzo2+GkME0ZIyFfWQgyabQHij/vazIgpworE7NcZ5gdA17E8Qmx8P2cLQiq325+gstPZVLQ
4GvOxHQb+o3rbBNLAIVtDPO7htU7FJGZTn5gOBG0M6gUMYiUxMBHAQn5ZCcK4/mmehfg+56dFa+m
Htai/DyPs5Ul/fGtYDmeQssXvsneJCSA8VKRg0cHNj+GBTfoBzD12BNX2QCVsGXwO1HC5EcDpWdb
2pg8h2kk2KwgBUGwNxoRQGOkgAPdk8LE/6LRZz9eovLZAb5Y03Oan2mSFNqxtvIR/1kzly15Dlxh
ttkW5D+SR18QjR6CHLKZQbsP+N9ov8IRmAI7pNpNh+Qs2vwh+bgeOI4WOMQYbPiiLUVIvV+Wy9Pf
3Pwo8+/hP99e57ekV2vJc8ZctnrKupqdRBjzlppGs44efO5I5B2oJ8IxKsiSVX0dsrykn1cKYyTP
Fsft0JZUPO6YKrkgamuxo8kw/usNwuiXM5UCEpa+q26CQYmKGeS7yH3PIGqwozs6SOhQinHSGjoK
bneB7FfpYUJdjZAYtHZDa8UNM9ShHSyIFOWhXDUMhdHewSy7GRrwGxhxtwnf8w6VLf57y9DQ8GxU
3NW89EXgxKdPvy44/BtAbT+gaeDv3ab9d+wCxzNfzaZnIQzguFjYolSyjFwL1jMsxld+JUm8LIpV
1U70aYr1kkmkoEHTmgfudsQ/2i+Q3XImvpLPTrVsGY19Ye6i2db4L7WLFXmC1uYJQrjzPb2tAGTb
WFl22Yv32DAMjEopZWvjs60oytdKjDt8G6c7KBvSpPh3N3wRrxX2oZRVDDzPkMCZnU0H7reFoSZX
PEMNHxk7qr6nZuVohE8qMO8tKoZyAq0/gQGT1i4uS/v9Rj2s37DWM5GSRhlTRdu9oMxftA77EvTz
/e0JC/AJeymZUSDa3Gzlw/8WAWb+aVjYxh4sIIyAnbf/FQJ8VOaZru6jMF/jw3zYils1vYSaEZRB
8grq5vVDefQh/wO+CJv7PJ2fTyVdJ8KsoHs1Z0OQx5RrQyVl6yyVMTDsP0og0rfjzx1Sp0pCO7T2
dEtNxcbE2ljxjJRamOMcExYk1+hNyDMK8cEPjCspxjl8hbgPMCk/4AfiBH2e4bFCgSydg3IMgpCr
ZNqyUhsn92PhU3iguFgxj6/lawsXSxgmDqbW/KTCBjzeJsgPR9ggLN3d/U1jCO/9lzXWnRV+lUTV
Ysu84/ujpKZGjiMUQYQ7xvj+Xyh75tXJZq+QnBuy++MFY6wbqPIjkOGo1UmuGFS5aB79hqXVdZHg
yvzS3NgIjHqDgLHRotglL3+/G8fS21wKzSb6LFc0bRDvU6FTrh5NlM7rtPhqBz8oI7vEgrkQAzBV
5AjB3IZY2cZL5qlTsrvj8VZy8teNB9EXB5T4FBRi3UqEOfQ0moTi5pOCkSkQtNDikgZoJqjQDjya
3JdKvV1+PRpSFCS1g1dI9Pgx5dBPsWsTZgG0Rw2Mw0/AxFUwx4W6yAwHePPZhqwWpY1rHHgMRzC4
S+QcyD8yopf2r+yck9JSAPlwq1upoG14ynDWIU2zK5gmeot1BC0VGJRoK4vjCfYyZ2YFGPT1XV6w
WcatUp+13fm2fFob+sBNYniS8V5nCAOSHjPq5pbPyzctI+3bOgM7ttUjZELutxybRO6XzD3GCqFH
REJ8fn4G+xtBjGaIsNrZIdPp/XVCgwwj+UqcVbjBQq490HUBEBsVmhU8GVovB4Jl9ENf7+uHQpBb
lqWCeCAIMkSlw7gJUlfHNgylKLlepaKPBLwtscP18u4gh3B8j/bukBiDDgR1dkdIzwJLf58/P4zr
oT1dDhWDhi6L2iP2hrlIAElWyPhS8iB7jHVtVDFi8bqxIsP7LWKebla6clC5pYppO8fu9m6zd66J
3Dgay2X/fb6JSdarqdb3G46suKbQeclnZBDYpna9nlYJOc8C41A/FgSwihWTF64FfACDBWORssHg
eb7tXzEzkPy4ch/7eh9U/8teutXT9Tp92upeZUO+QhW0YGO1CHS0IWKTHVbydJrOiiddcIoVhRUT
sd9bp9yPxSJ7WCHoc9Mi825HsWJNY0gI2OaSnqVJJPs1TpifUm3P3aJ1b8xNW9hiT9BOZ5htdS9P
AMOG+Ow1MD5VTScYrcuxdQvUCLg73K8cuo7SLhz8AXKLq0FG2LW3EzwTKN2Z7czz4/n58h/n/7xe
XgyF5Z9/EFiAkTbnhSaLQvD2Kf07jefKjmfULvPerPLmAreIk3fdvV9Ox/0nl3majb1oVVS2pbbl
+YT4R2vPXKNKPg78O41yz12/BWOQ6JTfj/v0LDEiy/3WLaL9FhvI3s/L9IzwjRplbpkmAHNhCr+R
nQYZgGWxYWyN1Mjd1y7mm12k9b8x22AM42XJX55oGhc4k/ax/dWyyX/ij1F2lsKC0G9lvN4TIM9i
u4/5A0RTig8HgoiV0tHH3NbE0rxcrHk5SgNmnNMMwdyaev8GOY2bpJcmM3gyFmP5/4rxMqt+aa3D
uWCmpyY3184kRxs5rFc5TxrxLRUhyw0oBXdNJ3M3N2Af1/yg8U7N3O7bKFBW3y67v00/Jtcvcz1Z
VaMRKx0x7Ayr3ZxATBlpeOP288qvxY5F+b9h2/qyugeqAkaQUEwNFHXyfjGNi/eLaFqDLSt5oHU/
b6HWeyZGi26w86MPxu4GL8e2M843MsqPmem5hasBIP5rPMa3uromTauMPFNsnzZqbbKDd21Q2/wf
/asl/TRYyzFQ7xpKOMASAM2QpjewFGGATepuNQY05RvEAM00HW/oiSk6CnOUaebw+nUAUkPl0M0W
86I+Q+zf6fC3+3JLnz1vjkAimsj2xHFt2WcVnL9D819ct6hdGCZBM0zmHwHCLFUJStgs5CdPAVRS
Rugh7Z6ZzuVkEB8Bypb9xs8pAYKM5l8VDuVyAxUJRVDfGTYWMU8RL/hfvR3fsBDmfiYIgPtZR1sv
XPtBYNsF3HV8wx4YACuC1kE765Es0os5S+xaUmZ+FA4sDn9CFNuob75Ks7DnO4TAHOxsJMfCZ4yG
zNc3xOhbmAHT++dXD8xSWW7R370F2cqc7BB5/0yIwZ945+kjbCPan2mdaWTIWbkD//RFFFERImmp
2/WBYdOvGcYJWjdFFhFAN4jf3os54V3ZdVH4FCl50Q4nd4CYWvoC/J4BO6Lp83yniM6BRScO5qwe
+W4PsfLT4pIYrM7TK2RJ0PnxfKEGo1HB9Pj07Y7s03OHs3LFyiNrebPQVmHVtP4mcjPOC9dm5DV2
ZUtSYHSXi296xAzxT9x9il56fgw6tKkMvkAH2MC6CpYeZuqgjM31zumkRlGMLTpeQIfg/xwUJQCP
YwFbhhSXPAcGM2khj96M9tWfrpe3P+Y7/ynsznNwyQMrhKEWELqfD5csNY/mBgE4m+y8n6ErCpJz
bq2WK3Pgek0Ess6WsGCz8vsFR8nZ8S5kh2uobh5/DZW7TdD5NT1frvsZXrVdrTbyguj5uoIWYTZs
fgWh5HPnNETQDdHjweb041mcVY4UAyW2Pv5F1Tn59lPaRx1Bu7MVgoudpwQVuhD1yY1CH4c2cmm0
GWkH5JZUrangc/857/9A/c7SSaTaaAs/49LpG/beOaOMo7hdOGPDSOjj2U52gcjan4+pSGTnEY2p
BN5jaFzut4MdVIel6XZcZG5ZHL7mqLyTFtct4enex9FpjgJSaKCtdShSabjOw7CvkobhQfuGI20m
IC2ii1SQ07h61yuc2wbXoDMOA0QsPh3qCfoN70bMv1yn99e8ZOk8Am0Vzouy63qdp0N2VWWk89aw
Ceqag/ODlBhI59HhV0TsImwdz9VDxuUWVEXYGPjl0/XGIcX72Q27zBLk7EYvBtvg/RPiKvEEVkHe
7ACB7LEPAfZsLR4b410BFq1CgiGCKjH1UqzrixvtfDbWhRWYwwK39sb2i5U01ifURwB2Hroff8Oa
AagVDxcRXTfS9WL7icjBV1KePpUq0ibT/XAE4B9S05h5z8IU1hJT3pX5UhMSWt2Xq8OxgKnAwIsn
rMvOzuch8ozJbtF5VvgYbdEWY2WozacDlqUumPC9Tz7nmFk/Tw4QeWm0XJwZSGYMeNfZO6rWrxGp
FUW5m5JL6EdOeMLVlvZuzQ3gGMbbFZKmYf25bfAhZqXH7Zt8sI1kwj7x1TevE49Ywo8M7ynLYsR2
Rib5cbwC4AslJ1/hUm2J5Sp66AIu0Gt4wbgk+RU0CVKJ6dJhELKam5L7f1d9efxbwn3KBS0b7Uer
Na7ebwsLWmo11/j6wODKWyZxsCjcT6Qav7CKdF+YrDU+349pEX/dHa7TBwwphFx5utqMUnbcPzsg
trhtnjBUKLJPbXsU+zbL/nHMAuEODadiXOusbyjAcmFK8Pp/jGWIqau4F53QkJOtRWsCDc/BBrb0
99zHjuZxs8KWhBqA5X3eGxVr/ryB8n/TCtBLxi6BZ151DKiPZOAvT5efeTrcEUMo/+0jHUo650k1
3OwgBvr89X//yy+uTefPAMqeQY6pyyKCdOcXBGO7jTh5n875BQnIPBTZdUjKdw/lKVUMPkNNJKxY
SPhgXYqb7JjJdNc8PleOPPTdb4FEVG2uBqEQA8iqLtqBLPBPlZlMdl4oIZG5bmHqGzG+E5ok51Wv
+a5UVtZGoMAOs0MRod7g5ARTIsFH5Zs2MgtStleF6TTO8cJKYCEh9HzuHishsbwhf8ZEC5blgalm
pOz1+DMtHJAOD56lKYR2yvjTk20Wma8/UnIZv+fuJpzLY6vvqIzPsqR26QyqRhhVtkPYTnGwih/N
R2UNgoiEZ/Iuv3ljAMGyMy7N4agBDLQVgxN2tR25vJrsBndG/7gzssnC1nrcIkUjjAJF3E3kskoG
83dubtxkPrMpkZTSoqaUwTWlVHXPE6x8WA56OdNf16X/mjr0fSkvyCgufFsUEr4rJqg2QPMG2w+e
7jhM2+Unz5d0BIgIcqORVAiyUsaCqv4doPbS0LRErfDLg/ROZfM7cH/uyF2/0jPkey4pRidqNTdB
CTB2MmZspTzlnm5HY3ymB6XT3fWOGsr32oYksObDzrOkBZbKihq/PxYBjn8Wo16MUXU9PiMrKSsZ
PZUGixHKzCmlR4zTqipmChwCY11A0J0ehgP/Av9mN79h5eGivZt6VdBjp7VcPg7vR9TJ6QG4lsJj
nh91HgT08fvctIaxDKY1VK4cmEsPLR/Au/l/0sKWVVyPWWS7kv3dGJZvdrwLiSiaueCgaVTBhSss
eQRk52EcQmFC3dFLbHXUW9lwEySNEbMTNeyKri9PEy2LMgwfviWmTNIsGWWdkApIysChQ8894YmA
4DQrS2+ublftmfRanuc/YtZnj2GEv0zv/u24XHJ6r0wRgs2uW8UhV4KHg9MtgdSLOimzrPjkJZKf
G3lPkRjl4sTeKt6blXlQJXyjps10GzTREbcnZp3hV8/3E3RvndS2DNpMydD9bqolBpXMQe/mA0wP
PM3T9/S5Mlg/RKccNIRoCkxZI/Q59w73A89SuJ894qzz55LwzsQwZUind9MCzRn42lBMFVbptYjp
GyXP9ZVt/86IhBUp3Ms9y9ToOsgJr0gDVeZpPr/c0nsqecYGTaAb5VOCMvAND6mLni+XGhrDhs7F
+nDYF3Q2ZuQZh+6m7BHiHSYOpo6TH0CctrYzj/M+Z66uGiLTcO/LzIDl1jA5KNtkLiRLq/Sjte+Y
lDI/DoiYAVJOZln+EkWCOHJuXzmv9cuv/V7N5zfIYf8XwB9ShgfiuOC8mL+Yf56XxMQH2r8fJgGG
Yc12D8Mp5iUBjwaR7piHN+YgSCpbT1zrz03kTYQ4UN7fEBWMG9RRnX5DPGWD2j2HiFwgRKYbUU2r
tkLMvGm5dVR5S6I9KsMZEbgAoZ12y/09WQhMBKroBBbf7OFeAr2AtBgVOkXY4xQV2AT7TyfF0piz
KXxO2Ma4ZCatlJVfixi0h62QhFGKDfzJu4rfuzMXqPdKNg3JUT36ukq+Kw40nKZfPy1K+u6+aFp7
iI54QrCM/YRoSsvtevmO/Ud2IAc2Eigk+eFio2bducrd2821BwBaxc7+CwXOsGc4St8kbz3W9bT0
cDBa0vWkaCs72VjLUZSRFrjji3s30SEOCCHc9zx6ScxAM3bh9fL+V0p6AF9MVyMsIB1wOZCwSJO0
YF/jKj5mOeT1jkbZ9Ab9twoRnt0E66rc4K75D/Djf6GwjLHHf+fr8JHJKmUcVO+nTGEK18rR+Zf7
9el+Qp59vx7fjoBV+b/Qn0ovrvWLkwMRV4u7P13nl2QvMC1p9KcvbWh7VLbDRwm40mo6T4TrKJ/n
/6CyFPMOjHeI3UeIRqzsqmE6lXQR/oS3jspCMEBOW1iiNTODGDi+gWipEK342ESjfMC0RHQLseLx
MiMV7Bzhd+EK97YUfBYe1CQx2anl1RUVltErsQS4J0FOoDcWEvSf7ECPTyf2d98hhfY2314vB4Um
58QaPMEitqhJIcDDq6QFbM/FJwsgPf12XMy/ozkXn+9qqm7wySnu4HZViUBCVunsCEnodr3vtY6O
wafO5LgJ385BcLLC1sRg+45hr94YUkPLUvU8RbIUyJ9ssxvtjtuPHmnPjII0CEDTIhtCl5nmiNuv
R46KegGQLeu133ITGZd8YCw9DxPYMzfIHw9cPNtVesRhSxh99P9J4TCevDVg0rOwaVsjoM8+k47/
wLNH3EBE9y/+edukg7rgNFPL5RYHnPNBbeqXwwTD6OBfQDmD5xxXbJHuU+98/gNt8dKOzwxnDx+o
dNDPDEGoCmogM7+bRUdrOh8SC9q4AUvPTpaxZQyvx5fXE1RqaUNzupKpCaT34BAsFKhChFMiBW3+
kYg5SVsOg5kKhZjPkAW49kRm8aUvYE5Be7iCGjAyoQqNcxs7tOUFnrGMBQVZXBwxSp193iyjaafK
b/gcVQAqICdlInrNs1dN3G6kdHYzxGeB6S/XxS6Qvr4CbkJEuWQMaspLNzKbmBDLC10R7/Fs/hFY
Fq7PCl4VL2bw2C4VBlNdobEQBJQJWuFx+J9VSDOUj/f5uV3HNcXcrzzCTHuhbR1JcnoIG1oj/tNu
esKCQ6zY8ENpS8Uuq9meklMJPCtZbEajvs8HtYDGkmOjB4s5bTWnXZ05vsvuPL+/zh+8Os0artn0
lHVClhxhujiOcmBhCrmmZnKI/dilyRkn8aSMVbUE2TGh2ECX3W6tkSt4fQKUw5ELn7fT+trM2sZ7
Oeicl0WV3rAK5UPU2Ib3039tUye8jsvHmfwB7AaC6BvxjjK50d4yb5vnlkbXyGpZWSXP6ZVmir8A
dGZ1PmkbtrYxOFnKJdlghLYhZgsJesSTh4kSBDQ+kmCytBLvxLGRkWEw9bUPynvCySBA0R83qgPC
TNZXya9e4lRzAZibtJzzEit/cDUm4aw57A4e67207TGDSoggCNwbuYtZiYs9e9qpl+z6iDFaG8si
a1T60BSTdYeloJ7RSsXD7NAAkRuNSnFVTjKbSOAm41NDkyUA5e/3xp6juTor2Z55Ch0/BTlb3XMM
y0kYEDWdDGF93jXLYJmyiT73JBaofem8a1nTwms7XObFVpQau5WfX25Ss12p8Lkp66dJYzrMW8K0
swvmdyItTs86yEtZcdl4RqxqLOauM1wuTMccgjVxOksJCeodvSINLJJWK2SprD8RIgdT39Keta3e
dBLzYRuj8ouirFQAp35Hg8v+w+oBaCfBAiUMQ1BfB3hEEByF0PSbhXlEaTcty/Hl/JZRe/wSbN8L
egzX6cMj98oy1+UI/VoiIKutm6064DmH9fkxP72cvkaofXytKPWwAJtfFAk9P1QqGXFqbG2qrZCD
TlEXmNm/gsbB1rTF+MinA5WEEaRW4O1sdXMaMdUGUQwblw0AXG0oRr4/3a7zHDwQSAm8G0pQD7fs
asUJbVt2QoXQ9VrP1hKjdPDxOKsdeINYoU6M+DRdNe1WMb+Q19Z7jnnZkMWgNVfBcFN62BjtRpw7
xRnDr5vYSN8VKzj54K9TocdBAYwsj3GKdGZ2Nst1tumIzFqb8bHCTzg2DtsIdNfsgFo/xUW4OzLP
GqZsuMCNYBVlkkvHk1ykAShEWvoHAb4JWD5wlbXfGv1vUZzZIyxl9/blnxp4W3JsGdn5vprYVnNa
k88cmPcEXlOAO3YATu3pS/BA6Nk/Ybt9uFJVVdKCW09QRp3EPdzPPrf4eEyUQReds2owze6h4DMS
OIMMx8Gg+Eaw755gXzD4HXIBH9pW6tVWbK3D7eQForaqyn9N0O7uIIgB8DRh7Mo5QA7xS7XNN++Y
OSUzgiUm/PzutD+kq/PsGkpm1ILhT8/WP0g+DO1QOj5sjJM2so/IDsxDvKvXmQx96sHE0tfjIgBi
tR9p+Ox89BlBURbDIDineHVgGeHAd1G1wgnzZcwv07u26Z7XA8ZV6ZDneMQqQc2Z97j/bvY+vyhB
0JYjqXSCtSKCVdeZpC6nfGVFjsgiYwaNUr+rf4mNPBTFzEwFcyOPsaG/QDRglw6Lea6hKFcWzwqd
g3Z2uApCce54FNfl7obFGrLHKE1MJ9rOqD7oSJbkMp836c/xa/zbc6ognWi0joZo9cKPT5cFyzum
U6p0kQiUjoBATQwIZDqliErlqZREBaPtAHZDR4qjn+3888Vie2jzeKnZuvAivkHgEWv3/zA+xQUa
0T9xbA81kafJlI1XbTUCp5s/LbA5LgvxQdNDFGkplRdwNcSua4cIgi2mZmMUkobpzNd9+n2PLZNB
uFKxHyg5J+wfByQJO4SHpGxtZGOkoqiPTZcQTVsG9YshreCd0A4HlreECOggAYkUZSSVIZYUvuYr
q+mPRpyT2xAYJ7fr0TZ2aMsqR1bzVD7hkRiIkxZy+ZIgcUSEVWQFOryyA+Dm8/76+Q6yhFl19e92
PyqNT6mswL+hrsKZiUWMOugkyqdS5VcikoIUye5D0dBg3q5xibvH1S2fxuv/qazOv80e64tda/6K
0jIvC82afJ6BFRWChSOIAYDWouKtCeKjmNSDI5sTtzkwRCnxG9X023vWGM6zLchC62W83ak+AgiZ
Y3+3U8OQC5UnULP2Jtdavk/Pczfbyewi4C9Y2KVyYFX0LIMG9I4DUUbjnQsoANAEWe3dgbZAHJBB
ELlcoQZDCXwRCRapDelFIQn1K6OnNHoCNrEm1wDYmUrbjJVZbONQoYU8ZWNs3RQbvCpbFlPtyCkA
GbbxGfnzJXctjZfHAufF7mWev6vWY1WyP1BDLqG26Q37vavOhELL+aCR6VZHKkX42yTmqhzm8ycN
QwNP7E2hWflDrsCKqoKtocaDUp3Pv950jiv90mqgWFftSgNHxfmORsBlDr9smDgkL2rvTtmHBl3l
qrk98lTVBlbalJIZ3aqwxMaFhaCqEZdoo9nkQtj/qqy1Y0YBs69xZbRO/9OKrXPyPB3m9HRCMgS8
y1f3iNDWh3u3gDYnY+YjTr+RyE/TVTsKftjYJR68S7dr5SW0DfMyNliFmtYly2/3hRp2Pn+fgmXF
aQu2dxcH56La7RwsCRSuACrM9wVnl2k0CkejBv3gbK5gFdrnjf9c8q7t2XAjexDR//L8vKMGfoVc
5XeEubaqbXzqz1ySIXbXvu7815CWr9ysB1rFf2R+22Ib4NeI9upmyl8+/mAv6PcK7hCtoPY0Rpp+
45A8j3vtp3v3mYB+f76fTkb/zbPDO3Jd59pUDlpF6S8FCrprmzLwLY/QcmpdOtgdaNn705N+OIMj
iVmj1sHAWfV/PkLf8OnTJXN+QLWP+ZHTEdIG93dN+nn5TiJaWgOMT6GJKGOeVCuDuFoL4nfCODYc
dJuM+T8Zj+t2v06ndJqRFucfLI4tqARy0N74buhAeORx0u8TmEI4jMA1SmgChY0NqAhovaLF4rM/
YBBBxLrRhiGTS9O3LPYg/VTbRrvAP4TwGcg7b45o1ohfZAN9pY0tgrD0JjLL7FzadEaBaA1egkI8
rmtSShg1h6Z6vaqowFhxPctEyVXeXW6vZpsAnoIt51r2HIkWbGpA9Ltu166wvYD5535+z9iA4hJG
D5bER4bU3t7nnL1cWsg+MiY9zh4tKXhlmvleRQ+L9Oq0WBue5Y2yGnbzMYrWqkbU5WkxzrFqllVs
ngBD1LYASNqp2UQbmax+jy0ESloreW1GDZpLrrsXY6yY9YBzQfNKcg+J1TX8tW7k4gB2zbCZN9AQ
LSPLYX670GlvoSAjXNFk1lZaxEsK24CXIi8CHTNCPHajnlFK0X9YMuZoza+gxZBV+SiSc/5HwdF2
rBKsgjCHG8FH2Ka2tmXRLnfg0IKb2SwNQxuCyXj9loM53YMzI82fUnY4fNzb5eVFM1aLkX0kmg0/
xONM1xlKSGY9BGOMD35Ydh7d40Og1g7lmITb2MtuNnSVPg2NNyMs5llTx7wtDByUMQscdoeWiHnw
xLwqPqc1xjlohfVJdciyOP9vlpe5ITJX+btEA6Uqx5VvuXv63C1vRpnsfHGr5n+wjzhiAW7xGJrA
vBNH/LQnMLL0QOAfGc2kR76FX5n3O7CIu1p3XG+XC+1YO7aeX3iDz3wtPTTxUCY1gHAGz5cHk0s7
eC9osUqsrasY21HyUHdW2cOCVzSW8QCyRqAK9PaKAxxvOk83z6MFM9UI0f/R4oSDDLzNbnOQAkNg
emBaLXjGPNVj13LjW4Wcz004lFLdWR2oMz+hpNi3VPLISo35M6G0ohM5AeCzWsbB4DIR0hFylmdV
mZSchS4KqsUtYkHD/fROEH/oLYKzaBSVHhcqOGXe0h+1WCPZfNfL2xH76pfL6Ye2zmpQlB53IG2L
8lukEty1rI3mKH8mn2JEOYdaQXSUVnSsHQEtOSQiKBAdGKLnnn+Y5py9zGntIPL/DuPQmv3qv+3R
D63K2CpwaiC8oSumMGevprRVtasz7oOI8csceo/JgQVWNIoYI7aUd9pTPy7BM9WeJr8jiKDWNs4o
AoBGyOIoQShTXbTIcjcE/le7iisbz3XZEFxm56sRg82tAXV5U/NzxnJiC4zKIyUroChTMwglZxAq
EK6VvTTCofEO/jMW0rmyo0AgoqtqLOP/suV2/8v8x3+h//bL5c+GzP8mh2g6adU24+DXIYYqRQUH
okKR7zg9pQAJrAzhwD33+aalka0rodyLRraP+N3/p/4DNRXBgdtuO2R0+fdvthBq+Qbc/02PcgLs
R8mtOwxH/kAMG3kUIqVCBMqPjefw+W3+eVyUgeB2RiNS4Xq7yL6+IeCKshoul2jTW9INndpPPKTi
Q65GWNOBI86tqBiDFXWpnZ21XTXBauo4jafLy33JHlCxvi4MnV5pOKf5/2J3rpffrO72jWTNN3W2
O9bo1AQE11tYW1tRjYQRVeMb1KojSUP+5WW+foNtICq7QnR0RMsCS4kK19EkV6zyB9EZPB2BCM3J
Hw9nTf/4jWoPvqnPtvY4aHCsmLsZ/zsk6+gYpzzzJP3cb/H6H+mQBM2wsJgRT+0Sa2I2GKzsyr9t
iAYOnb6r2+v1cn95VVbU84rEyN3U9ja80jE6sl4Q3CyAKn7woxgfc73aEi7827fzPeWugb9APFqH
g5LxO/O68f/vjbs3H8w/2seqKXBDsSk8xY7HvCGlTRsDEqUjge3UHvwTUuwWrhn++g1VqGR35Q21
/g3JUlNLyDhuTGdKQcUQoc4RkhiE5/kGU4/5Ocp/ofIsEa396higOyCx5eiIVOMlWU8IhDQh+vyf
5nx++XyfXdOC++dvAOt6pNG63y7GvTZi82a48e0bWDffYBDnfvlWpjmoiXCQpE9cg+AFSRqdp8Ea
UNLwoYxvRraDyLTLQthmaGn8VqWJD56bGEz6yweg0G/94pvo4lP00xRrv2IBOiEoEj5H7hlZpVaH
atN62H+12pP/kYymb8dnON+UjY08VnnFJhqeBaHtzFp5QhBgG9eEwMLARWG4+ZsNN+uLs4i68EBh
9k+ZoTkdDkiSLIV0YSvRLvw7bUm28VA2krjw102qAMScZ0wM5hU84W2lnb4Zj+4+pYV4wxwo8RZ4
MWlDBT5vvcTGaphSfGxtiNwCOpb5UqcRDczKr84kawzAsliwyC4pSdQek27qAKmaSSFMwfB41unT
rdzHcPHjsDqe3Nm0/paDrkJLwI4Gzx6wX0PQlrm64exSvF5djxQUl0SU3MLStATP4R/NakWZ2228
yIfQiI0+8ammf9cLNRwWOiQfTfqXPV9hdK6JXEf6HkpWdqIeP3gs6aV7Wwuu0ybj7adgdGSvj7Wk
bPyMPYiNR9F6toIX0sqj4BxTljf9eTYQFXcl3sGdZCVYneUmLzpypMakNGO2zBLplfXw0aTPxO+H
IpvYmOnDUP8TwRBbOONrktA17L4aDbFUfF1UJHCwRZkTmcKXOOHkwPo3xEPsenzZlzCHvxYQsYTq
LceTiYhYUkWwpuGLIRFLpA3W0/+2mIilVa5p/Q8GRdC9rDnUxlv+B4IiRJT96QLbHQrXYLU5KEJ0
unWI6h8OiqCJ17D/1KDx3fyGsAhR8sbiiMMff1tYhEh5O7mBnElTNF8JixAJ7wDbaUH1bw+MEEG2
s+Ee66r/7YERIliz5yrKML4YGCFSXRDOa74aGKn9SBUZXPmHIiO1H2uCiFaNd3e+EBqp/cQZHwvt
/rHYCD0lH3+GnIOdDfClyAiRYbwu36GTj40IJslJDh+uFAMCN8dZiISPDQrH9ctxFiIVjb39w3GW
Ojk9tqz7JjJe938okmN/wQ+oxWrA7quxHEvFD8sVHXKSijnvb4BycTTqAwwdbUmDH2+MSf42S6zS
iPFs49KP8ZXE7BmRMa2elB8wjcxY/k8Glewv1MEc5vo3xMRUZhoz55onr57PEJxP9Y8FxSzNMjbR
+UthMUuoX+/9Hw+MkXD2khR7eYt/MJ5FNFuZZfxtwTYixBYTG5//eGCMaDfBxrvfHhizD9WzT9DK
8tXgmCXWMi82+Mfm8BgR4BHrAaTT5hBZSf2fLMlAztZB5OG3BMns4hpm5prLyr8aJrPEvNCpK5yP
V24MlNmT9voDhxY4wIdtwTK7An/z2JJejfUXw2X2sP1KaiiWqof2qwEzuxwvcyDM0bW/NWRmqbUr
Fqi3B83sCXd8QQMWu24JnNlf92IPBx6U5fi14JldAfMbGNd1tTmAZm/Gn2gN5UJ1N24ModlNjMxi
jxG4XBjN0hCHSF09/0ggzdJk1oc4Xdn2Xw6m2fNpmOMgTBiEvTeE0+wt8UNuUSr8toCaJebPvGrw
j+7LQTVLiBUvtQOO28Nq9nT8vjoMokK1gYis7WwXWtA2samVtRh9MWIHnntnbZaP+en78bZbwV8c
lNZFW1Xoy9A6yAB0XRGWobl2uWy3tKicBQ/IjfaMdUtrzSZcrAmi0WE3BX3OOCUnXzRelQP3cFR+
3myqzWp3e/X4i1rVONPsUT4O62perYRX9DhTMMJmoLBUl+YdYoun692CMkKLJa801YBlM7DP3pUc
NyFyhjl+3G67274oB7Pb48uZBolh+4KKug60O/YhITVgOYQoI+a6McFsN0uaRuHNQ54z46ns77Md
V2OBsdWtdlyHJvMLRArQQ59O0PlzOOy1wNzgzcyB5tlX0QOrCwLHWQA7EEv6zzuNbtd4E1NY/2uq
RbV7ShX7AhGu5hEZMD4rX2q8Q+DB4+Lh9cnKPilRlJ4vYsTojrwIOH7qmFbWVgVrG+J8Vu6eTtP5
O7KYQoyNfZFes91DSHILbzXM+33LHeD2vJYFz0xFG8GTafnm4Pxdi3/IVwpDcSCuw+xt10gCb/BS
EE/MAms9fe7O8wdtU3k3ntnJkKqLkBcWGDyyaOvqR7Euwhgvk/xEr3B/z8qbvmB5U/NUd6bpIWIF
9ayoabuSmatD00uQtbpEX1nH5a52kK8kQVNccebubXp7Ty9kFEkFAZnNTKnfWyt50k9YfZlvf7jP
v1v+9Ze//PkP+vk2/iBAyzdlXIy0u9d5guZyKKdPalZ8aP6+MB/tovwv2ClCFP283Z3kDPhf7Hxm
Roll+9JUjPrZYvjbzZHQTBEiwNU6JJiaNQkYapj+vi05+QAIHcXDEmgOt0KB0xcjd5Py97neKdqG
r4IdsUnngQrodAW8gFZScI6hxrlgEmggIzJavmoMybXyaRIEGcTys7As+Ax6Hm4hJrzGRMdynhDC
HCU+4RbNSpi8b9ioQI4cV0Ibpykh/jaZoIrgFipt4I7FR1IKCf9ccSpM00lrIANWVNuDFjnIMa4U
ax6rnH6oPd8eCESi5PQyiB4jQnZ6Tqhpk6ux7cbUF43MkBH0o98ZWg6y/SonArkcXo6NWJ9K1cKM
PLyl6/f7u2KGekUGqqHrg13tnqazogRH1isSVI++/n5UP2UN3OAf/Yq7oLEWNLHCHWyxEsR83Cqs
CnxSiEyCVrpyFv71YIPmWqG/3W9pQCnUsx0rSewkeJAR6LFBN9QmMeGvhlT32u7xVnlOd7Ongahv
hWRdqH8ATOw9Im4fbyf1yDkLB05LE3gt4sgr47QZWkfNSOUcvmhAEBaY+YOMOkXa8avuBsQ4GeKv
oWjMO3gxeyTFrpjhY5BmTHDUCLYOCJzdx+vxRgggiiHt+RQ08NjGpVi/2W/0jw5jIE18icPufvbe
fFYINCxoaYCa4DWwD8gZmsx9aPzfNf4+ENJGvp+J8OH1F90wS8gW5JhevN4USd37E++akqM5Dy95
5yYpK0/aC307OGt8dKZgysIZYk04b0Bh+cZzV4+WaJOQ3T17DAoxFr4QrC/XKmSLk9ey9BflrQ/r
aTbY9l3Nyr716eP1StQttcw/oiZaiATquHYhPTfYUXEeK6EhsCelir++ogavMeNVc3vSg3YQkY3K
WFYvMCQcMVs0du+Y3YVl/CAYCggYWnmjGDjCWvPcwOEH4Xwk7X3aJEv4YbUmuoJ5/q7afAO7WKBO
m7qLL8VNgbtcc+qL+zWh0jy0IRfb6AwYslfzJpWHzP1uBEzRpSzj06TatCyjcLB7oLhchDEHSYwH
xaoGqrpI1H3Uezsvz0JHUwIVXNu/QDDUzqT0TuUvSlgJKlG5aHj0Jqt5jb+4T9NfcoU3hYztkDz/
JX6UtvFAoLRcButDWmC4pL/gZp3Sd49l/AT4jOuHuRWXTPr0N774WUQSTtPTnC4L7rtgdW7K+Pnl
Pr0oP+SLiV3LGCbeZ2U7vqQa61QkPqq2o6GI1MYDrIhqRsHv+ZppMO9aW7gFLIcXLVlOdRqBa/xm
BZz5TWW0voy0O+WsY/gpv2oQVM244QK7Qb4GW6BhjPH0g4f1+WN1kefgGfz5aMe506je9O1wTfjg
H8PlbLhUP56B6+u5lOZyJnbIfNquTzZYueGlzYuvItdKYbfff/5bWgIM3HICqSIP2f9gYHS7H5ej
akMXkSrFIH4JaEwWkOx4NuoX+FdxiXrOJ+DVhp4aTNFwgC/PR83kLUR3+kh/9mudOeNAgfnnUQvc
DBxJBIFr/pSbtOmqjEppucKR5nlV66UQUMTlnFnNwHFoohSSculLPYBJlBolQwV5YzBJMtXeYqLE
iOAV4VpOM0PuGxZQ/JxWjn7FP+RdneaXaf85vR/tmCTvGKd1Fnrp7PQTMk8Xt+M6myN0Hp5mRXWi
3JWNg3UcgadAb4glDEmCoWOFE1/S0KXIq5yrkpgxD0Y1u8mvl7vidFdhci/u0ZYNnV8mIJ92QoSN
Xto978Fs/FSkjmcXgcICzgxBAaHcyYTr2CvCOe/lkMjsjT5IpTBFLW3zZhUxsdN53r8aMu5GzqmA
WhzifkhR7u6350Ex0/07wPh4kzKvvSupxZlYPEMerAmiHM7ksiOP5rNWdT963hpAVA9rkSg4H1/9
O1U+KswvYhQFlnL5WLJwsjbFS1qODFWQOK+GPu5/1/kobr8lsdXR2g4QnHs+zlfNn2Q3rvPl5ry/
8wwjZX5sSvp1nHYvyQrwpMzC1BgHw8jY2qM+jCpsiTRz0EWY7bH7f71cj79CflWLLPljgbcyxM+5
KkGj6ZHmlkOyvhadH4sr66X4ouqxty1Hia1XGr/8wUvj8wUFsnb7UUnDLL6RvZtkvYVYV08MdTF8
qSyoSoo+9P9h1MC8vM6zFtrg19YQvpgsMrK6dD7//T7f3fioTBaHw6aYlmmDdVE9nG48dIV4ZrCx
Lp7jKoqdDmrVMTIWAR6vcwW2SW9B80E1PQp+cy3COseDlGW7zZKpwjBHuxYkl9urHYtLL1GRIxx/
g1R0XayzphbDflogGYep5UzJE/MnVoJWUjQdteQVx5K4x2VddAV/S0/dw9+vmCEH/OPRreG4eTbL
061i+OUjtb/fj/vvSh1Tx9hfYK0Mo0yQ+3EhGJy63t/1OsGmZeDVAtsj5HPD5wWCDUKl2gyxsl+V
BlrWnp52z5f9fXEzioNnrBFseOQWzQq3Q66xDHLxyPo76njRCLWrIs/6sarSVpBp5ZSMeUtgEYUd
D87Zm+ttedfWwUD/gH7ZP3yv1Z7R7BBffokbqVbIjRloyrFgCHjsMC1yaIXw78zDVweSk//KqNOs
u1PwxA5eO7PcilFZwYBrA3BFnl3zOh0uH1yckhEnhGjKkNHUZSun1BFDiGl6lkOW2SgcY8Lm7OKe
xwzjxHMsyXigj3MUjXPyPB1TZXU9BSk8oZZadh4IAZgkuILzbdFqfIicX9eIgbZHcji9DqPremgc
t0kJ66IOEAgDcnBYNPxVOSy/R/QF+0cqy+39XbnVnseMFxYlo0sfuRvDhglFDw4KXanKuQ2OuMjw
r9hjhhjHbYJZppmV+lMjp6lvI+QmnC/+cb1gmaui6Ihk4S+i73k0bUBS9hOQD3X7cPLv6f78nBLv
+AOl/wEETGyayA8o4osWOXpe5uhkQCFb4khr6XmzI89HDSjBRV+ed0q3IjFwL5mmbWKsh+3jxhA/
HRZCzmfDRdlrywwzYi5rHB6JP0/LLYn2TQv0jCdSjwENG014x7l7xOF0m4pYsWCm2lW8GXMRx2zS
P+YZpPQUZRVa5HoVGkOwqipzrRv2WbQ58fl4fMr6GhZ32EIUuVKaNPAyvSu80chFxYRJcI+KVPIi
T2jdkMHuhxdgs2TRJp2Sf5hB3Da9JBt4pX/1Ybz6xJye3kXbMyrscJBiSCHFFyAh1B6lkGGUdL06
XQJLdK7KSHKGsTCNlZksoCfuaPkUV6jN7k25CRcWAuH4K3ZWO12kvS6vMnBwYURFbmiBo7v2gpwS
nglNlhxoQIfnH7toggjNiPuV9kallrmXVfDFcmZ4RZA60Wl96pv3sk3068R42dify+d573StXWkS
m5s40D8V0ZAfXsTpsqjL82cnqlNXYjIZXiZm4OdK8LsRtbXyBP9+N9yWCEsgzdqzhUizK6I3k8qg
nbJ44oxxQDNZEk/7DMVbI4Zd+4IwKrv45Q9FMcSBDggXjBLK6C3X8AetBT4rquRnmHqiz2wpSus/
G+r0r9nydQzUYw374D/rlc8a/kzGUPHXWuXXKvdZieNmysKiqcGHVZP+sOj4QxwNUdgSGTyWVjmW
gT8cCCyRd9gpS639Uuui5aF08FmrHExV+9sDqT1YdwqX2SjL7PnSB/zDf1Yrx1I2/hqoG4M/Gyrl
9kb/GQhrNzoFf21Ufm3kvQFnVsyZVa/cXc8shm+WObMblAtoeW9duLe+U/bmL6CG06lL8Q4K5TNx
AZDSEXxZanxZ8yKhRK7gz2plbyW/cciKDwN/1ioXUPEiwTkeRr6AQfm1tuU30GLdVStkivJ7Bb9y
itryG6iVCy97/j0LyMZ31yqiryr5WCBSKJ5qrTzVsuXPIIEy8mn2yrE04liw1r/o+B0MyqW3JbOY
6DlHXlGWWTT8e/ZPPs9OOc+64d/rw98blM9a8XsNQXzytTfK/ipx7dhxwMfSKZ/V5erl8e6KWhF9
XrTXVc3oD8gryu1V/rOqwz/EWSrioRbiAcoMhOgbFYnZetFXg+qrbZoHP1OkStsrL69XeKWpksus
Fe1T8u6Kkgfp4mfK7krxa6LlBhlMEQ+tUMptvd6d8ns1KxKobhkGvrtREQ8t6/ISlmz+5N+rlUsv
O1ZcIG4rvr1OWWbFl05l+kIcKZdeFvwZlk2LQ1Gea9OsPmPLoVMuoebnA2ENN24ez1LhlK5IypRe
eeMNv3E5qRnfeKe8cb5wKHUYejYXe+Uk6z4UtBUfSavJL3+SA9zbUPDeWu26/SsYwNIZxK8VpbI3
KWYZ4wCtIkV+FcPKvuQj6ZR7q8W9jQynhLpH2Vvh91bhmPJGnKQihirWrCBvh4oXWWoWH38GdcdD
z+97UJ5pW/NJ9vQn/96oXHgnNA9iTPHv9Yo8qf0VVGA3VMJuKJXPijJphVWaMSWkyRC+71r5tbJM
CqFOM6V4b7LpH49EWWQjRTr9GQxOp1Hix7ObJ+mnOG7LkxU8Trsa8A+ZJ3OgM7vVHE37Y1o+VwzB
BAYYw/HVtuj2zDS16eE+lYeddbKL1paFfrweT35W/O31/va025+O++/6WFTOELc4O0OOsuOJ0Vsm
dLYiRwxTmdtV+9h5eb5c37QcaMWTwy0ybhsfuX64Ti+ZFKU5MZH8xlBnGczKtSOYp9P766Ttiqfs
gVFQBsMoafgmRvuyI6s9ulGPuyzq+EjULaNQudoAXm8bTPHExbxPyw2jTdmJdiWP161Qm1V1kHoW
s2gjzwsKLrOZ7ZLnZ7aE8ilHPLsEBE7cfZ4/dtP15Z6raxCDrBGm8LEYgQAKznjNh+NBH9Xd+7tp
wMsOs4lPpwu8ISi6p2Y8FV6rHAee9SmRBde4WsDBfgD0Mt/4P7mCOC37LiZZjgyFmC5DwEx0dmYi
DxvnAKY2khj4QLt3MROWkMxJaOFwzePTEcKpNtbL0vAV3uTVbOPycdbkYeORsLBKtY+NMoV5qGrN
Bd8V2kvl2K1fkss3aNvky6BarTEcV0v1QxDIx5QPfP8207NBSBt9oHlZRuVGvuJkA75ZUXXyxms5
D/Y9w+hVyaqjR4PMMow/fUoGZN9LX3LRkygydkqSpnLuEDlXy0XbxzcG1T1FuCICTTFGwXXepxvP
aVXNasx67oU5gbPt3MXoVY+PvmJeZBZo3kbWoSKyVyPM9EnDg6CMBUpyWvrlfPrcrccop+vwadJt
mSxLwmOwU7E3zuAtG3+uYGgNjQQmB9HiMkBQi2QLk7SJvvVqt2NM1gYCR5OqfOdU79hF7kU7e/E9
CIJaStDFvPUTtv8cD/nRwDxOOxiBTKQsUiMc/0J1oJpJxboNVEVjVcWZ+qKWG41h/3rNY8FTmht4
dc0otTCqhy+yBlc/9pj+aaOK0+gL1ZTnIdd2CtUYEyf7aZkRyeYMZb0/1PHEHVvIFZrJq5JBYxfh
pWYBLgevKESGlqvwUMFqIqnTRJIfrU3lZ1Sq9EPHyqzY9usxJ96HKl+TDEbvMZAlGJFOcFvLGOuC
s3xelIxFin8kDH4Jc6qZ/P6EEa+nHeuYZIUzsn4h1XD5Yn9txDmrSsr79I9GZ67+tWdfokcgvaGr
kjyeL8HkFcFbrJpyLZupA5LAyTWZzDqjxRKTIKEOopMa5ZBBwUjTpEKZtMztapAxsmuq+2AoeLu2
yw6X+5NulfXRSl3LCuRs/WLs73TDGMl0z1E9mgShR+rESXrmJ7GlfykC1eGBx3PTtujS+cGAOdgV
obNmVgOF3VlR1Iry3RHnmDxyc8b867lYHVGt2jKUZ64q9D1vAbIBDSH4OiiMdI6BdrzNygCXT5Ps
MhjghN4q6jxNIHEkiGa71OnL0q7J3zhiAjaB0rga7r8uVLrhq3w0VvZr6okdy1ADafXq/tOyxll+
MZOGnS8Ugsb5vpOp6P/9YV7216P9B2gIzeBnkcSsVkG1ijEuCA1Fu9SeQ0FcXimjLmQRLwC8/HZB
GzkfOimLmm0M4Jo2DemszaSz1fV+gw24T00QXnqs2Qf2y8YMS9EGADKwsgUlZMC/vc8vG4Cry7EV
oNwd/rHWDUTwq9Z7sbrSJqa+fFiDpJnzBLOxqKIs2NTC6Z9tPz5G7A7XCR1nI1ze75rsZtelxgLF
OnBeUESSsaQq7bbhRRVoBP63RGF3ttYuZ2wJKSVTW2xHPp0uT5r16BkDu1SjPiMH6Jy7p6k2Pu26
RdT6IGLrakGNatvhKBxNXbPbiSe91nDHMwIy2LYIFxhAZZWzEY14ZwMc01OQs6A2ph+G1rI7vkGD
NLnLMmKntREJ0wn/aP/7AVk/q0SLkW0dHupsa+vup5MRmfMMhpN5VGdo+sv5agVDw3cYKTV/yjg/
9I2eXTH9fH5JQ3iR5873iz1yG8DrQU5pHto6Ft7H+UVjlDpglLXJCh1ggP6x7EpNDPE60D0zf9JK
nCtGl3C/nrJJAm5Jw2LULp330b2hovTPG6y9QEWfLpd37VTZLWwqnP8c1HmulmGejbk8TdCUHDsA
gVW1Zdzy1UTDuLIyJQkf/beR/92TsfIChkedor2/VvSldYgIQ1BIBPzyE8yQm+PPJesIsa9gjZxm
HYlg71htlyvbqIcdaB+zR6PT/nO6ARCipnzE6AgxNXLlOHzMT1o4c6zYPfZDeVYyHzIJmhXWrCx9
CZ7oQz7Cu8tbPuXIkf1gBgy/42xcqmxLDh9hq3u3UoeqX1aOYgWij8RKcJH1zXIPm8g1wlU1EVcI
b03zhTgfRXUM5eNNgdeAw8V2V93FY8+1x3MOrh3anXbJfidr5Io24obbiMMon76IkjuHe7SZi/ZR
iMAt7U/zpL91dn4bWE0zyPP1YsPIDXI5smHWkltPbdwpy9FutsXbXbeau44TlT0nKmFEyfKn6+Xt
vyDQT0HpP5Bw0qQS81XZct0hM7gGVUe6kiOsZcnj3AQeK7pqy3zKpDOqcvRn1qO6CZKSIsP5cTT3
YfwrkOHzokUjOdgtpjauRBNeCbU08no1WcX2DwJ0d8PqyDSIV9onT/9p0IEo40ZZ1hRjUwcHCjeN
vL1peQdOQMdd03Ii792t897W//gNZ29kJws/vAxrL7h2fu3W2CbsHkPQPin9NF0115wHSHX4R7WK
zukVByLhR0WkUrT8uJzub2o+Q6R8Gsz7SLv2AiFGxErQXGwhrUcGR4kNmto4Ukv4xZKi5RZqlcrF
wgvWiBiFKm1rh5E27zcak5QzZgXcQ499YFJgcPGC6xHOr6gPX1PgdJ4vW2IknKHr8d776tHT0sWy
0SD8qEv8I1XvoTFdK8sFbCjKlk9NN/QVtHAKu6A4jDqIJCRT/L46ZkuaX8iKCgtlhOACm/+a0TYi
MoPwWmO8jguwRLbUcnXsieJEkGYdP9oYx2/YR6Z2FNsWN9nZs77oZTrPJ5pudDqaB3PYpcabUHUr
12T6dlslHgIIkHAJrAE050cUJCCab1+PD2mM4xtezW0+qdw/RCtgVqvcVBtXiOQROCeumM0XJXqI
6XzAXWCgMOpuNDNSaefEZiahQw+bgoEfEGh4hc5gfdIdS0McYWX+bDfGro1KhcZg/TTZ/cAJ4IF+
z6Yt2fgpEYSo7hM54azBMojyu5bDvVY+Gk2Ul7EFFzpa3AAyep6ul+/mqJGUZvSOkbji2k2dfpAx
p/mqXKhU+4IsuH0b0DmDo7CooxuHZGyIzAJX3Kq7vBXnyLDpuw0MjGcY6g0lIfer64TWfA2RmkJY
33Z10QpUGd1vz6cLiSDnzNF+jJ1lBSm+iowirMRqOpxH2W71fPId/ZYZeLmEnZpIf93PKAa1DBgn
R8A7Dt0+DBFwlerleXfLWLys3pqOG3utLIAq593h6bT/Dn8BBPXDlCkT6TgsArFrV/H9mGDy6I9b
sksVGxkNe+4WruvnDapNnI2gj+MgEch2KjjR1Rja2eiAWHs1cxsl5+Isel+d4xx891mHmeUgtdEX
K+mVrSIsRvHo3QB0O472hT7Bv+2eLj+1erASW+Qp8oFASpSrse7f9NODy4Hf/vOGE+teTvafTsYX
g6X+oFxdGvfd/krtfgUMEFszivQqAbFpae8uTzDFUCPX+kWPDCQznT/9YtMfV+TYlzjEBzPNLhZX
/lPxT5WzscC4mM4WkouQrKnr3xwsCYWd0cfmtyzMdfwHaVQ5/eAYQO8bMn5A02ZCgyOEPWaVLf0x
pIgCEXi/oHmt0KFBVkhHtoV6OvmV0HRa9Pg7j+ex/l6DbLRkCkdGDCt6IPPrfDUuw7KkpiJYWqWj
VQJZ53DED2dH6GAqvdrTgyBL2Vt7GdjrfrWTN/aXd5yfazNqNs9v/6mKP2JIZTqnHCsVA1zlJC2S
gfRP6H9dX57aBO4B/UTpf0ICrMIPnN/vN6qrTBdSEA3i3aoOx3DREdDQtP39ad69TQlcOqLS8Gab
UYCGbtpsfp+9oy4Kn9waXw+7w/tR+br2O5TA1JmV2cyGWdrUtolGeLu40h/gWGBHk7U1DWOaX0Gy
Gpt07vNAPLvdnd8vN8Vctafvl1Ci21E6v8NRMU9j2r9i8AbF3k27SwrSViFmi6O0vwCozU3bUe1v
CxNGrt78zSgTmKnLr0k7FT5UMfpu89PRrquLUF69ckMwf0xk2CBTYkVe+HD84ja9Hn/iCIDv+RtL
DGaQZklT0B55FTnyr0maLJu3zOaAMk4a+fhutrZ7ftK4s/D8gJV+5Rfen7Yev+UG+8gaP7HcU0bz
QxN9zAo8mmezyJqMk9xoCxz8tiufpwyp389H4LPd0/EMmMy7p/uLtuWqjQpZI2dejOELpD3DaNfR
eHFY+iRFbtfT9WpMX4vS9uM4f2g/4Df+gJAPT+P+TgNSt7wLliRinNDX2Dp3S01KheZ+QruoIuB4
PuKNpkPtpZ+AZTPX/H78OZ+W2+U6a/quaAPG+7K+y51YwYIAQyvjGBoNmP7UdtdFdrc+nd0T9NJd
1fdQF3FC3nTRWMvfu+3UCJnUekZPqckCdgHMPIzaJuQP8oqNemXUUjXEWd0bAdpeWPqDI1s12960
LbzNGV8Vq2Lq4Blj2yR9ib+UrHay9Pyjtimd0MCwijer8YaIOorc3q7SiIT2c7gQo9tU2eSZT06a
2XLk2tl4hurA0u36OlgSBsUp7WFlAUM+zhqjNh1zu5znsI0/cqZB5Y+xhXfQbpSiLHJ0BizYQxkR
L29s2y+q6pxt438Bc7fNF48nIzArtlQ8xjEanbh/8jLpKNI8j7EAAnwovf9rmwvoW/Sh00IPCfSO
QIfjvmmbnOzL/H5Xu8/Nw8EojZV4tvjYWgfLDYdmbdvS6EgidH2MXGZNhSfAva1gn0A1uLGvqJ7E
WFrv+lwrItZ4Yp0H0g9XQ85mbleDPyhs+KnCV2ytvcUsbzJEsYF8y+oqf/1Y32kR1zB2b1f3WymX
TFnAOVii4LbNVxj1o2+69URwqglkqCQZiMdQnUmGjr+EsqDxo6NF6LTWsg/S2X822uJ6/Nk8/0hP
tRh5YFnvYxzn+8nTwPSYPnZbDpLyyfIvfN7zRL0Og5TOqPNOwOVyUr4vg8Hk4c8T0uxVeW1Eww9Q
AWpjSMNVeOMsPmU0EI+7KxtEEmvadr0V9BY0GjxesEdJ0ltJAr1Rl2dzFPfzYQnJ2Y5lhShPQMb5
YebPgRf2/Xz5ODuKChEefNSQJ45jRY9vx5vnu7fj2QYuFfvAdiujaix8eAC+nn7unCQ4HN8o/aES
qgLlxISOZ0dI/bwJYme1/Ny9KO1z70wQzKMNkRoT70C3TKOI4Z/ttRuTZAed6ylYd4xSCTw6eE6l
Kz5Zu5lKeQ/R8WBZOPdMUjGbu+GD0JbhSyYQQMjqH1CH+OPJ50QfC1DKEafurD7Prd2jkQmjLDiB
HAHGm6rJ/aC7Xeh//mzUH5YBWMZdTjv3r/D2n40frmyP4Rdt15+Lako6hkaixAhpCGgriw4bowGV
7QoNRsAdWp6vGdLYX5RbZqBfO2dpjFCYlkRCCkkwTmrQPxCSOIPrckqpWjpUsRmRYl1djhERucsp
+XIQFKqJ0DkcIe27V5bDoHGExlbGtvV2OexejMuRcutoQeKmK8yuxCgd8xsTUMKY3y0SdPIr6lZ4
vzFK+/l4Uo5HIG43CAiQuK38YqoodvdqMSejx/O0GPzQYuHFNra8XS631+U2v+dOnFGYMRdU1TFy
Rqaddz8/lQciAPpq7oIMqVznZyjLVtZSbJAX05Py1hlguIJyaYc1mzyc7Gkz1qeyMbq5zEFX6zcb
eSLKOvrVxvrIOpQ53sSGfL6gdqsh9t43nku3wvzuU6Ry/NdG0YFXOmLaQ6nux3Q9KAcsjmhMaaxJ
VRUMP4sRufhjOFy0W2YKNA66jZ2LpmsYUBjRMitv8q2Fck6UMiSr7LZar+RFW0q5gjCNS+PzBgHI
zwjcY4ensXpG18ui6XGGby2x4rVJSCrlfscVTLrN+Vsf94AffcPE0TcqHv0nKC5QDOR2jAQiicAP
wGyDzvYMia6JkLCL8IIhtwwfDxWGsKNxnE+HLAEflhUTab9yEF0dCYh+++JJcFC191OHv3YQXRVJ
6HzhHLoyyMXa2IPbgHcCn6+X881IpVRbhyU2Brk277tBodveWM4H7Vt/oyI2BkkgKHDJfdwXHJL1
NQ/4UJ7uxxOMpVOdPq4naHvbSIjN5TbOEHEorCdaHU4XdVNc7YBt60VMDHhau6ejlgO2ICBIjZog
Ko3a+/XyN41Yv3bYKcO9UFU+1Nm5CVW+G/4674/gv//Tc6r6lkqNuiYoELOt+oLi/vL2hsWkB5yo
O51gGJw27d7S5ZIonN5gRbykbEussm+YbC5ffybYRlI7/pj3tWvfx1BRbutjkSE5/4QJTEfgyRtg
kGUX2ftNi4cR2TK60tkd90GBWv1A7IsbNm5G6yiiDBujZ9h87Qz9jsUkS+RyW0f3dDV+3qtCofEU
wFgbH9nkkaUzB9f5bYrIO1G0OI1GZgK0xaKcVTkEG+sellW1PfSEQoTA/CueXJ87sdbvVwTNgks4
3750BQPzCXRhDg8E/36/QLideq5y9+mJCYVvibmg5/u0h57BPMaYveDOS4IB65Dd5ITwNDtxmubK
U/2elqa/HZEvkvRgm4bMu3E5MjvumVu4M1aSAqRjrO/VY5L0wvzlYpC1yexzO9c0vo4XVUD5KKsI
OIuwUn9oZ9d7sYf2WBmR+Czrl/3lPWlI0GurM+dHcUMapGYE/YJ10tPxjNgy6XC8fS3+diw+5BAT
gw3JQvybWL12UcznXGu3jpkd9KJffyWIjfrI0y+ny5M5QmegsQAzfsnyNt1UsThUUohZvXyari8z
ApRgtePxpL4RpgAtHQ6cKVwhWB7Ujk7JqpxsHepIPXnw8Diisr9ft1ggvZcPOL3wkR/PlChELwji
9wftVkbPMCMqJ/Pn4yu8n0nCINSIOQJI38Dk18+3p8spq0WrCOtI6svx7WhuapUkOk9vsyo6/LOE
Mx4eF/0MK8w+x97bcyIbRy9vdzYCG14dbP8K0cHj2/1NWVLF5gz7COubmZb98bhRuTTBTRcxVQ+9
h9iAaIGoKHmZM2KZhVqfHo9x5SaJ1qdNTYfzfFx2+IDpNLNqoWQphnMHbZ53dS3zz/08H5YtF8Mi
vPFVuWnjJKtOW09PFAxnVIJvtdLupco8begeJkMxaw2PAS/GrGGUNruyKLIvmC+YAwqhXERIq5zh
xbfQ+ZCAJLPZCRu7iHZfZ/BtCHVHKV+NO6qIguenCg4dtoFnTrypM6+fIijSiMndYRWYvnW4sOx6
WLLxYPDQ0Hg63q7GtDcm9GH+CY88Z4v7LYr675AR9pfTJbuxfsy8R3Csqq9Z9Z5kV/sabUHSYrVu
4a/aop2hyuJOmkDwPh9+ZoXskBGyX2OH2s7bUVwsGpGTxGOzVEL7s0kEMLYFLbgnDN9iXDBsMRMq
C1WnRBc40G0EKsyloTiIwmV9wBI5vbTFyWW50/gm8Afb+kshhi5zp5gZ+NJL6KvM44q8+5wgaoI4
TRe1tVS+qyysDi5rkMGUFE6CPfEx47iidMfxPdtE2FglmSKs8t7uaw6D3FlE0B4uucPp2DeCsrTH
bb5iK+CNkDAm85e3aX+9aItqMqE1qf8zgqdgcQ2B9EdbYnmFGs398bq/ExIJjPiZkhDI9iZG7pAd
ubN1fnuaDwf/vskYOxIIhmGzp6P5j2fNzWSxy6WfNo74RdPAEPMiJAhLr5589bUn36RDRlYGfTlk
1DMHIuRglb7uOnvdZRkIkC7yRPan+2HO+r45R/Uh0qEV9VlJ5GnCqxseNfPpYo7tpJvvYx1pZY4e
VpU/LDZq65W0ZSWzbNUvfSZEst2t5/ZzhA2o3AhDjNngIfk4i+5pG+7yW4Ro5/hotx/fbNwfo0q3
iw0sbUgADG3GJXBG/fHswjjWscrKrDoQA0PUhAOUr/nnLWvJ9YEl11k8NRdT2l3RBf+uHSE7tHAz
5Ti6clTjb04nSsOhqv9m/1Xu5Op27ZMRrgKIi1mk9cy/aeBKzP+vNXIcdMZhgpVdoLta/MpOC/v8
ZjTRNyCsLHLkGR5Vv5rSGtCh0occoZoJ9bLT6Ho2r2o7HduxhCRwMnQd0gFh/g3+yBIaPCGETLPw
l/Pf79NpMxmHgAtkBKzy4QgNKUilBip1jgr5Pisq0+GAJBog0eRI2OLgPnjj58vtm93R1gMu+aJk
YQd5E0jmdtlCyc0DwhXVUNQbHA3xX/5g/Grw1RXFw21vOWA3SYjYhma6B7tCOmZfW+6q94wj0nfh
trJcM1SRy3Lu0da7Km3oF8lwyTRz8DbeG+sIEeQ9s4wtT8DWN4QHEkiILe+x4IeNUDP2PcIgDwjq
bX4Jbmgg3XWBciKc65GvoRkZivSBZXhjm5nPolLg1gq2QdfCOH9ETewxiDe+fUUt7y2A8jx8gXH6
Jnpj621lF1O0q+Mp109qi/wbPP+ASB7ryNlsY5+yiy7HvYgtUqsb1BexfSlV9JrCk8kLG3HZHepf
KSc2y5oySoXf52YFIx46/jFEJGj+upvgiIeAf7ep7p4FH8NkhWeb109dhOteEIL/+u32Op2zx7pW
TO2DhtvGKzWLK2AbB0K7lsN5i2+MvmqhEPKmSBWVnAGrbBLkbIpAzX5Z1+uXmF1KN0a5NpQL2wzG
solanoGC2miMtKuralb6f7PRN3pBI6JO4qryMryMKH9hvm5cBlsAIysmYVw11rjKs47gPhmukayz
RVWWbN1D6rB0qHWr15DXTUNsZ0JIbJKdgz9lkemWUoKYMbuYIior1oeT1/7j6nCqR07e6ESJNzFw
253jwE2H03XR1yCYcJs4H4aohxm8qo0+nV8R+GW2pec0L8tX7srLQOzVHFem+cZ31US9byEAs3vp
+gjrBabIRulXrNzlNjyV7HmUq610Ud7N64QiahKtdUuec8vofgJu2eg/9Su+G9fSr7LSL2+R8GWJ
6OFqa3n1UoWPEhFLgdL79fICc9Jc3TwgVVl4Fgqv3xNYcuhFQVJvRDA4kToG4FNAdnkIz0N8EsOS
6cZdolo6qiIxBQDmdrHUd2sDfsdlP10hU+TRaXcUEFToj46+qF1yGaL/9cufdmWnfNz7jxFc+b/F
Keb2NbhPhYcvDjzzdeG+5qJ/5bQzxCp/xFxYZ0jZWGrm4859jFALpUA5szHyNBY5EWj9GXKyJGQ+
LWlANBp/HGTFDauGAMBrmKczgFTRWAzj7NsUQPyhYAjXglEiQDpOTbBYG4R2hYQ00BSiMXgasMrS
5umOy+7y9LdUfyV9apEG2yD3bs6CUYRyP05VTOLHrQ9DMyPdIEptCUzAObuVfSHUrqwhX1sStd8F
1J4LPA86gN3T/Dr9OBou0Yh0vJER8UpktJ/LSAmQSiPkr0OoO6oUvs6AQ5M5j9KvgwbXWCQymDHJ
LJU9Es9XyLOVDUBRtQiM5jk+H/fatfIqGpq6F+imxSYrISUFycVkRooWUzliFLgMBOD7hCigyvhM
S6TxK6JXSCuyN2z4bUY5tOmqe384JU27obd8eXEdXf/yZ8Jhgj5e/ts3Y0KAHi2KTsGqtplPXCi+
6cJBMSCyAWVpUJtmyDU4o4aaHNFQHmmwhV3tdKIvzP9nSk0ay6TzgCg9Wt+VxZ16v3zg/978f0Ng
RDqlukFGEEfQCoC++G9LyXzaI4Wq0SgMjEHeU1tZwxTcXgaNQucpIIKl+dPhXZBP84sxCP8ZbF2y
NFb/MvsjDUoAWiY6/4Sz5c7+Oh2Ok0XSsH/PMgeStJleMtLIMrJJMjs5AByWDzn3Bf9Fdr30aGt+
Ij2+EdtTviJl77jQSPnXVnf4R28bH43xh1+gbZpZFXp2nZWHBInS4Z8ONmY6E1yM8Wgyp0cAJ4VA
WKkkFhQWAdBrgL/lqNF78MhFPXoonV2Vh+3Ar/w/Ze+352Hi1IJYU2eyPTkAFKEVmr9se/oVP/0G
neTGsl8I5eL/Kfv4EEqSUCoLiiXgnza8zHSM5gE6ZdUpdEiKYqwOK1ysXSVWU7W4mrrSVtPyapqR
DM81nYbOqhk0On41ZTkil61SWobOiKdTFtrpNP50BggpDeP6bIxFjqvp1DMeHRWMCYzW+RZUBtrT
oO2J9CZSgTqzsWvXVDLiuuDxYnTCY0FvZ33fBd6Usby01fibGgj7aX2+hteJawqNSuf3VKF/8nAy
fU0no1Ip/VrAuB9shZbkGTqZVj2ZgU+mo/jsA8/UtJpGW03dMR1sNSjqx/um9Yzqi/I3hRMbxvrx
vnUtQKup+CXUFIav13Q6epm9et8FrwYT6K7rG1OX1ARNyczcQyfN17Dm6+nPQTRkbNPI1raiQB3t
sAiIZAQgEamZCA7Gdb6tX4n+qohIxUQ6lDcWgcURyTAgEenFmRSktgMiGe4jIq0jgumk0aIS+XXo
wpNIdLwOHK9dVI1zb0lpveV1ls0BVSJ1iYdbWAWISAPfDB1bw/aNVPXlfvt2ef5GGH/kSW/4H/Ji
Ss1KLNhSra13jd7Yz3ea+wJ/4fuuNCumcVZMj39YtFVLYIsZVHszCEcOlzhzmAKYUEeKX9FfsyeN
KJ0evbVsacZzba2D5e9X+zzNX7bRGhlKFgVh7Yyh6WzNqvNnzskgqVGNbBUAY9Z2kwKxh4wW/ufs
Eskibdkv7uhPS3qyg3rM/99mV5XernKSyLLoYTaOgnUB7d+3nR9D8XZo+3VVy0x/8Fx9yIlKgnr2
cJg1EK6tUrIEdJFABDw4KGIg1VbHWgK6FUQERk8Asjy1zZ4SAWMIIIFW2cLQ8gqAQCUJZGwfWkHP
BKB7xop5u4KWDI1OOYOhYwINQh7JFWQeLLoHvIIRI4eVXEFPh9grBIaRkVGB7xq5goytRAT4Gin2
G9xChULLvFSFQM3XiMPD5BYyCopugeFPQUU0ZS9X0JGT0Gln0Gt8oKsmD3ue5MSMtqdrZFYeCTJc
bqGma2wUAkPDK8A/AkbSjVXaAnMimK11UwdvQbULicDA8Lg42EDeQsYdIQK8BZoGHzwm5+tp18i3
AAaDm9PuHpNqLtEtDLyCmqcy2hXo3getgGUiqAOHPGZXoJuzdAYskSCdUbdDwMr0mHrtMfEWgCXq
oXP4qt/+BOBPf0LwJ5vXkv8qa6qUrN5sOBLNeKvMrQG2IWhgIxAMqdRUFLp1pD6Ov/7q8Zr8P2Ut
b7LrOA+ME6HMn9beZToZU5PoiGqYwN8XdDIeINJpuHIK65Vt3RNTyXmjI49TxYJuigGN67Vk/Dai
wjWwwOijM+KZSsbfIioiZ2r/XK8m56cTHZ/B7Ska1a1Xk4lgEBWZLMcotmtLEfetuzgjj323/kBD
XsGaTsbLIb4RpRVYFF7YIg1BJ+OGEh1R+hd4x4JOxokkOlwygvPWSjfQXr4r3Y8kOlyIVdlZDg/r
ycSK6JxFnYbNOgxrOpn4F9HhakIQc+PgvLfjH2zXoHXS+J+zGyW5VHFkFDG+Hch3SEkXRUSJ4ehc
QNku8nR5Ib8O/pLz68gX6JwvgGnU0QZu7PfqYuj71vsSNcbzm6LwXTTkOU/5iAJpgMFpgJLaZ0r7
/pGCk60aBYv8gO4N/lHx95mDpRX0fgVWAtUlU8i8UlpByXsYaQp9wxQy75MoFJ5CRRh2FsQOKWRe
Ju1i5F10hGFkr2RyCYeJMg4qe9hgWpkIK09B0kKNx/k4Wtl26Kh3tcs03DhF5f5hYzii9+EIDKzZ
2iFBZEtIouOQREkjZBzM4fTTMu/PbXkt291rg6jy0H0XL37o/ylrvOP0EYpxoC0DNqj5k4SjIGOZ
KpGqIDKDI4ORjsbav4JIxoRFIh2vBbMxjQX5kGT0Q0cyrSeDgUgIjLow0LKEWcvg32yUjQ2P/sRI
Xu2sP4A2p7yi+Uv2UkvOJ9JrLpH5y97h4yJyt/0M/74xPFgLMxJzWj5qdZvfbVB5zmbaC2c+upIc
4rxydMrq/keAofsvmPZj1ZX4N0y90gJOvmqhAaOhcfFvkUte55Y3mtJsWjUUGfCDRS4vTn1lxdPA
ErvCgRVYQO3V18aMMRe91LbI3WdBb04s5QJ/BA3tAd+HEqu03LUeX5wD87Ity9uMDOtMZUGVdbWO
WP0y+/im+OeNDN2xaqgp5eh6Xi8UpTP/P3dyxHu+tq6sB/rTbthNWaAgov2Hjctr+L3VZKEOrjjA
jZ/eGOKs2Swp6M9RNPf+/MPl7f0v5gtnoYh/lQ3zUmTdD2TvoSp9KGpPvnZE62wanrRQ67TQAJG6
wd22kSu+Xsb+fWOkmOvhEL7Z/GnvBgHF6SDhbzk5QAK7cgK7x/oD1yVtEVJtrBj/nvX0MVbsB2Px
LHYMkMPoFNfCfbludPZrNoVt+brlmNlrkXmTVYFbbdxWhx7TvLUoGd+k3GpHoMI5EuZPq9x4xAIJ
A/+P29i5FxF7dG76NlSagb7c9oJ7fsFcxWRzOi45tLEYqeY0E6bx6t5nh7JynCg0jsIAIb6hH7ww
2buMif17VnkRwcoRbKANoHHvc3KSZNogSiyPFYLHyDvxYNjWSjz+3JYmGTjNBNs0f3JZkasq8oZh
qSmuztcn4uW5CjT8PuNsDexmkIzAOetu0DpR2KI6uXLXVfpYwXWwqvNwuW2zY1q2Y8KCQQwkTi9/
AHR3jizaf8G0a4W2r51uRkRMwkJ8Eq8ASOlClogin5kX2fssoRgdtr+fTsmCVvzKj2SUYCsACaH8
1OA/EoCaRksZ6039zE8uFBhDUPC6PyLW6PPTJTNusPfSGTDaO55AuZtPM1VjB0PpFEo8n1E2QyLM
JqKQmO3snhPDKYiCz/AK5E6xm8xOxHjQmivL3y4wONYIyV3XtnUHkFeA9aHQ8Y8W0wh+7gAcijsT
5Ws/vlFMcDBfK0Oh8bNazvG0/QJ4DXao3NZL4FGWvu2dnA1jssselP10Oi3pZ9T5/gVkEIdcvJvP
9zdlqBx969tLBLgPfovAOZ6EQqEIGlQ8BVv7vGX9XsQM4MgNZS+bKLCAW/m4ifSv0KeEQJv+0vfr
OAhEljw0086W0Ip/wyOM0yM07SDgQmQ64I/6YQIq3jMCYF2uGXLlyCO35bggSc4e+HS7TfvXNKwh
keO51pAFLV0JoCCnz7QuRz8txAlBV8s7/7y5EmEKnKbTVq1PIguourf59no5KF91Pt0mcPbsLxvp
pU0VbdvIYFT36dVIjGmZ3fzd02U6KJR4tKgL5JUBNeyJ0Gectpy1Y95dr4ZwL5UZlUSq5+Wwmhbk
fAPbsptO768TQeHD0Kvz/njamXsCtp60n/D5dpwlX9kfMP8z7HCCdil4qpk9d5yt5THm79fZtVzS
4jI0PNtU4BVUVmwdz/vLFdDud27TmzpsaHNcD4E1/7bkX3KVfamzxhQ+ly1wLR5ugKcU2wYkO0JT
oVuJGbR2GhuZ8Dc7kxU/owaag3nBL7Z5TZG6TR3p3btgP6Idbo+4nDycPE2q5ngDxWvFYCnLZ5ao
shwvx0WbVGI56cn0hQueWH2I0ClFHywHTodkOsrzZ4VSU33xjHA8ubIy79ahDdF6eiAoD9C6CVbv
DwTRVq6uZpvclpxZh+7GCzueAOd7Oh+Xy+16eU/0UxE5zwnYE8arshYUIY/u7sezYgbU/v7sHPFG
HDrAyJkPFuzYowUu9U1ZUuPNkqpG+MxCO3oa366sjf0MRDwyf5ZxesqKvJlT94iaXDp7YTo4PwX+
vns//pxPSlskxQxGHzMYMUs4WiaVJAAi0whrDaSYiA2OGJnVrriPTRi6QGxps+3HODZCETs0gK7k
lpaKcUoeqDngRmzJzBL1IzxFV+cDSdHV7Kyl+1P6ddUuS0SUBSC8/RoHHct5xWkyRR8h87DAH+ah
Ph+Bf9wwGM1ZofX5WYmI99Ymdm4e67zkqRU+Ek3IG2WUnLKaZnW5Np5m33ww2xkbGMFU3WM6QVmU
D7QLr9ASwc5sfUp14edRYsGLS1YbpevhHvEvtiH6P+63/3j+fdrLImMhppNxd9s+r4WdZwFyHruc
jBD5N5D/1R9/Px1+d001nGIgvfaJbOF1giXwO2X0DX5Z+eSxMJfpdP9o+Dv/05XPgEPC0nb/2sP8
C017SX/c+AS+wDewHz9r3/nEgcApNVz++cv886/3J3tu2qp9YgQDv0WcwIbd88HzZDI4+H9WIwV0
af7kxEit4/JL0ru2n9WRvdN4i9+hOfifENqar/nFt3z6PCmB2U5bQxfZNuiZ/0Q1o33py/4EKqy9
8WN+yY2vGRHhqtvX7qzxFRcYn2jk3W/gHM96YvgWCbPf47PZwDR+E2J0hmSaDQ+er27wGg+k4e/T
moi+LD3HCmx4fvDasvncOn/pEcbTOM6z/CrMRXIqJz3t3v06HueYHLV7D3fe+zP7E4co/jxPP+Z/
v5z/f3MKJ54O0UtNMdtFHoW2DP6Wg1v22W+4+CaQ9OPDL2949kXwBPsI/2/g4TZyAsyAeQLlEFFZ
LHz+9Ze//HnDaQwROeT0xwZJ0OWkybZlNGVEqBFDGVIb9WgdSKX2UY9uWEfN9XBeq902qsR6jByG
O0t8n3+ez1pFd+NZQiApBaegbb9avwob50D4EVde8Pf7cf/9D6/z/vvv/vPfdn9QYokD1wVJZLKQ
wO9LjYKPtgpBb3zPf/mzZlTRpz6QiaXaVeSn/+Xbv2kEfE27yDxpQUw7t5hHJvOUxPB3f6d9ztOa
mY31kKv90C8Xjt16+6ujrrXt+lJZwTnh93/99r81AsMq9hy97Uqj4GtsRdYu/P6P3/5FIyCAEET6
a7WERqPgaxuoGczBV/2Bgn3a+fvQu5i8FP7yn7/9Vftpjt3XpUX9tGnT8p+Kf6pd8D14jKtIIYSK
xEDUdP2LhdpB1PwmDDV5eCyKn6RmaVs6vsHUBnQeAzCv0+l5W5TPkvTQHS3cZzvIMB+N3dm54PSi
0LFD2CGog4G+7MIykT67Ol++KoY9JaNh7z+uiXCYXaO/BpFy1taohMTs+nxhU4O1ik3R8pXYSc12
eokNoutmp6U6+rOkxsZW3/ek77rw1Aq4HWa9//qX32urqFZMa2EhIT+/c8hdh+3ZWlsKNvKJ4UUk
Yog4myWRP7br8+3ajF9jd/Z0ms+H3dvx/Db91Cj4kwmQTrNcq5HsGQnHzTX4v67e2iHR2VyGObTT
wdjAu2zWjQp+iopRpwoOVhFbPF2uKYRC+3UnAJkQAe2/U8t62Wt0GPuqxgKfIUkHFOnFMMvHhDBi
GlHfxS/w/3Bj1c5XsfhzskNmNXoNbxaCu3aJ509e3LSH6bS76Rki/ObklzS5avRgVra/U0KtvU+H
Q2Z3jIXV4B9SxsakxIYNjp4kliq5moeLUUczR6vnw+HJ/tPNwcpdZ/jJHYyHNExzS1f8N7UHwBAO
y7u5DhxTZMntX6HeGsjNP48KtZbRQUTImsIIoAWeIE3rMAWfPmE0mFmhecb2h+h30vTr1iNcCF3x
ff6kHDKd7zvmhRQqTeOhNsoWYcsagUGHmUutsAVJDL5RQsxyThzbcrvvv2Ni2k6BMtxo5NaE+c3M
WlvG9BAjzORKzZke94u2VI9OIoDl8eRRnCTZGn++8BcqvGr589f57fJjFv9GWcnoz10MATO39z7B
EPbDi5HJ+ctrPRFR0yBYHxkegF1tAcru/v5yNfbXeZ4PqefWUMeXJ8xe9+XdTu71MJ7aYXmmwOnZ
rtxtOi/TXuRqzNpu0/Jdo9R5yDoIxdoGMphx/E6wjdljqvuS4WQg8bE+pqfTZf9dPw9+yxxYgmjo
5XyCVwYNM7fjljtrWcgI88QLhBwH11Xs1cOE9Mt1N+F8QMhUZ5dRDSzr2DaUcsmIKfeGn0/TBpJ1
7ZlG+CiXw8HBaW5g6NHvTnjkdnfGCvwBg8kOdxi9tUli1MyFGIC3AUE8Y7U6hs6o47PmON7b/Tbh
LEe/rNym+j7CPIL95vP+clBFT8PQTJhFKWz9i7HOrp87kPn38/Hv9xkGmm0SP23lH1Xd+4KayJo2
bI8BrESGhw/HLxEl7IY7Y3ri1F0uMaMTG4+DhRGuTupcdzKaSmUsLgmnTh/+1cp443Vf58MWIdiI
R9Zx+kUIQUzcgwxRrmooghcvE8B7430oJkg9CFgw/ONB9O2NJQjejVkEOFpwUJoY9FwjQsL2qu/v
h21vshR9lQMju4tFvcP/xxqzDfSaytMT9XCWX8zGApXH+w2srA2rboqIqvXW1vGMw1g3GVxjRPCe
5pdp/+mn2G4RlZ2nQ66u2PZ/CH5FzGiAjNf2Fi6p/JoZseHwxjEibbzS+gGO9QZxPLCpWlNfOqVG
YLisEYDWidiggkevzUWBll0O+EvHsyF4OG4QVtVYRnQe3cK/wRPVTp0tQA7lrszljMfS8sEGVSf+
5nBggFEM9y0PiVH3RKsByDvw2Y0Tdb6hpTO9UMnJBlOnDxyDMXbO2tl69YuAoxIV8X6lt3zWfr5h
HQf2rMOKclYNeu+b3mwrII4HdEH7GAdvMLoEYGTJ1TPIwcsOTCWQJpoxPPYRFygr7NDDWe4UAdhg
yA1JieotxPPl5uzmDRTbPiKsAokf8xYXY4cue/pPmgJgM21Ys9lXTPOaUTTFUAWprjc4iX0X8Zzs
YkhS5ddRsdqGWy7dNZsns/sA33ADja4O/MvCdsr8ejydJoItoNALjXO/xQ0QuK+C7A8IGIpiCl/b
Bf9bdTlIg+4f4c7g/1wNOLjLWYMV0xcUC8Rxt9isRccKgYn8j1vk4tqKezsn6nR5MpoMK/yyFCiQ
Tmht3meb7rfL8by/imrXxNPtGV0Hj5HT+u936nUhCZD+ePTbx9HjwfmRKZjdwzhG9kCVeZaEnWF+
m1+MnW5MG2U9FlK6DurxwRqy5jG1lcHujMMG/z67vN7vsMJqYI7MsMhRTRnapOdVCOHbCL59feS4
wSsWIZuk7U1s68nhQPQ6t01le3XwABofQPj86y1nNtPO/AuinBN7ARnRRgzc+q8pm1Y9cJDy9vwp
CBvHBz+EfNywkLEO3qKtHkXbwjaE5GWJZ2SE0SzkzAwZh8s+qsEzMdY11j5eYaVa3mElMn3kYUWP
RzkWfk+seezjfAxw5tfU+PsW2cngsduAQZ5SGTnthydwPGMTKISvafiJ8hKKyEuYwPT5OJrrf56O
J8xtZqW65yRhrcbfJsiNbULIX4MINYaeYtoip7fCFwmmk4wR24DRhtvrw7dexI9IOZomorGdmvhK
EI1khz9oUUP6eNDZTZUBi5ebRPMG/vTSAH3Xeq3clX1VwZeVlKjKVx2/9goBVCNXrJzCEChyGV/y
ptiGsxyD592l7ZEN78iLCnQhhWWlHLp/w+i6qgymHKVnU3x3nRecH9ejYcyNkpPNKqiaKARbKV+1
/is74qv3M8psDkY5sCHCyGu1oaiLIWLKrd6BsvAquK3EY7TW+XbB17HEgXbBLqUvFJaoYoIvbr9t
0KljsJ5R14fKqvi1cuApsBWc5goeD5wZJVPAN71vcHCGMlhwn1rwF86g4TtBe3adbqQ5kPmVtQGZ
NmMubSDo9YGIR4dBYPp/y3Yh1DJN9lZVmgotL1aCFqW4YNlgsbYBC43RF6eI6k4az9aye/R8s+so
C89hIpiWe/nKi4+JoYips2FhdcTWDB3bDadcftk73fCC6sjrz9uuG8Qli6fOv3ahPDZo3T5i8Es/
SPnxIsJRQTxGeRtDzM9YGWH511pG1L9qeivvo404hGsppwijLmIqbza0W//jBJxc9yu/XGHYIXIL
msBX2HSI7OHrSko5JLZ0bTeSLTafsuEvm8GuI3m/WBZxa30JB9RFGFtGWn9LuoFXid1LQ5C/8Hmd
XEql5gDu6Pcql7bsjVmzW4Duea8Hg4dYwZKTEc/zbf+afBy2wMdH4kUA6kvp0ZbTrcIZdGswd3g9
no0N9aVAedNyWQW3lMqCmslOPwU4HS1BXlTBYT/kBSw/bVlT7bNX6KZWsaSFvMYNSQvOWpZeJ60S
dPPP/em+HH/MGpBwGymQsN7S5f1+2sjf9ciHxb6jS6dNy01Lpfn3JtqZY7nGLdnTQaY8neSDXNzO
V2VtyIVxWRfGbx546PJ2vDETabIkVsoSWDJOBlC97uHypg2RpivjKWY9FtRKf+ZOgDVf4aW2KCOM
bnxlEgLXaa8W64RixPZ+z4DYZKT/EfGXtFSQKKiB710Ps/fLwB3x+XMtL+gF7KOXGOgrqhTUcvl9
G5Gy9CY2xDhtWd8YKbC172ErkYorQoV4XOZ1bSBU6IbWMeo8LfvcRIqJAxWH87M3qLUyQihS6AG3
6Ce1uzIlrf7A77xufE7usSpyg+gt6qBiq4t4b5T6fFjelmRoESSj+62p48lljreUEMUSv8TYWMVh
q+a1wKtl6z5RJbSAbKWEwiFTH9QEJR1lvsp4S11lE6vnlTXeeiVZw3UuonBaefobXl7PaypE1REc
N3iOaN7+Bn4ZhqBKu2PBDVaJ5ZJNtah9YrpntIBvy0MeI1y2tid+zGdVMdURGyBu424p0PFSWKRx
9erALeKgDzi4WhVsaxJdTCDFbqJWFOxqtkQfMUm8dj2eM8g2VstycQ41DAVlaiRwNRMrZqp7HYsn
KeupNYk3RsRpwHSX0+lp2n/XPI8mUlzmrP5J6W4m+76KGBwPuktj9Sooee4sY+E95IM31qDvA+YM
KmmMALwC0qLGTFysKmq/o0yx4aWIkhxE2bfiSm8O2uKd1ZGTllYwCK4vONasLddJrS0ZX+tnhMpC
mnlfrCythjKmWKVloL0DlgbYbFhJFcEJTMvVWyxG9sdF0DNoSnFSDqONf1sAvOqON6E1qJQRmazX
jG9gf3F0bJ6ZvWIJ/G8j2VVBJ80QrXvdUPPqeZaymRHZsiWGUAYxpSpa3bnhBbEZiwXCla3NPE2/
fu7WTrZ2Ntx5An8LEveny+X7/X15KBvXbq8I5G8TFV5bGlhi9Z4PGvppvn3Ms42aqfGWRM/gdVsV
fMOsLpCztWCSRquIBGwUMbPFmWNfgcsMgwJOOPrp/T1TwxkzIcEefTECGAcjafa7qBVGtIo211ql
edxl5L686NvCQB0HnxghdW3BUl7Mx7I2vDqWTgKdKlJCr4mRKhJUDoWxcZigNxR7EHC8iU8mb+m0
65qAWbtEC6JvcNhAkVtXcJydTUyjkqbanGwXQ8vRQOHOI6oWzA/XDBq2MOHHq7AOT7Pym0ir6f0M
ptDxpxbo43APZ47j2jK7ay5HxnBGrYXTtMOrpH9tw2g+kQFhtC3ZjCZS3m551xoX8zZXpxbuGF9m
4FdvbRIUrwEq5Fp7RO6aNhyxCA8L0Dv6/a/03zGD2mk+TWg5P91fYEFlMRR9qZnMMR8gIt+/GLeq
+jFp4j4ahZox2EdcpPgutzgIZcRofruYI6dBPsfDk+QLy2E2oqRLswpvt3RziESFhCFKYRLo9ceZ
RqlK/srrNRrUJwGM0L3OlrlUPoyNFMTTCZNjr/PhfjKMlp6BSOioNH+KbS3LqWV+EWUfOYowQoZM
lSfV8XgoUUQalB24G1KW46dpCR0Nos2rfNd5Q1HEvAlZeewjWhqLlliBxu11Bi2OwjS74Y7nRq6D
bpsvoCuZj1o8gtpxY2Br8Y0suzJNrfBTKMXLWXcbeSPQx5HSF9IUfmQXtxLQWUkuSYK4Vx6fYc2j
ZofRXOL2Z9yNsfM/PPm453Q6YXxkwzvoPYcIAWZvMT3RjAAI1ox1uNxhcks6OY6ftv5QhPrNX1V+
K7U/Flk+R1up059VPMiOMX5pPXSgG06Rp5eKmAB93SpPICaD3AtSZIV/OSJlFZef7YbH7KWXLMuI
KpoqfxDDKC/XgYmE1KjjaguxmLpycWqsr1myfS+VR0RbX8+K5Tasp+4DQR9WQaACTC+h9nvBaofW
ofatNMSGx19ETthrX0XrVoGEtOVmNj1HRvTTzh7uhmUU/qIFwILl3T7/eTVG5LUTOxtugk0IDuvG
mVZ5SEPclHmb3y5XF/eBFlWH/YDxvK05M7p1L12DXt2AZzZQKSJnTcurFOnizyjAT1ydkmFBsP40
1cq/Lmr7Y+bNBqurjLwgKWubPI22jKie1a7ADoVaTBI1m9fXsWmaNiM2qIPaqwMMu0bJBD3ximbx
zxbDrY9JV56upDDQGNEYdIWS1AYz1QvSVV7UPt0shY5HlwucLzuBaV6ZVsKg3F9Op+OiWWxd7deG
s2SaBLd720hxk1jBVr4yzS6k2yDbWE2IzqmHhXzFb2Mzfu2t2mXltVdXFWxwD8jsiuFQbzAcPD2R
lolaoYr16Y0PAdUUuD0u164o9zZiwAT2m/K6usi3Tosp75t18LgyYeknFXOzjQrzw1MkheJRjzaI
nM6fAnCvhydDHbHBGWPeQGjE8iHEC4OiLu8Q5zxPP44vk+o9dZ1/AgIkHP0CKL9QzBQqmCCO4Bjf
2oCEOpMN0mrg22VMh/P8wd1E5Ezfl1nNzZN48QsTI3QiUToH5LFBFLJJyLmL8FUrr5m1OxUXamGU
WrmpMsKOKbNQUQxFYN426wvPsiChtq0vyyzkyR6GYoqytgUftm7rZDBHuYw2kPn1oyRag9jkokJe
iYhmFLrd7aGlaoi8o4Sdu8Gf8iwMSc5B2pEKh5Re+chJIHAxyrRiuhj/e2VNeaRI/GnjcfZpKzRm
wmwwRduIH5WIQm5QhlWEe9VY1gZjlPmaIRNCDlI4x5t8WEYju2s1W39kf0WgJb/sKUfMqTNFv3EU
BoRCZbGqbWxoU4CxZX9dtNC7SM4GA4xlWhziVUwkzTtfQ8REEbtRduHZX4AURDSGV/kbVAa/RdEF
ENOOmtvbsLIv2e2Nml0bYitN5GGSePjxokF/o4RgIYljCSoZmpGb2iDd2iriWWw2j6nFRQsDbmC8
ZgzMyeoh3vu4sbwVI6Ltor0l5teoPk0XcI6Hap03BiFaDmWk44RuGRs8mjbCNbZi96rmNNpOxFRq
Hg35qAs2boz1m2zFf/RpN6h8DjN2a9iuVhFXsc9ipofyCMtAYA4PzLvhAbBnno595BbSci5MpE3k
vW7wZPw7pumSxZdyYRsEVhW4562i+LsNir+NB7ylF7wpDxNGtcZc9GLDE+sjsZq0SfKVKFlUFFD8
TrEj24giNXd2MIp0iwfWdjFNw7X+pPcyYfiqjRiz9ok2yhNtIgG0XCJPuWxvzIrix3hycYPjFIuh
OKmzwVhqk8ncDXZv2QTKqVTyPYpBUsXSpBuVbidS55wlCruc9YxkI+J9w2ou8IYEGsdERfpfpkI3
mC7+FEX3YSC+FYk7REzCx8SS8qzKCDNGi0I2SLF+le+otkfnFXlTRYIL64efJ1PF0q1h2YJyy2MY
PXVDKb0FpVhOTay2Y4MfsMHiiJWNrPMVysq6pCDf4p8O0aDho7O44QEwKRBn5diGelQ0lm+06vp2
c+REeVxjISVDN2aiQspFsVfMZZfrDLRyUUPEo414ScoJx6I4X8i7bHCUY/o9bldtYC7mCGEUxz3d
DYEvv/kBgaC/luZVtsyetAQT3+bxbbCE+63FFFsMzDGiJ2xB6O5wXCajrw5K/K2KWED0FqfDQfHw
i0BCtW4ArE1tqNmhgq0ubr5ScwEbWGFznDfPokUkShUJbiqHWm4WUnk9PlYRGWGIBSuiaCuOCIAm
GSWs3nH0Vk5iySc8NmitIqKIM7mmDZ5YFz9MNbGmPD6OQWLlehWmgRWDeojUJ7iHNp/hnSkcwZKq
UpLYW9ghZnXExfGGBCFHdR/wA778cFqOYorAaCATNtQf1RHNnIgBKbGfJv5mYhUyGzzuMaKzvIzc
4MnF6jof692UW4o9WZGqURsA6Fg915dw0aVvLYl42RvSVzGP3Sis75qlzaWlFQSiKtb9YUxFUXWx
SHDSllTodBGVmU3NtlxogUZoGGPY4JDX8bhNROsraq5I5pYfXaYNF8ls0ZEIf3SeNrjqXGqLQ6TL
ocxWRm2QJhz7FGMh8nEuRfPFSmIzVfOKXhqT1XvZ4uSOmYEnVkeOLDt8rm7rYFxN82UEFK1fvAlm
ZwwxwBLbepcZTdI0VWTihDKQaMvQpSEyqCcY17gFeqmONH0nwcq24FuUkaE7j098Q4v3EAFBigGC
bBDaFh6kCOasBGJv+X58d46SNgRlYKSDjjERBSTSl0a/tDzmSOD3iO7sHFsxTli8AzqKkLBl2tEY
4I9VevspOJbH87awiO147GR7WdetR0ZmsVnKAM2wjw0f1Joch0jz61enz+a7DmseQSp7uSCIdMgu
sopCW31x3oF9Sn4Z0MYwlmkMgC1d7m0Ab9iupu9o3dbcctz7gGwASaZ1rw+RhsRE9/oWuKE+wMUb
v9ZfrXF2G9tkCi1rCxJUF6CElL9tgLCGshKbwGmvBcdDgx6+a434PHpYDJbMIqBuUSaxbtZwirOm
c/2yAps/NTFV22ARXOqw1chYNmnypoohNAV1PUHWZ8ODryO4BgIZVWvVLSLwDmmkpi0YdbGXu9Zx
WwRPH3kIj3y6ZZRZGxmiej87tb26Ra2rPDH3MjOJtWFJiHHbAMEf9EwAgb7biGNX9eHU4lrM7Dgc
nsA/unycrZf4+cd52V+P7ypcR81DBoULsg0SaIsRUESgBiR1OIrAdDT+sXYdbQzllhstjw45GZ2c
TfggPKe78IoTdZ3ZOECwbpmPXTOyUNnV7GTKqb1bzP0qgnYSnFYGu5kHmYqItbFcv1l+//YFs7XU
ByTHgHe2iPs2Y/EEclCTf01EXuOkzwPenGGsLRgpjDUnsKsyIIwapoInh3USZVBLHsFPVUH9mogI
kxCx2jo0nKLNRmUrQN9adoUEF9w+Lmg6L6Bm1X4Xi2nXxMG41/igW+YI1xH4TDF5dst7iwGhZMe9
WLnZRoZurkeraiYZY5FBjUBVNCEMC+Q5SJV/bsEsiUGwPQx6zWOo8OxxiMINIVTOFmzsMqJNsrWR
Fvwy9Ni+iES8RaTVEVPzyy7hBtz0kK3aXExpC7OXEStko5amX8qAZLcM9p4AYgzgyLfEF/oAiyyS
xAF5/+84xGc7vG07KKiYNA1CdWSqoU6iSccq4jSdX0QQbyLY/Zo47CLRRwfnpAU3ugBNqkqFubYY
yozyG7Ra8z5ephvN2MhBwDZlE3EsNiORs1sdWtqosyDuoCK2dpGQRQTTSpOhTWRad2rcwZZYZAxG
9DEJrWFiCVxxCJC6BlHHpx/X6f19E6YVMxp6EPUj/P4WWyk2Hz1rzG8g3AZB+BBMxCN3aTfHPgyY
81VfZnh4i/iqIwMLRPgyD/DY1jELRXcBNdevjs9SoUCJTUFv0CR9JKwqWgbUeSwtw3F2vY86EJD/
frpD4Rxll4z6PMzPU2oWkxWgQySmFPFWNJVeRexcdY6OFjBsIipQC8NphtQQMd4ZuFI7Fc/MUAU/
DnrkYovGHCMJCPsOHgJ2jHgO1o9tVtAESyx893XDZIuQGBKjBZD/j+fn41m1uJu2iOTB1CjrBvjq
NuKxP9Z4bYA/LCIa/WQcgC9k+hpOJ4gHFXp92vkw/jsorNLLBrjH6fQVpOWWsceFH/EIPWr47DYt
3zeBmfYRz4ILTHDy6B4GwmjSosggrubOiPoiaV/Qhtw/jm3JZ4wYpBcSHsMYRqy5wCun9diDFDp9
nRjEV+dj2PkwdZnMYXvVvsUDKiLZqMS8nS3WC/vKPNU+F4XYgrBfR9Lrgi6GnG9fAMhtOGkpvJMA
OXkLES9TJRrMZijvWpiNbE6F8X0tlt9HAhtBzccGnHk2fTv8Y7DlUy/T/pNKOCcdqLvnRD5ER+rs
FLotirCNBs83pXi0NzNsGxcQxXndEvMfgjFsgbMHSm95VUOSRRHJzQS73pAzauoiAp2/ZcjYFkeJ
k3gAe1IGYnWjAq2HKrBMo3795uh3zQNAUjivj8ELjfMys95OF8N2GLzWPJKY06/BUW/RqlUwmo9o
Pk9QXf25C09Pi9zFUPVp4tWGsWqtCKU+IBkhFU1asdHS0R+PQ2u2jHToI5VI8XPYMpgt5iiva7lx
/IpqsVZ8MFVDNaUPc2S0JxszmOlRYfOMEUNbPMZazE4sYfxVqkgla/k0PH7EQnRU23yRjUMnahEl
5ezCOlqi2RmhdddtVRCH+Suz1trIXJPMQAJNtMRyhqs8mBajKKJhjkezekvF1hjRr2GnhRaYZeZY
Q3sEk8s0J4pL93AKuvmzy9QUamopLM6K9r2JUkBNmwzxUTYydKOFbIZIYHLTeEFNcMYyhE7i7d/e
NfHGMrciiM7khK4tVlmdK9MKplRo8ZtCXD/80cVMpS3aIDaoLllkoJ1U3PZiW1ozaEQFCxjisWEP
mgHdRjy5h9HLW5LAfWSSz9bxm1uSsF2k0EANKW6p6ugjYanNWB728mKOUFSSbDBxq8gmg9A5Ws0b
661a4V/HwytUgZgb0drGYtwocHPc2QqvQmAoh0OQtVzPGBmRiEJs2V0Oh6150Xbs0gVjW2L0ddlk
ak7FSW65mCoW8k9YflskUcMjbwCRbKjXcnoLI9crudgnSw00PzI3E/ELLQksnITMV2a7aXV2YQyn
Wg8F3zI1i0vABGrPY1xwy/17fgRzZhiyMTnNUKwiFZ7e8oBXAjJXDc63Qdlvuxq1tMX27yNya93k
tCW3Ug8Rc2PtjGgL4fm7DUOYsqjaEmIfI+cZhNg1deovQ2DUJgS4xh9lxMMIs29boutdJNahVZlt
yb7XkUiADEfb8Zm3y+5Lo5fbqo/MpOOQzNZh5yL5zBVOj69hSzS5ieSBgo6NLUG5IqLA4j1CWkKi
C9RFtWXo4pY80Liedo193PPT8nf64hUsatfiAtLo52tC2WOrI/nFcJHliNg4ox0GgL1skOUHW39R
KJBnjqzQ8nRJhOj1wGjGOpvf3m+fumgkcn5BIkLuEUFkO75GpPBEoF+9jqwJGk52f79fUsU4RKdz
dEROPHBg7AHtjsvlhIUIH5fr6aCQ7PzSSsiklYVNtP+c93fj7ZlrBN2obY6YfHVC4ebmn+9QhZDd
XuuvjsElcex3AHtwvZ/P2Jh1AVl2NfI8NZMPqbaeIUQiDanCmij8EdDHkmzzI0YAGTv+ddb4tfXH
J5SNfTa7p+vlY4GVni/4e+cL/pp2AmPkLOVdAMXfPT+bVztrt1rzSdZ+WdgWjz6TQwb8Oru0bf6y
t74szzeigNnuFdluD8b9QiPfwdr369c27l8IAH2MtrJzvd0P6Eg2pgQUYT5D+BpmxCa1Mm28i6x2
TVj7ngUbmLduxomVjCzLOQYBNVOn48ur70BXqFeebySWb3AtmCaSMkK7mtqfIphA3RZy23mIKmkq
51La7AImdO6318v1+Kv+5AZ/kg2FDVbc7Tz6L/N2HZHSXtTzONSX6foEvAOoT7NSukkMyauVsUYp
tI1Ze7uAG6qJab+2oFV4OoHLaAwlBEG8JVFTLJewLuNygCDV9JvlQtfw+gr0dulSzDvGEJLSekxn
73lCDBMJOe7j9RhqXLBXzNm9XJN1Q8RufAMSrZvE1CaZ4s9eDuANH65F6LzO90W9gSHQcGXamsAK
wqOR9KDfLHlVC4+BxG/SpgFHF1HUaJfiaUJ6aOxDQxhMThuzuM4gQLXVVYFYrtkQdkNplxtc4+6W
ws21dEqWcxBH6h/jUb/19XeedBBqTokV7dhYsXG/UMgv2hbZIJPjttJb1PZUMS2HPUhNZ2/gUxkh
ht/Zv++e72fLfOBTgEUK9spt1pZbeYNAor9gevinkjakb9kshtqdwno2CyZfxPpcbxsUsU6nNDIQ
TzIR8IEW0+e+aBDrDc98FUUgy+1q7Uzt2io/U9jC8UBtMImY8/0NSnHmnd2NsvQYCj43h4GlarwW
5fsxAu/iihCeQXBO6frKyrf1rwcVPViyE9qeS35DjAkJqDh2IhcfCLqCp/n8Yv4fbC5VC1x58I71
5XyY07l86MMFGh4J5YIgkj0pCqwxKMsEaB4v7ZQGc6zT6YsMCpZKbwdHuDHfdv4L6Vz3CBEtBzxU
SrQdz/6/kKy1+04H3OmXGvdLwpVCPthPZ40X8GsLFhxWq2UfEn06+C0WHto8wohQDPQGwgUboCAK
+13ZTevXwzUyq3P70unUjp5Autz22mmTfI8x5tYeB31f+O9ZWlgmoiIW11i9gaf4wAWw0ybJQWup
I2uBANdhZ3zVN41L+FZYZv3DnGvHvYacu1WS0Yl0EW75TZKMFtQFB9T+RklGtEpPizWULT4B+1FK
FuFxHN/MdRzNr50U2oU/OBF0fjsutFs1v0Fr8yJD1N3lpCx+WXl2drYnhViw5wSYSBOx7GpyyY/9
VTGAZv55VA3Dit1zrlhzB2kNTR9qO+Nha9TYm4H60tIOgaLWc/yEUKIMs/s1xskhVrMtawJmBMla
lw23q2mflf6zBh+Y7dulEOZ5Od6S9Tr0feW+5+FnxG/zpDnYJbsSDHWei91V7NQ3VtNS+nC54Qe3
+Sf/BToxXtCofj5ejd9vBB9OmKMKk7RbAvq4rKl8B1wBCm076FAj6N6hvQxf5Pf5ek5FdJCMLVoD
MpDatd0vx+XPFAqycRgIvYDcuaQAakv0F1q/IvAwy9WKtEWMqb08XQEBcrk8G+/v8/01ZeWUXAu+
/n16REabHJRPKz5M3IpNVZ1nuwAHu4DXdr4czFvc/+27chatPwvMS1owreNBbApcIYUCJZFxSYiw
abXj3jxm8k6gVP5oBCWWfF5hsWlqJV9z2Tc8AtAIp78doVYeWqQr5fvGf49FkqXv4+X1WHCknwjk
8ZRZjr9wUbnmIwB7c8D38/EmtmgU18urxny9v0ExctG9hMNNe0kUdcG74hzhx9PVKMXPJM51yZBu
K46bbsv9uFveJkzVvBsbDxzKO8UJl+OvyrkU1GyNBEEzktr/2325HZ8/jbieLy/X6f3Vn4tyHo1n
H5EvA5bDggGxIrNM8z5m7XlUBXMP2AFlyQUNkIP99VW7an+6tmB4XL/uM/AM8O/TxYKrH8HmI9Hz
Nh21N18N8sDKQdroQHLZPZ8uE7Lk+3RVjr6miAOtUyDK0G1ebyeMBFzNHRitowU87UWyQEGlY61C
+yFYhdA9d4QuLwuJfZ1fVJK1uITeb1W9UQ2zlu6VV1lj0JLuBuT8DioW7B1ogmHwxyaaHekz52Ci
TFju1+vlJQnOirQq5n4Z9MFc5wko3i67T/ALjy/n3XxXdlaMflkCMo4FuhsH5Z+UMWOweHcHhYuQ
ZAVUceXkOtY1sNJ6zXdWmYMAUvWvradHudX6JAPou6fp/H1H8vl8MTTN2SH+7hmrFjJq3TaEeYXm
wFqgbNo8htPxHR0TI0KgZDAZwiDRz1vtsLaO1kjqGCyV0xGgKvC1KSfGG0UR0rt43vEE/AviQHnm
zPsCNIrk4nE+8Is0xvIuiZhorZQhIrPfput3I2pu+1dAer5evhsuw2u8ompUz7rqusCE6pMP0/Cw
psJKtp/AHimt8yFVatYq7P0pYxtTZT3H76/GTzO/f8nZcKznxeiG5Wb4ZPeLWcefp8/LHQzXy5sz
WlVFXws7SGRKn5+Nz/Cny/U/L2C++04amECkRHNphUJFsq0YWlb0tvHvkAuCwourZjoUgazuuGqL
oCon+u7peDjuoHzJqKkoNcg5UtS7KG2QzsHVmy+NoX8/pdw3/LT1n/KICPujRjfizoqiTH9fuO/B
LLG2w6uxe487TQxhbWHpPhXh66Kokh/U/gMM/VhGfZ2OvqDH3myKgu1BK0JtBmoWnmLydykg4n/X
YftC5sS5gsjhS5oCnxK5gxZ535zSeb4beXSyfSuH9Ob9Isqm5tQrLP7jFeooyOx8v1ILTHopg98M
BwmN3Qvm7w4v/v00AR/+vGHjtvn/xoSZkkdKCBpIj0M0SGe+QyBtOnvs0ss1fUIN82HJSYDP883I
RmO9QkBsOhl96Y1z6I9VLppZpfarOkznw6S4hZi+9x+KbD5ux6j/yxX90auVQvvX48ks7JyURrix
PvU2nWmX/LQrgqsqhVDVrUF8Xf6eBTKyPz283rf5doWyvGTiD++3CwTEECSZQMZNe5R7ExTWqZIU
t+RXJUZbGhpP5mpvE7i7p93fLumLbeuWnwGmGepHBrZ5R/O0Fj8tiSJiS3qbVeRZBErQWPIwA1I9
rIIFMccYzXs6z2mpNvI3rQ8C4z6caDCeCV22nXFnzos8MqMir4poZ4kBXooQ7WQpm1cNA1bQZr88
73QuboLnWQkNc8SM6Cu0haSX4plIhKvJR5pslRE9JrMOd3tpowMfZh1IcrG5P//x97tq96+//OXP
6d34R+4qJ1HzpLVcXUQecVY67WjGYppbmCq8i8rPdUQjUIjhxafS08+dzwMOu7SV+xi8B2/0Ywv/
2kbhFcuYN/78dP/1V6jLswEX4xu8nIwpnr4e1jKcGdEeqZSosOn0oY0sALAOSfK1UcLXywnFkhFr
2Jx/AA77//2fv6aZIcZJmAyYt+v3kq0gNIN8Lh5Fx0QWqzUUdcbuusCgclZRneZNf2dibsZWeYiR
j+nwt2mfqsNB4VhGFBFYGbs//L/+35p52JV9xODSFkfebJoeG1ItldrL2IGtOzEOO7jVCB8ByMhp
Lm14dQVmU4jhwe792P24fMyn9J0PfimiuwW39Lt/t85AWgLV/n2IOCuJrwrrX6+z2q6ANMbAxmls
99vZfLXf2RN5OxrRCqbqHfPb1+lwJEWSPhPW95CqrYpWsDL4lmAqL1lT2yL54PEUvmNnfnuCpDPs
E8OcGJLaJu+riJ9Bfgp5hxZq03st6fc+RhYGlrhRs7730LAQQBSnz55fKZR/lKOrTDM+6vH+Fkah
zgTKc07XCOKBMTP6QTpgPVzed/f33dP9drvYVIBRNS9nGhtsVLe3DtLSydtMcgTyWstcZ3uSNqtK
qRhrgyjPYL3sMeke7X6+nf7pZ5IQC3ZK/EUsIcMub8efs9g0PhadddohZQd9kQc7lvLssqsPDqUZ
RovSjM0GbddyoOtv75MTXzDd+PjDqKOz4rcMLGgxVTL2a4voD39VdKCXZdjnab+9GF38NJ9fDL+l
z6SOuAehm4GWQsbJaCNU0LN/jNocDU8dZnY90pZCH9Gk3ph5ukOBJzlh9/Tb6fuIkEUXcnGewcE2
7/CW0y9xjCzJMN9uGNpxN6Rv14sbxE6ppNt0OL4cFdOkFoZhz2OhSfeeDe+qC26GSOgjeJLa4bVj
xAeVEa0dJjrS39eBaVM/OmXHN9Rrqk/miYgG73jAI82fLOTAPnP4Mw9xsrSX15aBB1GLOBmGb/So
xFAFtoZ4H0/T600PaXRFG4nQWBsnH0foBcuCjeSQYcBOv1+/IwNmFVAdFe2WgW2mMc3B/vARbW3I
OV/pg2AboqOMmzVtzOUb4e2lNirA5f50m17S76pn5w0D35Y793/7bg4VCywm3T5qU4Gm+Sfghx6h
T85YSwfNBGy6SJhLyPzny/VtutEoLScvlRhcFdECD3YCno4FukP0GTy9NOsK/YaJnDZ+6Kg/8+zY
CXascBh7/CWm/aWWuaDxWhyrAHCjjG7sNM0242CsIg9c83RUcjS63q6y49IHCPfup+usqJgu8LxL
qjsKUk2b0ktjJPdFaenzDH3gP2YX4N89z5Ql1DLTNVdy+HiAM5IRofoKsdXT5QWVKBZPLFrS1qcH
ReXkY6aV0oXGiHmmmYzmQWk5mXaMVL/EcmoUrQBWgeya3qxok95jUCnSPKZurfF9tZPPfF0K3RZ0
yum1O3XFtTuErzSsq7POT8u7Vsrk03hYR9ZaQ/6KGpaU7jv1T+uprcbvFRHJ67bMHKThai1DWUQy
nXujNCAdCFIDu5zwOWk1A3Ud2R27tRzKtmiTMwcUMvnPsvQHh1qh4pgE54jxH39M1+OkpULLkfPe
I3ortjjiiIUV++8f0/WgPQxOC+NY0drhCQE3kSGeUQQ2OxmrqnNx+iN04J+N9WCc3UmrR2EqYk6n
+V/N5s6u0wtUg75d7lAfevlQi1D4tQ9eelAiJHM1VRNL3DrBs/YlWYCowrGsuPwErMvaxkgodw9B
0uvlTkBxsihIk7acsGYkXS6IwQO77Al0yQsGrTXVlsm0keqHhI2xewdJplZkFWMfoWeb+V4nc4ka
Y7J0gkssbXIkUEzgjGGsGmpFtOPqAzltk4VmRzcoF7CVXJkzt/NbViz+63y9WFPEmJZaDVLTsFhi
rBKOQV4n45UZ+fbz/q6dShupAgiyg85sUIgUXOwGiyobwT8fM5QwahJj5NIUW6vCbpa3FMjqO57f
77ctlWg1V0KJ9jIpAg0tozCPqijkC6KZJS0v7HBcIF0+XWnaAy1Jq1tuIuvh5k+sFUMOZh60Cvmq
Eq64Ek2iCn3MT8RF0JvJesT2W9qOd8iiuCVoxYZe+ElwnvvTp3OcIHE671/vn5fvF02IelaT2DbS
maZwmO2WhPIvPAHtVP3SRC/PusQQqw6hBIDaKChgRwJYK5jic+WuVfaUKWfoihRU+6GpYg8dP/1x
XI5Px1MKntVWgVWRouqg2BNpYZMo+FvKebHIKAsCriRixHnmxJ+MQFe+L70MRV4T4pyl+OUd7dL3
+/KahrS24lzUn4McXWlHcrGNS73DSOCmsuaSjVBhmJPfYOsHyWx2lYWaz8Ban8t90BCi+JuyCmF4
iJZSeWeP5rVWpTtEno403m05xbTcWVj6KsNMH0It2gAInqIS6XGKRRyfkBL+jB2PvBCSBklDXxCv
jjq1Z7Muyg9vffV8NauXvSUQ1aUrI71dj+//fj+d/mTMw19SUTWrg70ih3MN6s7fJ2JoI+mpy0dV
OFXTRnopltfL3XAuWJjpQKN9Wm2ktBYP99eL8TPQaNWERB0REmmH50MzBkvRUdIxkB9y/vfpPGl3
ywKmx9agQi0LzTlebLLB/py4CtT4hodcjny2smaHpMJXHmIxVEF/gbglL34pKrlQQ+Bk7Dnt1nll
ApVjWhaYB8HPi0oeXNTDWKwvUMZs3+ThYrPoz5oxU/T+sYgUemhtarZmGSmsRobAjrRnI591j6WL
We5ULf6O4A/vEN7TQiO8AhCuw5AKYOCJueywFV83qG3WJCCzLYFAWFk/fZ9tcFfbWhPx8FILo6Vk
m3PY5hIwOcbReZ2Wo+iBQuCwTI9QKYNKAp4FBQGsD79KBSyx+o6qVqvQSUhVXdAXjftCpG1S6Qn6
ovVf2Mo1rJi8Th+/NwaGLsbLpgnaMTp+lr6F7cMYN1eEuQMkrund29laWXnE3BEdTs7I1gyuMuWG
PPjVmhvNMRUe9+LhSzdIQDudgySpADPAI7INmPmmjWGIdPe8Xc4XYZkpw5FsYKeJ6ElyEn0mBZMq
y+dym98yB9ywuSenHAW1IjnRUpYdi0awGS2gN3Wk/vv88Sd9CUJLCc3PvZtQ/0Va10V2dpf398v1
dj+rhn/NoSPRoWchwp6WvbnydLLXhhyLoHlK9DlhdAHEv6Y2Y72YtCe15aWPhBSI0zCU6xVZyHgk
qi/wD+qpiE6IaNMqBd4pKGRzR5Rr1JRLFVmyYMANGYaaA5/CF6VOJpBimn3CF10NaJ888lCj8Ukr
xJTF78UIlN0+nD3kunNRZG6eFDW2sH2UVdf56Q7FkWEMQcs4eNknEN0jTTAnY3DDqOJbhh+raO+3
V4rWLdEUIcsvLuGaqDlsOoDdj/FNI9Z1oVP0PVuBWDZtAdne30+fVBNthSHxIozKfZ8Pmcda9FWw
PT/WdsZLtHdJ9bT0JxarXrXm8EI8Yfs4Hzjr7XgWCbCcYcKdUrJr2IdFqMs/cDxd8uvpipESBDXE
AjLtRFAkU60+/i4NbKI3db5gksp3P2ChnP1X5t6MsE9BCAJRi7KJ1wZc0JVhS16wZhtahlIoxdjp
Rl5nzYgRRdWlv7GgaOFlF1WvfFH7hXODim5SDYERNrhpvFZQJpsP8eO243PycZSiGNNflN6CQxOf
fy4wtzLRWzrQam0L4m83ym8XwW9be7Ns019YeKdQGPjVonOazDLSAfHpskNlX6mIE/p8aqlwUCMM
7BGrQ1bLITG+aI+liCynqJQzq4vIDSsbGJT1N3z8AxYzb3tUCvP2fKPDwGWdRaUso+ZlsMGi7Ehx
eWp+0z1y1GBZSnkAVRtcQWW/UKRAVX2Rh5QDs2DVuGL8w0qIUmGBShyytw91x66PrBjS+rs3qDOh
0Op5hhUvylr928FRQ0Nu34pYbFgs2prxHDFFKDRlyHTWYSsq5dbr9mtMpxxu3SfFAGn8M5RTnZwt
QK6AQq9tApVRhULFFpGSjWKuDGlm88UkbGo+J1FP9yivNtJr+bXJmcC36Sns8EtOzcVF9VGtocU1
xggzq+ej/Lo/axy+1SWjQGZPau8CUWujB6ywlfLKG37loLRcBS5KYGM+ifocOwlJDY3Q+roIZxWl
IpsrPp/BQ0yKjYDksJFNPH06dpybAU68WmlBCiOm0AtNYpZDLKxVKgxTjrHfqJQvqjFiFBV1oQgB
tgUqL0+KUhGBVdwyVPROyXqHK3JtXOzBlRbd3coLZopcX2cpyvZwwM02qkGjxLIF8oPl6Kx+FH32
NRJhtVKGiHnWd8hkeJiKzCyFGuULK5TjL+sIUygvVeHImjkSnIqyd913is4qy4gnofy8whYNOyXg
4pa9s7mU86r6yMWzIrhYlJOtioU3A06AgyNStqNo5oaFKPBBadsWiko5zboMtLn15ApFsJVNxOqD
A3AqFUIvuu3e9jFBVCmMUg2RB1xUilipupipVypflKEH2MsnjTCCBDKlbMufpZhSphszypZbtq5t
I0wQ/sHZAeD+n3an+fmWz4qIEi6s4Wr+WwBXYmLMAnumGkxIRI9jJG+byNQgZJ2WSeJwrWwt9tSm
H5fjYQelN9rGGAuHG4bi1apa5LiJJKBypR5auVohk7D+ZWFY2CP5UQGQluUuIiW0tpw9KHHPVWUO
yZIcXozPIWaurWYWEJHfELrhZGSWnuSpOaiI5Z2l8wbfp93twtBaWslSE6lKRE6mNpV0C7lN8laR
+KhFJjZWuMMZ0hvfbCi5iFThMHbWBhKVyMnyarZVmnEkVdj1omLNvEiqhTjdVVipoolUWJ6n6xWL
pc6cz8lU2FRcSSQqyKn8QOIGaIUHRaSSORoc1p5gswK+GzI1eOY/XKcNZXhFJCgcOe8n7RVxBYsY
OAF4lO9aiXFTDqmX7HYUhOLF7rQNcckdT4OJNUtAymr1wrSsfizNFO+M2Vy4HYOI2y8LV38SAvR1
+qSGU03mlwG7dzGh6BUa46CJ6i9NdJeRAiULGvqFNp4hUpLn4WkBVGI6whQvTH/ZmarTiWKQAMVo
NvIHavzSUnlDTKB/QC003jUxVA7dt4oVhBkjxTXm7aC362P6XHKmSiWWwzluvN8sImI5isS/HFYt
4QGyOdeSK1jFaPDgkfG4moyWqfuw4rxlLWULCDa0hzRc8MGVGRwpAuTTXMdMGVER0pLAp21n6U6Z
iTn2mmItK5QA3pCbFBVIYgKNgJtEQBhNX8YKCDnTowOz2Tp+1g9tzeAmbhFkC303LsB5w3Ji2NKu
AhcPl5EVtbLKLqJaRJ+dJhrD8oVWlO9uAdYuBagk2zBQC/p9vr0aUfIC/QhqcSkfAXjzQxsk1KH2
5+s5da4/HD1koeweOF88hMj+crqoZmsVgwQNICVtxsaj2EIpjYopWUUqRtAQ2Ngi0EWUxNMEEGH7
i340BW9HAEny+7F1ryrgalVVKpZ7gC6v9ubUMQDQ0Bhy9cXmxHPLqvtkIQ5sjdzCy9V4iec5S4yr
pgX8jE+cU2reddtkrI+SZY5Qx7Juhgq7sjWUdTdEXQ/f8OmstwkngRyO0/5qfLO9tra6iwBHP9TM
w7AU3WYTUl1MkEsxRaMxRR8BPd6/cHvOU7aMlrt4RZbBtbI/XwACG1Zh/QHnDVtdRpHXQw7vwV5t
rObwQ7PgG1lF6zXQBoGivaSqL6PxFYBxmm4OOjBMPG0znUtRsS+71oIuDSPgr/cDqazDbFHVD5/n
6U1lZzkTQlhdYeEnjIX9BLmkdlD6hwHxr/YxrQSHuwFvO2bRhnjbmiKLjZjwUFNmGfefX+hVroOn
HnXYDLv6s9Ls9DoiZbHCOgMTPkY62uRQB1/Mr81BKPk9i7HaQRhKBKzVxId93AJyvMAIuJ358o7y
81cE113m649cI31ZDJGBCg+JHSslECqy1KojY3Wg/sn5Io/b9KTFSdttVfIICfSL6Hr4yGBtlyxV
eYiQkao/llzPTcmN/bLBCyFL8iGZigMWEpPT99tj1TGitANeanJ8k91EEXlh+ARsO5QmIsaIpZ1s
/dEsA2H99DwOnKXW36Yfk4JoaJdTR4AmDseTdXqnH+Cmw3QmFX1fREoqxFpkFvYNYmdA7Tybvy0f
RuToYZJYUPwRriOX6rTEqsiBY4j31ShwHIkK8RKKNeHs+gz8vKjSXLXJO0EC1+keBMJeaYYw88OA
f1Sr0SOaiVKl+BAZwM3N1bFbSg6ficwRxXrMW8DL2zRNpAnIdAGizRUDlFs4shG+PtNxbX66JK04
0OAbBCNCK4KV8pX4cM1BTFTPDiKMxgEeLIAdwSLaZg8t0jZGm3xjrtCqQDnH+NyVhNAgttdc6Cfi
D8ZmynJK0Ueu5kFR/f1uBAZIjyRKvlVUjW4sQZYQ8nBIVTPfxAMvuFsG34Gb/mMxv9R5WGUvOlQR
LKpOLWnDNKu6rleDYqwjeDy8H213mdc+L1AeYXuf0ETU5L7nvgaEbWPbGo3M2T2CSx5VOcs9/sGG
V50evgMkG3ms2philOXrrVas3kXi7ZmGBtUZ4fwjNDHb5lbVGdF0XGxYkp08J7A8ETZbM0PZtheO
LpSZbZuFV7OHJZKqnFcnDz5n1YtYFzvwcE//mgmz1U3UfFmN2bF+Y+bhVlWsFYun7Yg6JC14I+ZD
cakEo95QlmJnp7Tq70EmdUeMcK3HgGEacv6J/TnQ0KD512PkorAq0rZwJupaUBHQgM+Q2ZK1wag1
KveFMJmS1XH4Rem/YHM6WYGHXxT+izbfJor74N/gwkMvpejFaBAE9LP+MAQ6Q7JgDn+2jfxssiwI
v+hjx1coB97UsVWVyqW2dfQ3RuU3Bs8GzNqr40tDDdCP8lFwJjpZUoc/OkZ+NFmYi1943gsw6Hvl
iy76hbaqB95TkQp0xIRmhaDhNejL/fRlJVr2q1xQGwQ2RL5VhZdird75GRO2vIkzpokBhJqzMjx0
GwbxKFA6XwI3qWIpbGqztt2ben60ZmdRhIE8iAz3a6NJ/va+Y4NV06qihgQ5qhSwrx6TZlOgqGaQ
LbFDspWf3DQUrSwsmlVB/4fhIR69Eu0Ou9gcP8og4ZZO9z1N6D2dNLeliZDxFQI4Ndib7Vo2l7FP
ZLmFMPIq7fZjOt+oUmNbW1BXGGgOeQ0cp60hNJbizkEmFBFPHMZ2Ms5rHgKPTUaRaMYs5PW+LMdJ
zUD6rWHS3JX2/jB7OeQzsMJdEMiDwYxKl83V4xOlGDdKVbkRIGxRD5Kd1tc9Ju8pW2RHu5CJlh7w
Yksbxgi2wuMQVM2hKqPIGKk6wOX+lIs11EI6cvQLr9snraZTxo8tORuGoera9QEBBDI9+W0Z8DEW
QDkYwcEFMZCEUbNobSwJrgNZ5aJMNQfOZX0N28Q4f8QiWGrBqli+aTXFVYtSxUpALMTorx9/w/ji
rx/nv2kt213U3X0cXZzHm2uKCAJnihMJNzRXaTPG8CM4RABzQ40tcaMhXLfrrMUeOKgkBiTITO/J
+PT7T5S1miaMgTe4OQJ3gAQFGUvxrlwTfhODWPO7w4JVfRiL3ZlfElYv1HGLRi1dZMQLidAHcKAW
txg58adiq9Ux7/khj64d7BikMuwSfrxwHm1rOEAUoUe8X37kSM7o5xk56Qme63TVQjkC9w1SyqXN
KV+ut9fLC4wE2n2AfISSCLBMbUkC/LMdInY1vPW/jwD7i7j7fmCMJgHLVUrDNhMlIEh+HJe7LdbX
oYGqQYQIW5TZtBlfqC0AwbKFY8OjPoxCg06n99dJO+HYYPZY+EMLfvSpMn3e0PlyZg8iy9xjE8EO
86x5ux5fXqDTD4BK5x96MQaXdAX90gAKS102P2FK74TTD7xlIp6gYizFUtyxak2N2YoAP6XeMKo8
W2JTifuQNoo/P2cOksx8nyB1njNKa57jLSpKCRcb3ZL/uqto2FWQrhoitQ37Zbm8abqXI/WdbwD3
45DRlBRJjy9AQvJpgc5zfbPPqC+N17d/DWb05epMyz4WQRYJDyv2VH++5HgiAuEEM0efTtP+O3S5
ag5kwY4AdfB2rsnQyWOCUsnAKVZDIhxOaFDGMNVg7sZY8brzimg2rfa+wsq+YaWtAeR4g8lXC2hK
VpSZ8pWStSsY1t3w6NRxT1NGThRj7Awd46KtNxtn02EafZV7ubod8CeqRk69eL8cz7fbhQCUsKp9
2e21gkhZj4z41YXrw4mIJITThKnhG9AgKwZMW/XOveBoPyiqA0PuYhTr59vl6aQKzT6SvdgEX61F
yqvoJIrAYd0whKRmkyURmKi1wETzECgLk9cwdAD2okVGCjl4oBoT6UPN12qiGMvoktrsdc5R6suI
bYl3rAmbMWKePzpGyrhN6xdVkdoIH2NCR0g7vyaC4i1NKuhwghdrlOhd05jCkCQ8mF6QEpie5mEe
rxdztapjFsGV9Fu6nkCMb3FdmjJIupVj4ozdKMX557ux4DIwxmXC/Pu3G+T0L9d/P57+y/oAmhXZ
RMbtpKq9RBSThi8oE52sGugiJiUZDJm5pdaoamJotFx24FFDnZWrSTDuJBZdgivP/YvdUjUHaEXE
OOzTezV7xPQh1vnne9r6WKNyqoy51sIusSJ9i1lsluO5bBvKZdHHahVDa3Jb3ZlAGBbD1cg7sJh+
Rqns72oLbSzU7nLhWsSOZySUvqhethPR+WhOYK3XRy5WaeBkiE1pkVrg/rZo9a/jbN/n+R2cEU2T
9hEB6rHc9H6iik1GEaF9rLrbny7Lyh5R39sQsRjkrJHdr2rYWJQcCfBGw2d/hMb4bbNbylidHNRc
UK4QjpiN8+uG3qu6j7W2W7/Fhv2Al655bR0zqB4P3asHKGK6vL1NOyNEnqFYcbld3tUqGBEh4kdy
O95O2ZhrU8R65DJwhNaJaiMjmKi7DpjnBK0E1H+IWWzNHeAsTyMa7cHCXE6QHblddp8zePwvKrRm
GZNbYFa9Hg8Hqzw0kTFGVKSQxx5YWRPFMfTjbAODJjO6aLzMVwP5ibOZzbVtpN7W9j9hTXS2+rOq
Y3VB1J0EuUkoszVm0vKupigL0T7CrwEl8nU2Umyx87Jyjypa6/1BkKbwuHN8L1P6ooslxb1qlpK7
MVBdldZ8cb4FenIUssJT1noAG5ZjYPg1VX4mnTrk1LqxoghQjIKGkBVn47XoVBMFrY32CPtUZrYK
WOSJZRIz+uzzLT6FqLrnIJiPyklTN5cO5fQ+CNaufJxxsbxCkHzSRqOVbDGKyRTEYS+ohhIgirYW
kYVRg3/ULM4gj68PdAmZqP5ClbQz+lWhxB2LoLtH4cvnLbOaoyDRBuKIqb+hIaZb62pMrBLP4CfU
KGarbaYn+BN/M/GuwWSkkqc68PSRDPbWXIQVkKbRexoCwDtKQ1tJF6NCDgylNh6w+ZK0ysbRommc
ogZBTvC9n28KkYIXxAhb+9d5/x2C/hxEVB6aHZRoqTBkFgTkoBcFDmd6Wi6ne2rQHdzJGKyjdKz0
ffd6nZ9VDwz6NfmCWSUSnwCXHDAchNM1YWqy0Qcvx7PiJsJFFY5iCNdWVukt8H3wQPMEs6Z/l09S
lk+2yV8dPF+KlCJxAUy5vs4MqILzEgDPG0PS8xlikmmGL/0JiMgURsTgPDG1nfy2jt1HChANz66K
bNut36rvBbJF+91n8le7JnhctVqniGfXRA87fcVDGzns4Pkejsu7Oe8cw5ZtcECtWl2KB1RGftmy
1fGMs+6gIQqMFDvZOmMHQv2L336Q+RCCDMgTbj/oEvEfdHh8oF1F3jOuFtdIZXXZFTZ1RFym6qTx
mPhcueg5QBohzs3Jszbyu44dXTp+9z5fsZJPixZghZG8OleAgMz8/6TPz8tDEUVbC3e0HtKbGNIs
80VGYbYn7OSChYFrH/D1M49gUIo65F2KyuIy/WLHOnIsVO3pVAzFPYEAZdUJ3EJxquA5MlmIODoU
31RVNIqC2NJ/QAWFXuEADDFENkGK4vl6ebOdXqqaKFnq8/CZrfeRFttFhKrhEog+WrI3TGRBpyG4
Z/Jlpak2EWUwnS/nT5gPbQtQPMKGEh0Cnq6C992plf94TV0g4huxpd8d/jbB+/1F44x6iCx+b6zb
G5vaaFPExpemr6+MKB7iABjNejlD1Qbcpk0nph9QGWGld0CatgUfqJAAAC0tY5kbCcnVgnAY9+Ti
y4GMB3iBROF1ScOtImvzq2DA3LXYOr5NChMWnrUFgICxX+brv/7ylz+bj9On0XQxI3L6NIf5ivVi
yy0j+JsiYg7T25n2e5ilhzlt/DfL6zxTFjV9HEXkOELug02lua+PqDMXjIBIS/qX++CX28QvU7kM
xEHRxko/vNofLbyIWrhQ0J3HPl+a5buIxdMOfdX1irgfIhfqJi9d3Kge9UbrOmoUDunfjNm9DwVz
GUlaxExRZ0Dcz9fL5aaY3p0/KwSILaOvSBUwxRhIcnpEf/v/3Gdjtkxn8wA3OHX1GGE+CuHTxYMC
OM3TOaOqqoii9NqJovDCQ4ybmpmltjHr2B23kagQhIdKGHPsG9yImI0RPp1/PimIs3B0bbDnQm03
Q6aLRResCN4qe/sicggk/VipWNdXYb6mjARLRO2vsXVPNGgKx3ql74QlkKiIcowTVk7aMQUU+pgW
KVCUYEo5BFGHTu27xFPuItci+rrn20Lo2wjkNJ/Jzrk874zywP9I1nP67Fr+AQmtYWwdElpP08FY
N2kp2zRpVwHDQZjKI1FtFvMC011Vw32IWD+sSw+XfXopbUT08thqGLs3nbRIV0wCXmfX4q9VF8PC
WWoz4Jx70GSD7ufTKet6tRHZs95EegttVHV0aWNziFinbIg7CWekHYm9jC0yRn7+6w8o/XzGCLOt
7XKSH6eL8tCLMsIpftcW7Th330VEX03n/esFfnyf3kRRRI7cMYoQ+2kWqSLSnp+IkZxzRtg3sQgc
+WJkORqun077nLYtI0/VaHsLqfvHGSqhPv+Qi7tUw/pSbZ06lZcv+M3y3bipqGehgOQEZm1yPCQj
uq7bp5moxWq+JMqSGeZ23ah8OE7mgg7pRuJxiLQec7G8MBNctFnZRB/pM2dwxi09BbQmTwdxAttV
2QYchaeVXk0R63rnNehjgvxk3XWD+hXaQmfRO2tkwrNRb4u1IpQhWb6aek2Tvvy38+2CDSK5tlwG
SaMzEkOjVwyjIZQQz9SSZ6pidUbep3s+IcaOclZMiB85VSkuyldFpBuff3758aJ8y4wLdnRphzL5
JdO43iXZZspoU7QAlqxsr2AgcrHKwN3JDmJQysV4kiJpBNkmSPfoL7gog7doe2mm2/X4c6fASpRF
HcBjWCcYoEHN5e+IgPK1vwQRkxLv5Gz7PJSraAPhtf2haHvqg1UNwVloD6yKnIW8PTexXNU69Dj8
dWC6qZFL2CCPiyYmWS/vbxcYpg3osLOxAS632wX/DYS4/MkoZ11FeETuD4sEXUsF1g8qO6xU4U9m
4FWVkaMqZG0AnMen4gYVco3Gi2DQGdNc21ARiFcLMmM7M6hPQ720YuwCXI2OtDvaaKTZbVkk/ZsE
YC6EFWxYsw0OhsCuQhKUqLk/vRuD9QQxsPvb/ZSO9wLtytNuwJVu7JypvRHSuMcAAjTxyJBOFVmj
oEJln+pKSkdBvFKrdXgRS/J7646F39vwEwVCft1hRTTm69N0bFy9DTLDRo4/E5AlTq2/35JSDEi0
Q7AU6dxj8s/4AoAeeH/Cf5deiT9ToVFX/G9zxB/HVNQYj6aNHA0Hp2hlPnKhmFR4T3zOLDU+rjDf
DO4bZ5Et89uR7symg+knCDqAuFMd/Qi/0zFH9dhtbcf4AFD1T29OpD+v/eccHLYBcloNDvTRI2t4
mVXkMt+vFLD3JoLryEl7TngRnjEg5NsFWT5KRLweF7u8+/thuik85tkUe+lqQeqwe/p07AHFUieF
x9oyOKZyVcMe8r2bPodiRtUvQNrK8zawT0lsGQa+XBn9bm/+6YCRLmo/WcDrhgEmYO37bjh4xUru
E3mz57sasBLEloJCWNExp39BtjwVGuQ/pislDU7zVReYjT93W11v6zEP7h1ZcNKFYB+n/Xf1jDp+
TAWCJwgrfuWe7HRp0XpSsioDCf3+889YA+t3DiFGnVgfkRiWUX/DNpsxkBnlJplBmPfUCP9b5Ifn
7BpKR2pb8WZk7vm766yhwCEFreknYLjcjTnz6fiyO9/fnpSjqpghZA+gq/IQp2X5jbaXXrenJ0eS
Bnq+TquMnoWmD8XREtyWhQZS8iJILCYb4qzp7sqtMc1YbWR3FrhT+gk2kWDXbG7l7bhkCv/wMpjR
aHB16QUAzli07z6jO5oyojtYKNohNkjDD3FBUIbFWan7y+n+dk4bGWXMpPsBrQi58xMbxIbOcV0G
ZFeA6RPCIMNhworh1EcUXMhwZZpH+D65eH9t6qS/9koau7uqwObLS5U6wkuWP42Ecy/QMdHT/eb/
3WFe9vP5MCnvsPXU7SjuTrIBtf79WWhqL5GUW+8jGtEaNMfz63w9KmKBzS7OEWtqzWgkPy8En5Yu
LmtmrA7T38Fxortz82eaPjS/SjEJ4GU2/untCuGDd/HKIVUyW5Q1C492XN4mzZCt2qQnBCER8Qou
z89gBV1wWO4sgi4gS3B6gHL1lVelHVaj1yFj5sz/poooz7hHlV5CHey0jjzKtDNWd5GH4bTqA78c
yTAAzBnzTuDUrPC1/8v0Ptl4IUzXMsSUsbyTfxe15xqRxbfv4no8XM7f76fLPf191wZabyBP++fb
6fV2M3eNqNn4XfivoF7m3axrvn2+zz6Yk44I9EMk4Jog+f/9y593WNbmY0TBjwEe+F75qS6M/FX/
wE/9/X5MgQ4yxhoHTovYT4Ee2V9nDANOp8XVl13eE8kN7kNd5yFWhJfP8x6qntLVzUSqi4SGVqQc
/gt5EMp+qyAUF10WTNp6O77hAaYptRxXHFFzjjFabgrZdDN3bnSQtrZ2CLIVnXbteLnJuhIGlwki
UBu4yOgU+RPKc+AA2ZBiHEndXZD5nyhEy/ztBCfwtwVBOwxh5RzK/MN92SvX4l8jME/XZBe16X30
fZ6pz0aB/QRQHMIgVW6j84Fz0ORN9DZe5lscn4qHbhOF2seotV1CR/oEFdUTDPkA5TYff6jPuIqE
VLOXe789l51CtIgcIw4b8fJw9RP6tbRdJOmiLTI3U5Yu21+PQDCNrMs1JaM7ATEhwH2xjjcEYxQG
6PJynKHa4a+3i/7Auz7/FlFkuOPQpxMyPgDSFGGrFU1jBmIbPDD8bv65n9+TlivRZPRvdnrVG3u6
XDU93+SV7/lCy6NCU2VtnhYE7NqsIv+Z0uPKcqtIijvzEwSStY18/cX3gDrd/hfl2fKlNZtkgZCp
G3+i7/Lqj+bPbTmHIZaZzAovq/SURY5rK8k3dUJofzkaO/gFv3ybqKWSoHYgjk1FfXSZ6VwUnAK1
bVcEB2K9O8yPXCgVJYA0dqvfjhIFrDqaMVGExko6t4KfNO4TEWpYVTElPyZQsCIUcNa5nw9HzDCm
f7mIfAw7NV7R5BvtKMq86JRGR6lD35CcK9tdZG/kNJ9fcEaRDk+C5Dq/MGarFTmKQG4j10fIyaa3
9Jel/5KjfWplC37V+q+4rFNObdlPCzYvzRiA+KGca+XZiVPkq4Nw/7jpJJhdxOwtYmuLUZVmNX/H
JaRsymYUz1I+PZsRwdKxNDW+E4jPVrV1UO3HyPVU6rUNur7kbCnWJtCYahuiP5HvLUIhgA6hVkkN
nOoWLfzKzIiBq0vE2T6Zm+b8kAApuM44E+6gzHVBosNqS6Jt20N3ZUa2Ap0yVvqiDBwZojUvyvCV
oYhNhFlJop07jjSVMaIBJU94iAmaRZzecKy+RSGUrpUZuE5N1F5RgI3CyDvAxAnrDNDhRpDwVQgy
/SveKGrAem+GKuyp2nLJVYRlIajy/TN/8lyrIuP7q2Ja/cmImiJmsrJpxsE/vT9drn/wic0lTSl2
5DxkCc7EVnZsOZYhEnOhc43UIKfJ1BELmMg8XTaupIiO5OnS59AGz6FTm+nxgybC9p4FIXqZXtwY
OfPgxdgBj4DglqbiV4zVT6Uz3hCRwTXyz9frBXs6MvGfysKu2xpyuD0LKPVxAWQJstPo74ikGqeC
hd2EytHawealoELJkJ/JcAeO2bE41S72HHzvfZNTslodSQyeBNQEVkW4iNMlNf+3thME3McQYzZ/
+sau5Xa9A5QP+a9pGhbkDxIRrR/6Y38eH9fuPeUD4hlafN0wVQPIZe9AYHrXDtCNh8SB1zWOWJI/
73FIEMhWucbaUxGAsETDqtTdy+nyZMS6OBhlS/5aBUgm38h5Vk+ktKDekBSBEEnXBmdqLMs3quAA
Ly2JxIrrGNL7ejPO9PQyZ+7Gr0QoTs+fb/frSdmF5wshIAO+WIxLcLu/Kz/v2ROYbCi4QOx1Wv7j
4/yfFGT5TC9i8DeLkbZgA8/mbS8q5AHyhl+DQJ47zIg2DP1QROt0fJ73n/uT8tYGf5ZlhwnzbvTA
Ere/0G34gAzMb36bb8rluom3bRAtsMvxoRxXLXWefsAU12RTFO6U3xJ5rsFbgtk/me89t4kglv1a
e8MWZq8NOpvNI4P+i78tZi/z/q7+cjm0LAVK+rNL8Lq+kpHvGjHT6gdZuntLgo4j0/MZtjV3uv3R
8cv/QVL/grLkr3vDvRwdhBqRo7LJ3usaTFk5nO7L0+7pdpmU71gItPhHH9NSGyR1ObaBpKbDucOZ
TDj8iuoIlGtiBuHwWfREtoVOKwdDRERF2M9tLgk0istRBFT+PbspCaDzKg9BZj8nFQEjOy3rKTKu
l7rCw8uDTWSJnS+6iHJThWAlUFjcsJi8Xf6qjEPGb5v0o6XCS5wUcNbUTMFagpPK7iQQI49sM+UQ
PGeB5AkFj9d3yuejsAKwIryuQulTKatnG4zHDLkfBRFqO6+N7LCXuSjH2UeI8VPLmg7l6BUWvdvg
JI5vc7JbEK2hIv2xeVqfgEAOTbzG8H7a6cq74xMdeRw1s3cqp073wV9zBY1bB/br2ykFPFZOF/Aj
PxIxZFfc0TxdT5oZwAtCi6wq5JKsclQZtF4bQhR9c62DLh2TrnaDd96SBKxCJBkcp2vhhpb0t3So
VR0EgRezcYBtOhl3HIFBwVZ9vZwOqQwZoBmSeVqFLejL9IPqS28Qcru83/6dJ+0kKZEMrMJWc2fD
TOkKYviYKihpGcIdn893RPkzfpze7Ne72h0iwcYZRB6xnwYyGNdplwxIwakW/kaEEnCNXwSjnY4I
4QZaR0CAYNJl7igFBllbHASKII/pwxz4PAYBMwRY4pbex/z0/XjbGZV7df8K0tbpxdWeZ+R4ID+8
HSPym0t9gWLXed4ZoShjbMNl3ihEpWNn0dKGYGmVZOcwiJYuFYIFVG2EzhHAHYH/fsxUsUBSAt7r
+WL/xawFSWGFvV+hUI3+2Hiv96e3Y3qBZUFYpVXYxP1IB0QihDGu2qgDS5HZnsWhfzm0IE8vfxdU
frx+iY88jNRpcu8GquPQRagC0AHEFHKM1nb+NUC7UWNrJG28KWFl0ukUfDoM+P18nE8Hc9YElWr/
IVMPBW+arAOUkwgGaPldMNUR0FqIXpoMOdJlaGuSkBLfb1nP6AkJSE/3ve2OXJTvW/c9dAq0Rfi9
Iu7x48r/uBwsaz9OJ3VrL2jLdoVdbr9NznCkb3v/uxIe1n5ry+JPfrDTdDD/jyZNL8qdUPCudH7n
GFJ1V5EK4SOF2lFwJRZ2TM2sG60oSVksiND4+7QsCMguFLmdxwcYIcm2cHjFPb9iYnwLMn+/3Syb
Yo85n1T68bFAEBa904qQesfq2veJBlhRO2x6YQXbG+ziQBsPCRGoIX5X19OMTaClKymgHJG0IOpj
gujRSqgUK6GLiPAo3+0yjAc3z1YLiJSuCE4XXhGJW3QC06cateJID0PsdLoC9AOA1Z8tByQnbOGi
WFqLSJlVJYgpBs08PCLSuCKLIoPJE0FqUPVad6OeZIBLbtL2D1ZKZtRiX8YtCnc9GG3ECYhG7R6g
BzDNMWzUrdKOMMXvOpP/k82Nkx5r5a6qQuxKvnGbw0ijFMAOK7YkBgwsS2qYBraFJemZM2TZlMFz
agIG3GAvlGVg87qafQlsY0cMZB8ntSmtTfj/DerVCLu/3nyn4l+sV6G900aYbB2I9fibSFck4EsY
i8jpWCIgNI6nk7KhbuTD5WJdZ8DbabO+v9Iovtv9mgBbIlaMrYatR9t7qjNhWbDZLkSgV5Ro2H28
XnB6vRFq1ozgSc2Iv3q4vCUnNuNVUsR/JeeTxQ345Ovgvliu3gAHRFRyEybCLn31XeuvHhJZjbx6
9JeshzLBZMRfJ9036Vh6QQKmbiW1t+mnLTo6vs12FoTG4T27mNLkQmyNZbnsj5hHcEeOBagKP3Rl
HTEbHt5uonGR1LG/JhFvD18czn36XyBwVf+76YuIcLMzw0hYwjAY6JPb06tTdQbLb6iwrbrAD3Ho
v4piHZshwuWPinX/eTVvODFqgwScP2QRUbXYGIYBThakAaDnEvkrvCuOcAj328lJkWHdICXZAOFh
LsZM/cN9MaaXu7ydrWDfz4o8GSOmzGmGgR0Oy/X7nFaN/RDbE6FOLfP9cCF/W6nTwpNpioAHJZri
7ggjyGFGygv2oyv1BRiAaCInY5UQ3RjiaD4Bvujx7/f0mtomjEcNAfc4Wxeby/L3VQifH5bVN3KH
3oxy/pptH71AMuVwnV7S2+2YMFpJ62Hpq+EG2lxmXGjjtRUUEti+Gg4lEDw2TPtTogcsBFbju0lg
pids07uvq8ACqB9fvX0yGS03tkXElAAeeJtvr5fDl7SJJ4Ul6q3trrxZHwqBWeF80SxWomVFEMRI
2ehZi6sbWmlUVGOckFdNCiH2Orme0IbdEKYDujih3H4PFE876ztgzEXzsUq/QDHViRaIuNa5MFkv
ncROTHDCpVHNpo1108JulxcwMEWPvR16fPpUe2crX5ZmB6kVmEsPounB1l0jMza32sHvFgdKDddU
vkrMjmwaURhEfsi65vP19CmGVqj4ir6W1M6FFlWcjrbtxb5fT5lxUDaKvp74S2SW1+m7PiegdGAA
dikdhspcGNYqf0uNqlRR2PFM0t0TgQVZEascZheb8EqUvXymI7Wf2jtclJX7WU0BBhHSxBJma2BT
p7dYNCMkZk63FMMf1y/OLdOSz91TF5lEvv1VKKWilS90poXCmis3YIx+4BWgDn7L/is/Wg1r5AIm
/cdPl4eFBiMqHP35hqZshnuHKPd+VRqoYYXKF0PagasVDlMMFkvV8sHbUDi3LoL5rz74GM18WHWq
p/P6wctgjBCwbUepPKFAcZmknNNjrMnS6yOhFEp5Oi9WSXpWwsGoMJGb8lb+I5csbLoxUH1d6EnL
YAzU9qP5pGOpkfnCjieaPzYH6S1pY+zdJs1WbDgpLEqAnS2MnflLup+EDJ8qYvhcEfdVWBceBznd
7oA53S7I6bYri3CG0jQsC7VYVUp21h84zxwnkxwtAntGT59K9B+9qC5i+9jIJLnRmX7v3tWFPUQH
KQBMb85OqEp3RuFiipghZmUD2rwZjFt0NGLhN594yMwnRApjF6kj0PLcTdNFYjMkv/ABT4ttfbqf
lzsO0dZCGhxOApe7Zb8fd+GAcQioWrkTljeCb9+nBS10Y2O7x6nkPNqI77GSDhapzUYklGAG508G
Ko0Sh0SzH8/aM+yFA8nYWxaGzd1uLNtOysT64BnQFHIrfHiigzR618ggI35BHtNC8gPmmPiauihV
dlmLUFD7dy/SwDChM0Wlp3L0og4KoNgOfDuerRFo3JYTlPgRuyPuezoui8rJU0YgjbIvXDgF4gTv
NkGQEki4w8KvrXwIncEsArjo5+N1VrbXOhJY9Bd49ao30Lu+C/xYRKetb2ultLb60v80J8T9/Wxc
fh/ccSuXb2MmeNFYK5FKIXBKrwiVxNpnx3tJk+j4Pnu81CCrZ98u6rA0Dc8TIujrOSJ3IT3FwlZH
SgvAmcEwo/yszSPoXfsNHYVAA6RdGPsBusAAIyG9hzp4MWPAlVTYBfzhMEPT74M3U69ZU8Q+1b0U
Y0QGuLX8j7zi0TMOopqUto7Z87FPuyspYaQjuKdgcEi3Vk8G2oG8G5emxndIoWfHizc3xjbAvEnz
QqncJQT2wNeHUjAXr0uvyEvjAV2U1U3Yem0Cv0sT8ayFIKjBA1PNt9713dkT7vh9Ppwww8BdzgrM
IZVw8DGTKyxqx27zu3mz8P9gKq2iZcuIQ5FKp+gOT1dWkeI9lqkkmqEXSTFyu4gFYrPWEyQJrO8E
xYzXI8x6XjtTSkbbGxRiuthD1E9P9nZDETF8YYjHf+D27Mymb6fpaT4lBjuS+8SuWI/ZlX5l9dlq
irsW6+XwozgtYfqCTDlfoPnjZjzi4zNUmhzNfz8otjCbgFISMOKAWr9ZFnXsAu0jAUNMcZX6mP3a
dNXQJEbW4kG2sQwe3ap5VMZMPVNRjG3dMf7WonhHYx+U6gRvXM67xmig4kKWka3wGRotiH4s1lr/
wJQFcOBZnyFqD7iPkHY20+UO0RRVclBqr4sUh0gn0DpxV3h060CFH7lt/vuGdwftQ8EVlYFOV/lp
ZKf3YTyRxVXRqwWRpWOVMP6VfCHP1nLhlMizoRtDpoUeISUSLD8QCtv8Wa1tlHelPjoW/3EJB6dD
8hU5ovp9XIlCyjfbCnhwPBXdUSe94BNiOdDR0k1frkoJDVe+UwOSjAPQWv74H39R4lpdpOzc1Wll
TV+q0evliTTF+kSwAQhtcZu3VMIaPUeQxEyXaACUXr9yUUUkfJRSN0rAomW+AWejKoKGh+tNKZnh
MqmHUA8Hw5QhGxjnEUKa1hDxlXxpwcX48mC9YMLaiBclX1236VJCKpnYaLtUXBNZ4x8tk3IkHB6s
ElwrZCSnGcPKyhtNjVY0YB9Rno8VF9oEkd5ndtYdKU4HE2i/XiI69vEa9kz831aM87cjyoUinqV7
SM5p78AzELgq47CqRkRI9nTFNFZqdJF4tQxTg1Z2mJd6FH4YeIeg0Uo3jk5QW2S9lVLkJbL9cNDW
6WbMbiuCbEerptQbUWYp6smBgSHVDpdmFqi0zHR1E4mkbrUKjB+GmHr6iDSyB/qI3uDL1Mcl0GWy
5pGNwRDsRD9hQaiD5fVyP4HTenMZMNSRD37NokRE65ihRJycnVGG0jNWrf2G0fE9Tql+oaO9zi/m
nV+nTGtJFzH+HlgEHtflTCL6+/z5dJmuSvSZi6Ga3susMOgLbuRfNIxrivhWkZpnb/TqZaJl0Q8R
2efHHQg8eBcPJw2qlAqzc0RjUuuE8nT1R0olbFdGDIxQe5HKMrrLF/Zv0F5DhDnWLuBVywoZH7CO
VGxR8TziudgeA0xebeulGMY+UYKEF5kviymLxpvt2EZeijZsT8cm1/UmHWzz7JMVxM7StZaI0h/H
TQLVuq8wYX4o1xbrX7Bg+jQH4uOMNbI7ypW4KjKf/3SFZEpdqZ0Aub5YYZHm76HnCk545O2QztGC
utKVXlm0nICs4BS4IMzsUqv+qpPi3tVT5DvYRkGFLRLR9+e0B6Z7rj+mTJ6Z09eCx83D+D8gpv6T
4PoUOdwGd9NIh0P4g4rHMoSFh4HzJDpMlEgU60BRCSLv9Gsm1jCIPcEJ29qagEtAnL1rlZpjFRxM
leY4UVRTafdURl4BdDtN58NGY7YRPQTrEBEWs79dDsdnpUhXrEFqEj9qWc6RxwriXWjr6q5Hwwe/
KttPhmCVx8YOo7WMhB/DFhuYRGANqaMDkNyQsilTa6sVYmXQcx/EBi2yRT501bfpCIgr/JIutuJT
xOrbH4Igl/stEwVpIo6Fy0PirtLPRXBW4Ys6HkLSmUrdjt0RsYLHpijMUdAoQaUpqol6+49FS0qN
0hBp2UGgLuvNODciW+7U8vkEKgdjD1hMbYOmSuShifRUcH5stuynDK2jvESsKtuwBhkh6OwFyl2T
kd0QMR8eGyhbpYFyTFwSenqUDZuuCsewOSSqKOn14P9eZq+NPeQm82DFEx4VBMHSd0e1j02kvtJS
2lRJaMsDajHfmeIh5xlLDPwcmDMbla5wVSDSKmFH4UZSPVyT7EwyZgUgpCohzDGoO6tXt2rvFmzV
i9ZR0hZl5GpEaZGiptjGhf9rkx0XSqMF2xQ1Zn86NeCotJ+KOj7Kbw1B16e6jLZrIjI+2jtCI82U
vl4+zhoY0s06sc9+PZTUDrPSHHrxektvkLBTY/6S9Y5EmRUrnnX/8+lyUbuhRFiWm8qlE8LaXp3y
TL5GbEXL7f78DDGot0z9iY3qVDFLzS3igMbj+WVRzLQusiMRPLWvMbuUkUMJQh+6Gzfv6PLMU80P
80/lrmMu2PqifNeRrlk7ViGip0OPISgu6JjMkwvDwYUzn77rTUedCDxzBaS1YQhPxVzeGw3NQPhc
xY+IHtqGXrhmGDkJRIgxqvBRGmFFFxuVoPexPl8YGZxv9W2DWHorTwbCbFwvp3eaDm2Yt7XxLReh
ydq9LXvfEvEj3dwLhBSf3FMDedaFpTVuQjOqe1f7aAs/FUmbbqqy0D7buoWrSD9tkMRTUbopAxFL
OJ+Nq3M97ndcTaL08YUZlFTr64sxCr4reZg2CIg2j/28HLbQfcSyiLYFWssz30Y/Fm0sJRScKgAE
q5XW5lw5EsflqDQTEbIEy5LfScfukqjPf3RWNoUH+kqk9tGWHnlJD3kKRTSPkfCu06XQrO9b+KmI
BCxBNEEQfU8JX5QiF9aKV5/sp93doHhZ5FyUuvcuMJLatftKld8booSi0VOiE3ppeb18IM6N1g/A
tqew2ObzngqdszfQsuwX0N+ukwc8PS3FUkck66M3pARN6jLdhrClgUAUQsiRq/S+AAoQTA4P/5Ar
nTdMU0b8O7iP35n7gJHY/0rAJJu8HCM7/JODqm8Lc7KZvUuNvYstqDmZgboUw4i5tPYduPdynV4y
dmwZAnN0icZ+ozHvmYTzGEtHPTrpteLIxQAZXVwIAqnZaQRoTcUSkLb2dUtPR8sFiwLo0srbCRqh
FF1clXm0FMPQauLdyIZYlsvj8QOIiyIY+j5SAEOCgZJkZMEpN1nFSqa+lvsYxjKab0bzzXOVyg1t
DNsjWhJEgS3AltUCW6Nwt/jpSRxEZ/3bMSdozOVSPH0RUYRct3g1qiAHfm4TgEXKxXUjx+AtObgX
xVooI/WYia5Mmw1AyDBjmhuhcThpoU6ungV/oW2jsR/SovuTESAwKxJyesb6PGllxmUkn84BApw0
p7tQ5h76SBek1e3JIV8Uja4iVoF3M4RQtkIVpybPKhpBK0ClCH6jtk/4jXx6P9VBN/1akeLnN+A8
H99Ui0NIfthHpfhTMdUTSpUM5lvbJ9yEp/mK/3vbw4dXZtUlHhcuV8HhQI7yEJWi2NzNQysLtWKu
9kPqEAwR/q+X319ADV3T7mLt56khMiU349jvBYpdBqKybgKIyipFxQEm0/hPhZ7flaiPc6dyWYiX
CJlu5+gqe/Tom8JotNQEpyerG7FRoQpoBDt0TEgt0Tp+cu3NwLIN8JstLXq8xDsZ1qmYdTgf+Hjo
xrhdRIPPNVP2i8cvDqxDW9uCwz8emvghHNuunGAjoUjLMU9wY6EyEucj5Ragx7NAS1vZd5++ZGkJ
oK1/P0Ow6p2GoSkKs/ZpfNw7JKjKMTjOzT2AtFVeJGdH3VazlZe1n/Do0WxDCkm4Sjwgz3Ilzevo
0u/grgOZ4UNoAnzeJkrsCQbjqTKwqaQMtTXZkgzpfW0oBNEp/XI4sGzpPJ3uRsJ/HPfK92WX/n7V
aEX+lI6uiQc+sGClqS2hsEgYOH+/JxtSiQP8TsHTG0L5CnFCFRaGSDSK9NnSVYbb85wIzW5dcGLb
oHTo4Ed+Xt5gYAbgPnvl7vlVleunbzTOcoKwNIxMOKmRydp3GcQfKDS3Hm+2iyQj0vzVg2s2lAmR
tqUrkc7aLwujTWUR7PHjdTauRc5Y8UuiuUHR9wpi7E0tAq19VCquAz0pYKANpLy2ElGZiPExvd/u
V5Wna/8sxIhWVUXlQhZ4kS2DmReMGBVZIekBqFgSGG6KKqi94AuQbSzl7/Mnhh8y3FqtDVCc9GgI
1kriJOZuSQ15tsAc6HsrtWRdsnbRIUzhQKp5Mbc36xCJHL3CrvRB0KIOR4vSy7glD+D/WO8EE+mx
4np60ZLosVaix7hPp0wWKSJehVivhiTMOHnwN6V6zvheDoXiUyvZbCOjDR7qxWslNtxGOt7SJdQK
a3VxqDyZ/kTIJhuD1NtwxyYWTuFrstb24sqEcsk10Z8kOh/cTBA9WTR20RJ/V2KkF1yUYzKAqja1
U6Shi9TTPQa+lYo8BouEA7U5aVtBO//JUPoj3sZ/zcvxcJ9Of1XbIweBo8OjIoaqLRSBU6TwT1+x
u1uPdnRchyvnOZPU1TtL26qJ4JNGknNoIV6V8IhRuDEQWEJlesoUBXRh88VvLyXXijvGiBDgLgOs
zNMaDIrI4BabRLXGj94NyTyOg+cr/1Zd+G93u3yfz1plCBd0NPhHu0KKQawpGN5j37shcDn90Bqg
24iC8pbXGR0DGKd7ne+L1jVaReRGUHOZq2sfhljpxWOlghZfj9XNRLWGa8hVn7HRGn3AMOUK2Scj
TAdOCiF0SivhngWQQzYH04mhRuzPMuP64q0nW0eaq+I0vDxGircOZjsn0jmi2TMTy+SkhpjT+5D5
yhfexBrxWY8Zw+hFqXRow+pW+/lv6kRpNAEyROT6qgEnMyOhrmJV20H9we2C1mUgGHL1CGOkHiFI
sd3Pxz3kA7JFS1XQHyRKNXx2KF+iEe1zCfZop3PfdC4twqbmfku32dH2kmfTHmMd677cUlSr1NE2
kVYUo7o9EvcBUEeuKlx9l0h54wqCvlwY4Y0VoOf5A9atpaFizXEaDod2vTFkSuyo/f/T9qdNriU3
mjD4V+YHDMvOvnyskqq69Y6qS61UTc+XMRmDZMSlLoMMcblLmr3/fRzwBfBDAH4ipWmzvpV5lcfp
DodjxwPfjgVsVhvGUScADCwTiMbQnE6qUXndgnJweioGVagOx4CgkOaNMAfFcI5m4RWTQKa0dLGp
z4niWgSKIXTckBW9xH4OIxUqTcoIyW1WF2fNzphGvdvuZevensVnw9wIBacoEY0LJbMMGoCm4VOQ
9v7fY20eBrHu7uXbU4lmaqdgCRMqGcoq6O1m35FKLLMAphdwbxYcy2I0Uif0JxktRLMwl4Q4EHo3
48wvO+LuFVstME6wAl+P11sYShT+0YaN7ZkX4AHEOQ95MHiDg/oMMWThQ35qRtLEiuJIXfsqURw+
A0VxK+SEk8lS5cSTjRNY9D+ul/c/XY5WM9kolbBimBvHpAL+QswMFdsVu1kKsyC605X3poWag0Jx
7iBJkKVwrg3hPAkPi83GXIEE0fU6SFJRAs2tJE1/OKmwfbjdA1bT5XCLVi08DeeY3IvDNmsWy+LT
nIOo2F1Pr5bybYTSnRxYwBxnNEhoS+YsKyP8RLzHmtLWDTY16k9Ja+AwotDnHsrnCr1tVH7CeCbA
1t7et6kA28MeRLirgO7/5XI9/gqYFic0PAzTjMqE/MgE8+TkF3ifyhPASI8hEdiEUOxirJeg3TvH
vwDb4Jz8I/yk0QMwKCXTecWZoxGKwp37a7N6X9fqdnhoGKXnmMHFJLsCb8SE7mY4fXNP0zg+GcRe
GcDuBVv8SWh/XNHe/b23q42yzFadt8crLEqAY8PUKfHaYglYN89F1/H2FcYIwV+BJWR5VtZ8airG
b4zghjTGOJYKQz3nxi7o7LtGhxKJO/HOf4hrmTOp535UkAbxv0bPJLDW21VL2YN0Djly9DfR8WSD
h6JJuP953r4fd2Y0Hddq0lp9H9pvhCb0oo4fagmr3gdWfwO2IwkD1qEpuQnG9Y+TEEtFtBX/nyPu
SsBLjrVo+4MfTaYZW22UoRMIB2icDGM32Gr6h0P6cEwQH/jhX626vjbWP+KnjBMziBg/hFVdYEi/
zULoftNlIC3cPO2AcPI4DQGjIE1N1GJBuFKXViIhkZHhr4F7dXKkK3jqX2JwOlDuvH3RSTKmRSgW
a9gsBQL3aTVKb4QyV7+nmOtAva0fLa3DEhSczhElqlzciMROy7GaCr9c2Fx66fqW6nQ0qiz0a5yW
01bUcHVqFfSb6VN9u1/IDFXjJqpsE5z/YPNGR2cboyF0O4PAc2risI3zYfytNIgBMy+xm0JhJXpG
2hy7Nk6g9TuhootcRa6RJVN6z6xmNc5hhs6kd7t+CLcyaw8x8ur5spLLKnWlszuUe4jYB3rTF5iE
t1gorSo9yLQkBvFqr9eSn84GK8MT2DzOhx8fXkXtvhxP+6sRy59YQpISQaftrz9DYPeEwyihsmR3
8al7A8tvZIa01WbHMEHMPrt2YcAOYXfuAvAD/Kc0u4nGOuHsO2BiEHZYS/qiRfKAc0PVMgqpifr5
/EVHcB277gGWaZMBwmBDwiI029FtEXZlcJFfrIuLsSEVYTEAInJWB16PfbJQYTn6htvghbFV4MP/
uFyLBJrjMgxYLSwTZO/KlUIForhSOBLIndVUGuJyTHbIGysEQ3C1xAfYmjHw1SAh84mlukR4NJDY
xrZlXCwkeSIUS1/nJ1vJArO+UJCInyFRMtgZnEBYzWf9sBHGOWYfKp4FrtOni6MikrAOzo41MBK6
gJbrv49mU+ayl3M0C6z0VjCZ/MP/9+vVSKV2g4RjGUppjuf37Q+jQiH5zAOWrAY7K6iEda7BzHKx
DJLBebfH3XFVYmagnDJOhJlCTD2OE+bRoG8QptltT2kGuh0FYnlvUND1VC8wx50nX8TIHll9D58O
COIrQ2ILCb8dS6wZ7r2UNc2SwJfX1zjIj2cBIaLpsV1h98YPkNtHxa2hs9QrqJ+XRzEUWjXirAXZ
o/UK1UJp6wTH1vkVL3CVYc6r0UrjNyRBX+fv5n65/PESRgqYXaIdzV4Aq2mqjMVsqO+OooHMIc1D
6YV8Xs/g08ksFwtaYJjIh42PSpl9YISAHI393HHYgk8dxSmFRsJOwu16ah9hYIAl3J2J8T5Yf3XW
xM+zTpsC9hSL/nfUf76YC7muXbynFFsLeqodeNT018P1UsoSj80C03pShhLFqtESgOPE+pDHxVQO
CIjiVEc72j7P6vPNoCsOqG6w0OOH3pTaC5Pp0sgRf7ZC3Q+JUua1+vsqjpAg4cE6us28iDEYYJIK
acs42mBb4GWCiWCEy6Qiy6zP2aZTz0rAugW0IYYmw8STQgWimFuTO33XNPg2gvA26W/gpE21XhaN
BAb9jIKlOK99EEKTAQQEfB5MmNAgeePSpJq0JH4jYi+mXsr1jXXV9Uqjeqjii/2/mCK3l2JI0FWG
gfQ0kv7ubBkD/aixZteCUlk114bls8ly1YvjDdNVgmP8TWV8FpQuyRwaICuGLi5nLDQxB4dNjdRa
kC6TtT4aKe9JOPb5AOAC3w6fhTmZqNZrnikLmeb8BCs65jIeZyjM/4C4cvwvCrXaPQNcpgquONz8
5QZvYS30bKXC6grAcgZuUS1Ujz+hV56RSdByK8u2Kjtj7ib4TGWp/LdeQFunebpGdt4qfvC/+no5
30s/PTM3h9K9qYZi9/UNMfk3dkaNIW09LfLteHs42ffl8HI9fDf2MQmhvNhOAtXPf7C05swwX/oF
uF+qty2MYfRROyaf8I/eCoGGlLA1qJiUFZY7KNngYvHfMEqF3UnpfWZy1NzPGXj2KBq+4Mh/XW3/
kpLp8Y+OpV32cdr2rdx+NVMh/DMOpYc/DoEjR/rXUnPY3EkQW14LW/Ob+k5CdPbGF++csFCVWgGl
+j1YN/4ISXfYRdITK6Klx5XgSeIUzWDwGLKYjU+EJeuuysdpHghW3Hwi86SNv3SvYrs5nHcXG1+6
kSq/REg8QzcPVBTAmq4ra34kKwem/FnqWHMGOipRGuO8ZqqOiHVJyDXX7fG0rux6HPQZhTvI5sIF
/XS2wvVyLgFCzm2rGu++QN+jVZ4OrzgwCdq1jLLVWsX8KbQIjO0sYEIm+4mKR+wpl1MjVRBoGKeD
0TnHiinBow0FxGTQebQm21efWFSLDxQSFQSVxBkaohIaiBMLAdugdW3l4oPXMAq8SI0xKyAFKwnL
ygSarA1VOgi1jLCdDSBvBnsPvww12oAFESwx/Iur4w+oglt+I/4kJGR8cQVYNCxsiYXxyyX8wPtQ
qx4ycKYOriKcLC5fgxleZ8o8WRkgSXxJ9/p992lhDxYVXv8Xx4y7y/WKQz/FEzz9LWtRvum/N6bf
mxCDhtfWYbhiB+NVV2+/ics9cU1me61brEt74wHz1bdo1tVVUQ2Gw4M0mVopFrV+vy3dXUdFYMHC
W71KnUgYVJNHfj9dPKyWhglsxYLahIyPiAY0Xwy/yYafpaF5NrhIqCtM0EKTbMyW9lQJyBl+T6sw
e0JrK8fLUHGdA58UgJ1HwUTX1Isx8YwhBwwYtskiU7FJcsWEsrkzcDBt/PWpzxsPF01hmN+MZjni
7qSSu1KrHhsmVS86GlPGLrjPp+O7GXpn5bZgulUTNf8YU0mkbrd3Z1/dfR0hThVcoueWgL1hqdB8
C8lhltbHYn9fygn9amGMM6Jcwau5agYLrlinOR68bBJW9DOrnXd1UGai+h3N2RwQvyPgbOg19Dh9
pRWmuALrsrZI1BgzRdJuWLobT5MKQyCkfdv82Hz//t1H3x7XEzoCijr1VGrSHsml3e6/gRDZqw1R
fktD2hIhngOBsB32tjse2d0ZVErLsFB52oEW8fU7GAWiyAQuCSG/3iRsRSLymnN5PM1E2S6R5x+7
sIoujJ5gTvXt6fv2523zuL9uJmOh9D5YmVm2kPHtmHF2q51t1f0nOjFPVCJ6AgbZJEfXoH4lkGkh
T4yv0wQfljLVWHtzgpysYoX7I9JylJl4JpexQJtOQ212Ao2ME7UZPVqvr+Mwe2x5sdCMZu7+zTQ6
OOpVtLXLE066WZ0DS4Hfx/n2+Pi4XM2QHsV2WDLLx8p9YZ8Pm+uN+NhGXGfAg92iBujT7lZdsfjO
nG46r03/uF7eEETqeF7TFjmwkdbEPGbazvC+J2ko+pPxyDDArFE+LK1VP42vh6gETCopDJTkk4ER
2iIfz2kYjFLoPdp3Lz9t7KN+ag2E8NSC4rvtk/Me2jFD9Q3+nVVSPE1ClTb1hPEyZ3WNOXUaMEBC
GSOlMCUPV6vMHZUMf18xl4q/QedGxM3SlhTTpo01Xn5F33WzWLFEf28V2sX207hsGVEr5WojLt7a
gxeDc1DomR4XiAgSJDtiG/0v8BMKcC7kEGS14rsrvgNHq1WAa8OQzz1u8vD2uunyfS+JAwHGJz5S
vLfvh5evR59JOBoeFctM8XbQIOVX5QPGuRZaaT1nRegs7MM3MnUDVSwh8Fj9PHAKio+Nglrs2pbm
MFPUAzo4kPZFMPF+rAWSh9RuCP4YKZaZTYekQoCEdklZep6KBZQMZ3lBrNYasDHYQ6AR6QBCqkbI
uxVCl1LbW2uUhMyCI56QFnwRju9VSXFwYzFpNoCpiCdDEbd6OyUNjTNSta1qSWE8qdzIPRCyC5ND
1GaQF7ndPLwYRGSMUgZp2FMYnRkQRM+FFOtQCzVqrIgnwZBaMfhBKM19jqCHmqK9tdjIykV4pNLL
+MDLR6xWiM0jL0b6b6zWDqJyf4FG+evjFMcqFYozhq7VUVJwICrC/WAYxayDZKnp5eSVgFYCC92v
j/Nua9ro1erZISEEahd4zdVsjnU53JFFzThjXY21Cgq2tqPdaGKXarYX/o3h0zDE2AbLq7hF7SgG
lYwvh9BGZiC6SHWeC8Qno1eYMF1wGkOf6laFi8MkkeXx1dKMZ1ZJS6rKeDWtDpfmG7jWT3nsdeBS
5fqN256EYlg2Ay0NjF45z62u6knQec+VZYYE7oS6U2f87RBiLRwNEiKxOglLt9D4MYiWF9vWs5Rc
2h/f3y1h0FZW7aKv91zRdNMJ12d6vN2kFj1HQ9TdzBY42x4AKOI5+CgjdrgEH+WBQ5Cux/PXgpyt
q1mqMg6VwXYgvmewMKz8NuucfbkCOmkZtO/Tcw0N2GVWVUL1IKm5xomKAlrdNEigrU+D0KzjVILu
//VyeacBdjcLOKhWzSqqlCjM8RxbafYXQ28pQKEMY6fDe71BKy0iRAXoPCO0Ugm+Chkbdxx840Ep
Qv7JsC2G7F46BYDEv4Q0aNQotqzUzgiIGLm9BGHl8eOiUaq25vvooh7cAuR+KH7zr8vwzSu9rJ3N
cg67uvMBXsZcZwJ/Ay+9S8t6RHn+yjxgJ1pD1uRIUqoVWlaz5mvbkLkTG19JsEV0na/OxEPj3+hP
6QQd+Iw7Pxl1i40AIRc41CkqGLexYoIikYQ5Z1bfY9d1iqeRD6u0kDV73YfzMMxUvGvUiUnzx/eH
V3eJvpQeEOr+vdCS1TOIS6IinCZgF1+wMeuA8IJQLYtV+bbd5RRUowe8WOUCzJM++/tGIW+4FqNe
QOsM5KLXO1Ri/TmGcFIVxdfDT5zSYERx8nkFDD+D+oNQMNp9APMkoDLnAYEQr/hPc2gItlJMWQSu
Xhagfaa42HnAk/qu8XTOC7QRN+ccgKyjyFAoefGQBuYIIx8IajK86XymfQTtLVS7zoM0NT71bHh2
LjTCTiz1NDyNxo55MGMTExsiPSyrosNO0nImbVvJhmXjBP3kS6eo3VO6Gp5MLViPQW6ej6egS7zH
buDsBMdDGgWwbOfyFYGFCRe91DaVRpBfPgiV6xK6oI8fRvLSWwuNuDtUnxmK/so2lnpUJgvgY3s/
AGip9bxo+gObQh+tBPPuGZ4cWMi1Wfhv6ExWYISzk0Lw7nhOiMorXbu2U2NlvlERQHvNjqqxG/Qg
tLe8DUtmyLAypyyLV+hrmjrhd68HX9j/yY4HqZw4QFb6qrhymzUrSYY+vThrN7J+DA+a/DHVuYLM
TAqPnQ75CafhjBfIpvGAiGhVMAa0Yn8rPif5WSOWlQ9mxZ41u4llQ1Aym8NyCz3449iL/IyZdud6
XYIJ5MlhuGBSqs/5fR9H1nrPWrPczR7shgtqUhiA6YcY/I1dfIWxL3MjBHY8jMM5giMnkqFPAv3O
N68FLFOIhpx0CUIk1jEj0gy6EIYsIpeJBRC49Em1jj5vS8mk0EVUiLvwCPyyKS1zFf2gQFv+srnM
hNyX3MtlJN4JjntwhWzDdqImC7RVrHb0l8MGmlRx2p4vnvaDRTxoza0w/HdiKAVT0oWxXMIYmdRL
wSaxB3lVvS6ZU6y6cgFAvAIXvZdmwHi2trNxQzXqFovhqXueMxR0bTWRcw/b6wMn142OSmcqUPNy
D5bs0pAOFjSwxNXjz/y0rOkkllBA9Xk0PXU/FzJk/agHSphfZ7hxk3L5efeZ1TkmNqakioM4mJnV
TRl1B4PgVMaRvaF04X68G3GQnkHPU6YqoeIcz4mlA8p2VrlLt2nYKr3wA8uXZ4gXI1scwquphq8g
T+dBgkmIVsoXCLrAmPuC4TbOUi5uFS65obtnoabvOZZk4NlXkvYnhX1yAjm4Wd+dXQhvzgSoqSu6
tyyUa2MxRjY22s1aIZy6xO3vDJavxcEdwJh7wNq+X0oT6Cpppj2Wf7Fel6uf2UMFi3sAx1L6Sqoo
WEJfD2vuu7kzOfGGIDw4LFFn0Qr2Rq1YbCCRX8P7oEYaoYojSnwPGsknf5g1o4BhCV+8B0tMGChl
S+RNO+EfGn0zqdeJiadr9PXtirsqig5qqOMZy2yWsL8t/WpSTxdD8RNpsmIWNO6LGthAmNeNMkvs
GlBSds4fOxn9cNTYB5ZoPfTWclpZUxWLLAL7wMYCdtb9iyNT4KIC/7GTLZJAy43om6izW+84D+NO
nDm4BWGhR+hxK+xBkfHrl4myWnM7kPlSNyZzG+KNlKr68BxpAYiXxwGGfgOhCMab9RAowKojPJ2+
ocTNOMSpzejiNnbD9o29TpBu2aSXDuQDXuiPmSShZsEenfUMpyKutGZIexVrE/x+KO5+pWqWBD5/
OevRdnxOJCZI+YWb0jCUcQNJUDGTUBdUOllq/vvZQZJR4IHiDCTlKqamPcdQ2vHK0XUgTKXhWuIK
Pd0xGBdVl8vMgsVUxdiQX6JesElOFftSZuqqZUgYnlsLdPClovKFegEQ3NZQnWEx2TTrwiTENkyJ
5iEAQ4MsA1KHvSQI9UALw3fAraRTMdwSYlPv0N4vb2/gkBS7ucckadFyaJ8E9fkSowT+L3RqSyfM
5a0TtFtjNjquQrKBwj5hFd5caxM78R6rw0u35ZPZEFV8vOvmx0yE0XAtQV3HvFJBGQ2JOKwDOShS
FfWhim0S/kOyU8NRKP9iMYzPtcnmT3EgfBXHDXmFQbic0aDUnZQqdquSruCS6AZpJ2RYZyof9tbb
S4ugWAqNzrwpIXbXl6Ed6rZcR2WHf0YamMXHKeYuKaRCfiDq+i7EtI5GqLMeRZwdYcQp+Eqrymgq
BsdFT+DltD1/LaJENlIB8AJ6kxLPVht2T3U0DNTD/bhfowguO/WtsJXlIDCjwoBCvuz3oy8bkAN8
hBRijXbfAc15pTkrmODw7hqmOlY18AzSuBBfDQiR5KCULq80wERXkbhel81w6NmsmwMAX4cpAGGW
6i2oX1WA4pKp6QmH2oZuHW30ly/eS80KRnihE9CytTQD1mC//Axon5Cpvh6tfAhBB4HnGPD/A5tm
85lX9vr3BC3HMPIwJedjGTFPXB7vWwsJ2e/H06kYkKlrVnEtTLdlGtFs5XB7mAXB92xlW5V5Fats
xYhTuwTx5mS+wRxlnC5qAWp2lFWBypIhtPMAZixE7Y1iglGQbzTWPTTyJPIY+YhOgfd9isoXQBR8
NF3CG44NmXZ9RN9qxfUB7vRxL5TmshYt4jMeMPdvynfrxfHwAK1ztqocJkllyg1XsW4Onu3frBrT
XqB5hpC4oXdmceRU7PWlmLqRghsrIQdSyGQYCYxGrC5J68H/MetceglxmuwdZ8HeHMkTvK9by1fw
HD+Mwt6+kvKXecQzTAAPVW9Qq/luRECp7pDmdpTTP3ZJwcwK3Yl4bCAkDMeBCZflMa/UG42tXt00
5BmOMFHdSlb2vQQ3GaIKDD+a1d++bT82Lw8jCz1LAK5mD9tsnFGaBhDavUJCwciHSzU9KMIR16AA
hYFLMJHVZS0FQWSF8jKrwLGSsKeZzFrVPjtNUhFNtO2wwKm4l55hKZOq9SltwLww2lAmyczMyqKw
QDMYI9HfN8zmXodoRHdxs2gSxPbAbgMMw//OqFBpi52UIDOTd+uYwRjckCyvHuERQ+3ODwiw7p1o
KtpuPU2JYjGNBEi4Dj2YVfGi6KizSgp454ZwpEJi1jZx376sqdFl47eWsL9pxkCh/G+eJROx6eve
KtuR5oG+Hk/eIXn1lR6pHdWKEtTklcA/dt7LDqvFKKqNAkp+SB1sn6iNnfl0htq61PeY+OFm9efQ
kD2s7EXKdrQpZvmmoDXEqg6vr26bN32TdVqT14jhmv5pHc8mq9H4vlqc1x5WCtkbdY0wfLAWsElx
BaOBneYo1nnfW2Q5WODmc0hfjhA/+Gn1INE8zzrruWB3H8PPOkWGRBESv2wBrAbHVIu1jSHRhBfI
HGMFlFvry+F6vOv2PA00rLO6a0ZXKHh1yuScWkqdz3N/XI0F09H6DqVb99xTDSvrC6Rnkc3H9ecq
Iv3ROEP1dmzUbBoGmuNg+a/AwsClXh63n5vT5fKhrtLP2R2HWN5hB695w7bj3s/jDBaENXm1pkGe
dVAb/bPWfHzA5GqzmBiOp9InzbqKFc8WUD9NlcUjoinxxD5GQz/NjcwJHefgQUAnOqZELp06SR6z
2lpGZgMsmMZN1gmEcViexOPnoajQz5OunON14GTGGJ3J7qt0UUTeHNMLl/SXre8l0SMGwhnyYqyU
3B2ca+C0gI27MDJsDEgVxKGU1Mjua/hLcZ2xEzzj5Or4qJt7INvTzohjNEV3IDPEDoD1aJhiyY6B
qPkkBFxtn3rqO6HchgFnRtDsEl52XfVS61JaaYG2U6B0J0EG+JJ95ACrUL8XCnWe52QZzNJI1a/e
ssVZKocfTto9rmaLbyN0LksF4az6e+V8vmkxWS9kFtH68FGUQjVaVUuu0+N6w2mSmHLwbyu0NbxA
en97NTBx2DxFaLYclSqy0bi0WgoQpWjlf5abnnqB4LyLGBi4MPuplUAchBrLs/srt7UARYzG7cMo
m6VKR+brpL6lFJbjEFK6YBwTfOfirKxzCBuHor/oXjDego2820tQ89/crhBHwXHCqyMdyl0f8kVR
F6JH1q2MwjNOIuEL5MAT0LudhXMioROiF7m5WprLM1atCkUhYvEZQHxT1ukdwvTH96itb9/ecBCN
FQmRwg8hzurf8en4YcRUO+HK4rBKbDPZ3syhkK3w5GI4z+xhnqdeGFpjDrg0cqGUdKFqp+BEIEKF
Ez4XA/6gyrqZZh4CWIP12LcsMILWU5sHXzA0VRo7OI9SCNjsS12FudkxdBsaJGUGD2vDVhgFWlHw
zkkKoNiLe5pfraQDldd3IDk4xWmipUFwKXKHdQHgnTmjuZgl7qljIPa/oMI5H99RJIdv/v4AkZD+
NnTsOFcldav5vzHUJQT3QsCyzsvflNXjqBun3B9GuBqDhnW2bm2uG/JtvvnGWLONazJId21NZ6ee
oJ9KLVXA1EgXV2RFy7SS99PD/Dk9tI4rpfM6Wd54iW7uz2fDoyBpjJXHuDKr3FFWNe65SfeBQd3g
V2q7u18uG6e2LNoFqAeUznDg1C+prPjlernfIUjwePF/k6q3jd/o042z0r+1v2CsO6R1qYl83U0Z
FzXFRYFRp67AntB2aF17TxeGtU42ux9LJ6Z33qJp1du0dLr+dt++f9w2ATndWHoULunr4adfCZU1
Dq3DQv0jzFFxYupoCY8xPXReXVjcqrHFiU6PfzQriGldzrygpn3ZFhgpbi89TqxhtjcHBIWgbpBv
xpMnEYzOb9Ov4EjjzAMtNyFXfvK9l0FVkRZJJDN/ggONYXz8GKqd3p0l5XSdESDBrSf61h2Waddh
usjxx2Ef+u5CloH+QoY+b9LUvpbp+DxDxCqo6C/F5fBh++7nMZlosXvOj+KM39/0Bea4wNPkv9Kn
TfptluljqS7nN4M1oc9+8ZIpW2QUt78BNJSHcYgpLcIKoz+gipF7e+Caqmv0aSMstOF7rAMqMNuP
Y8sPd9sne3Ivbm2Iy2JNT7MkUqnLANfo0h1RwSzSSP3Eh9ISRcblzzpD7+YRdDGSoP90WgdC3kOV
BXz8ILvt9X583e6MvYwCZdleUMijPi9dc08LYbfxzJER/Mebl+ObzrHEJwzwZ8EnBcKm98LT0biE
zlp12jcFT8LhXx6vr1i+f4V50PrP9sISziuBuCNt/fL66vauE9Bjsi5uIj6xAwKk698OJGlSCJO/
9jAI+HY6apCXczBHAi/3WLYfWMpn6/2jKsi8Lr/FUBuWEp+vEM7RIjp4HYmnmYHAU/QvNye6DhxR
weBJdrcN5kqYBAsL+roJfzn6qSqbvqW3ka4WawC5GsD35RzH69Y9lON5e/2Jix2xVs0IC+Guaolj
nPkA5Cmrp65bCuZ4qv1hd/G19hv0qvFr6X/w6PM+YKH733OwU8JeW/yDbvZp0SD/9LXSe2M9m+JK
aTaovhZ7OVNAi/dkhPim+xI/CrkEbwldrhuvgy2EylTavkxE+qUwUI3BxIRshSYQw860oCMxDjZn
ebdGXD21lJlFRbjZTsjzh3OzGK2xQMp71cBZdQTwWuwo4o9ghhwMvPUnrnuhbuN6P1EwGmp5j7uv
PwswlZjpSItlQxXF7RqXkFZBLLYA5gFd0Nt3MJp3VMRNG9WWm2cioUfKGVet94fz/fL/VrElIvKi
JxwZg/LFJHYsXkYqN2BBOXlNauYuCLU6VSk95aZTuoGQK0xA6QS6uMy3A9mOMJFxG8ln24lIP0qX
I4hmmA+9YL0QRgAMxj9djibvUSEA5S5htQ/4Dku5TL6bZypxGFFVhmLnHCUPA9Fq+2Qdq7lwHUh5
D90zu6UlP8NuwzID/kwsWNe7jJuPx+1LTNoZ0rRi8gV7rduyPDV4o8muYLDXCohcxnKdKoxJa3CQ
vKLuqAXetXXHso7Twq/BhzYIVUzyC07aEGsWlhJ7s/tyPO2Ns8zZWYbEDxg9T7Uv/kd00eCRJv06
DNrkc/p0FWEm4TJlPRNC8Y3BtqzirKcSDms5Y7FxobQ43yY5tsH6daxIUme64L00QgmavLFV+Ju4
Q2aVoB3xSaun/NLqjAmCevC7xOm9Pw4GK7azwEKZwGOFDS+sBaukuZk10S0vBtQWbPB9e/16g6Sv
VaLo9jgK4tOPOofGgnDZjo/xCRUMnXlOugbcBUVoLl/5Tz9fuxDUS2DKuDx4/XNl3zYUNRrVYO7s
7adNPPPxUUkj0MF5geq1YEbI4pxJ4jvVhroesaT6t1i5dP3UMLYgQRA76cFvX26X0+NuSY5aWPUE
Cd2FjxOVFPxPABS2PZ51oQTJ1CZ1idY1GEp1RFGJjOr3agJzwzrBusd1IApf1xPnpjDKxBKRbcQ7
D6u0uJvMNI27iccrrFaPbE9YGTJKZzuebQcLlxriUjPW0Qv+1cvlDkjJqnTA8zXsfFhD0XbG+crX
V0/siIM/KF9wf/yWVnP/rK/DNob2Wd112jordsWYauzlXUHePzCwvk7HdoVzsIME9HT66/H81xIL
EEP5OvxWILcPQtdpP2pnFa5IUwzrCa9wyigVqRQY3iJ6k6Y0thXkAd2fouMeVvT/qq/GiIUplTpO
thfFjyFsGqEcd4Vl+Q8KzkkQcdHP4PrD08ZqJ4UHykqsGTTUKvPIVElU8Dz6UvuV1DF0MKl4StPK
HvO3wwq3OVmsDPhU3t+nXYGmXeHWCNaIsWIjdZisdpSMhUehCHy1HWu3kiGZq6VXFEGpj2efswyN
1HEKEwyICkBcBMLgA9dmggDqIIJ/OmfWCy6Ou/epfOcx3G+bUV0kiPh5EcbGZeJeCxtpp7RG7Ust
J8LV3SEAsH2QEHCbM/htvwNLA+P2x/QpYbWFB+vTw9fDa+hMcuyhyAZYKbRPzBkXH98/Tsfd8X76
ycrJwnCPcCpMa58OP3zA3EhG40S4IVGbGNsJSUrHu69vjsUQVxYK8uzyGGSDKq7ZoajoqLIVC0lx
QOrVsS9s8KYt07dpa3zIQvYUmEnk/yJ493t1b11iUeao/O3hJOzrzzDW/XR42+5+Wl1vQKkQ1Jqz
NsfIn8DpzccPv6d4LVdNK+K+aDmq+0tnW8n3Xd8Lm0IuM/ES8DyzsAGWfAoxfvX7KnFrDQXvdRgN
7TkzQBNHaDCQ3lcnxlEWlMoigffn9KiexrTELvN1yhGINA/S40YivT5OReHQsu8hI1qHin5/mPPh
O3AlHltdoScZwWd4Bjj3lMb0IBk+IRo2ZfFQO6Z3512bqc656DXkZ3krhb3TrqOd0rzanPBxVS/c
dM2MpCf+pAyn/zB5mXh+DJ65R4gqoyRz264hSYmaLn+NejofpdUosAPrn9qBKv64HWJOwQrSgNhi
CoDw0KHgPTyC6+USSsj9ZGVfHqovJ3ErSWffLuO5195YM6UX3rVeNnPV6h9qkdSklLLW1h+I9v0t
jh60d9KSsGOaLbbV5NRW6RJsvDnLboS3D7MxEEDJrwkN1/sD64lTeWGiRVnTQZ6swnOqMQaUwpUg
hR1LwzDYAACC7U3q2Zgs5cOqgwoIZyuLzXbq6PViTXGbumtgC1/ddnQx2dApqGg/j1uSzDXMgXZs
yRhLMkS2CmfdrOoEDXD52O6wXy6N2mKyzi2ov/lWeFT+BeTC7eZOCqWNzrHVNR8xDZsB5gwwP33Z
qVDioEQ+XTe0wtsIfI2kYuViEYrStiMZF1ABh7g/fVNd9tiGJzwR9cuGzIpppIKt5ZsqGjZkHkFK
va4GKkNBpLow4lQ3ptvMNeHuMPr/Tm2vUf7d1Auvwg/RdJzzWrAafa3z8i7Y2Jb34w0Xs2wh8m2g
L60O2HthkCdasIm6pd0MmbhrV5gLOop7H2fbLp969N1KTEbCl7XDmUaebmdIOp3GJ6GGCfrAubbQ
uH0xTOOqF03bbhyHceh16iaeZYkv/6NYihUjse7qv+tqLr08DniaiHLV7ZCqEi535wTGPbl0tpXa
VIIylOW2rkWq3HLvmL2ArtFCmQUIr5BosK3JlulZL31rRuKlhOGuYvirkrPYN6JpmOzztM0j7+3C
IgMnQwzbpRslA+Hxgv3T3j78im9PtwolMRSM3XSuVJBp2/jMwqTdRKd1/4DCtg1XQAByqy42zJJZ
FqFYQsOg7iBMk+Dzx3njvu8TEITO99wzsKK2aMuIBL87uYuh7+0ORNxOD0VUsyC25adQ609hyDT7
wJ4C6jHdXKbLnrHNrGJ8fguSoCRe+7YWfp6YOV344bY7nPdbrW6kj9M+gqPJkGngJKvsf4oTsoKg
XNKvEwEdU4Z0sTGcgwp5pS5sZ8lKCk8Zcy1oHSY5VViNBRCHloZHBMGXC6hfddRgvH0KA1aIi9Gn
rR2wjOt+KetWegCNF+ahC+Hx9uvRqcONk6Wq7d1SRDYc5slHTtU1RS5spDiXX4nbGbfNN52Re8mf
8M61h4n27OeD1q3+HunG/dyFjs9m91dVmJcM2xmkQCALhkDT7mcdZIpJsJacpfrywKXA4/hygXT+
B213oG8ypdZynfmAvZUc715wdzI5giLe7B1CIdIIop4FHL/o9liSxqwyWw5KrRUjnUCTRG98YtZ0
eyRrJ2rR17grT2E7Gt8NgxAf210PwNQ+xlMKTlLsvfFQeP1zkMd9onXNor9Oyq7yPe3PUrUkTFs1
ppa/8i/6K++EV57k1di0vS6vSNuPGIKrnoLz9eeC85WiG47nBw/DlWLsDYly30a6ZF2/jG9n15lV
Ci9ldStUvWVYoR3ths3JZLEh/cM6e7lDZr56DvdyOEkF3Y6tBYYnlQ1IpfnC+h1JFvFue/4G83Yf
9z9AO+Xvt/etzjWzkAnLjHIr0NHX0vtfCKU1EfJWkopCZOro21fBHillElvuCqLMbsRC7pfL/mdA
etHFnOQsZOlNL6dQOZH40+MygxCXCYMsQEyU5B1pX7w1WVP+Bt+v68iRoa7UEGgs8nXbsCANMndl
WymGA00M0Xc0HSq98NWh7SZT2zSJkPEVCMGMWI3uwlaCN/EFwQ8/bofH/hLMiJuuZpiA9wV9LI1W
jkim68GRDFzDXAutjGjEzJmCIlw3AFr6sr0dTdU0ZqopL9U6ZwHaQmS2FiIs3HT8hMU4CHlt8hGQ
S55alu3SRORjWnZKnUeH6/a2Ip7Hguy8LPbJV7Aq5dFQLCToLGXZ15nnHsdKklkW9b9aDtnHuSlL
kzeaE/6miqUxg6CeYutGNFI/KTo7wZWSgxKTHvyR0mjJzBqacdIVJqv2GQnQ4exsZYwyRtK6J3EO
o2WAGROCngWIgiSTfHslAWUHCsf0zljpmleqZygioSWuehCp4RUSLAzj3+vxHNIQZiSnJaVCRW8F
IayL4FoyFQK+98fjerw4JRo0zhdLh9ZTnlEIyqobx67tOz2+TSqgww4nsipATSKWLgrzAIBTeiJD
JQXtKTdyc3d/B1Q9z9pv0MEMDMWmBHn9fNOvkLEsohh514bJw1TvX+LOQUoVo8GKuwt03x9OhsnZ
tAsroWYcdcUThRzBOvbq0nrgPbX988w5My3aU7CeD3/BO4RHfPgeHMj1J2QFSbzSZREe4RrzEypv
EpKSYFodd5BbKOfH+7rK4pjzs40WExS6ecaiGHiPFSvlSTNJkuYNfAoiB0aK6GYtxetocA4FWQJy
Mne2dDEhhdTdUh66IygI9G98iGBFPrjvpDqzhEHBQBNCoYsdLujIysAkV8v4DtkhJCEKpYzMNUFs
kNAm5J0JVK0GvSuB3kqAv9KVaS84M7E53iu9ZP1gvtbP3bJjKUwN8qavkAuR6kFCnZ1uv86C6ApR
t3SJ5VKFvmoEsyjZDv0wGyFlZhsi5HS/urr1Bv/RYV1x6yi49MlmCNOCLVJ1nVSDmuy1RTZAz9mz
1PaAIBCCqMFhi2Wh1VW1KHG4onT8pbWroBYk1UVjckL65sxipul4JWe5bXu1uuI5KvDpApZxlFZf
8Gt8WDq39oKw52EBnQt6qTIhYg4Ftnw7He87I2Y9Ll5xz4CpcXT17X59eAvw5WcEZXJ88UsyDHUk
TrRHssK8WFmSDPlubPXHSEwOJaT12CyiMLrYbA3HaB1lunYSPCO9wRYlPRM8GMxo5GDdptVVv1SU
tuQpdyWA67xGFEphO6wqYu8SR5BgkE2Pq4hGMHN2ywm2vGxvNDTZoCsyvXTFKlZpRQueUjrfdBas
Bcs1MpIv7TL4sCONxl0hojwygzpVpI84tsuU9nURKzmn/EG5D4QsOMbWQeVgQilE7O0aHEraM8sI
Y/RQ6bU5/B1mBHIbCxzakqNVS9UMsVakZPG2VJEUZmmMTxnAhUWiR3YkovM0Tfu5NE0j6YmAb++R
wzlPqKCEfRyXt2Tl22F7dY6sB4Q28C5xgUGwKAMHJSPwdF1RFifVzGc9HWvKSudJKgIVyhF053IW
6xBCyxFGfJw5Ci2z+EBS0Y6v19HfiZQ+J2Zakzbt+06qkWcFkaU6yD6LpOVqjPrifD/cCae4ugU3
LE3x+VY5sYALbzW4xaV+nV5sceNXauUD2o4V5vUII8oc1ycT0K0Z5wV/v16g0sCJC4xUhXkdRgy2
pfApBCg6qXuH24Sr0mRS/D67D86C6+6kHRrBL2KsCP90slztXrpUZ8p5tJHN5eVv6jA2fOks8T5g
9j0rxYMekhAYWeNUjyx8Ck8+4e1GSQpFAPuyIqPg6TNk2/GcagwLJvwsSEOzzVB/ObQfDkucJ2+M
6qFJclrt0n/dXmvJB2aY8svEKk+pxZ75Uv6xnwSfwz0zrMYMKJUQFLzrljXT1F2e5IolNmXDtmsE
vfFxuO5whjp00GNAyy4p6QaWDmVjeYgoXwwGpFQf0xBoRjNtjnDJ+i0pNove5aU7DpOgjp9zWlZH
TN9PejIIhsiQx6ybF5WwDS+8F1m/iNVx2H6DafcQ+DPiYJPAznmhaSm12kp1XXmHbal6SCpwWT4g
b0rrTDPqLVRo+ZU2wQhce8ASw5Pq9GiNlPHJQvIIT+Zs5oM2kAb9SyN9+BRgiehpNKVKl8tSZjPY
EE7dGajU6IczUdxgxVlW0+wFHYbrdDOEEswNmPB5K+Ca+sumEdubeBWBz6Xox5iEJPfSVL+eVpjq
UnHM+/Yra3mGTKgdnu3EA3kNhZN/cERm6Rk21KXMGi+e5ZRpZvX9YPrVvziZ/+fSPpj7wiYIeVG1
P3w77iLmM0xk2meeHvDg7qsZgJqFuIGSI7bLDNpRsv6UyqsV9jWFadnDD2mhkESjMc5ROu+uj1fD
Pk23MWIRbjMsLOndySrdYogFFPLKSiGcKDICGl1mwlEPxG19PrBbaM+JPff79wtAiaaUNdxbQdO0
aiM/hHM337/Agzsc9rdSooD1i/Fh2Uo8sBxq7oS4BmsSXN2fN2V9Eq2ZfdgsmxX0ZZusdmrpcsc+
9YKep3gAY6eYlL/BlJbb/fJxK3td3aK7bioDR5T6iJo83PGMZuFh0Utbq1kxtS/afcrPr0zMd0I8
NbeJVvepNFKMNcX528ko2GEZENBPY5wD6XxKp+aPococCE68ZTX3UpDM+ylVcT19KebudNjlK/Xy
/TbQl76R1NiTL1Xs2+tYvQYD6Ccn5O3gvt7eLb4kGcxx3njM86lUFeKMMLZcj3uyXAYivZXSD7Wu
8Ge5WGDZ8WibDd0gtFPkpemlp0eGKXgDs9jZ+du9676ZhCyJ2POom86VVH6H2ocQunS/oFo0Hy1J
fb1gVhhCinY/QN+LzRbk5uvX1Eqh1zT1+VCYpY5LiF0a2TSW0k1z1wbxD0cZU+Tr4efLBWailsBF
CH0KxjpOSmpQT8HVjVnJf328/DT7rsV4mRrtXNuhJFXxqOXkOtv1ItvJXm2vm3EVryAI0IvPhgnc
nlEUwfrvBgoKyXsx2vimrLiz0dthsL1NF+6znrCRPQpdmdViL8o1TmJJ9781dSL12YioV/5ZFOIg
0xOsV66zbvhRqqVk6sL5El+1mFqVSsOnHF9Am7BaJU9w8YFjmeM+RmQgWPEDg4lO3em/7Cvaplme
/oMhvCw4qC7k849T3siUS6/bx+l4X7OW99qn3Guny1omHqHs0Y94w2yuPlK4Sg3g08KalSpjQ37g
wLf8ixaZrVKv3JTXf3s3NVkzG4k9ODiZad1VqRUAfmUCmToFJWWw3Qb3oFO7X8MC8PUqPqgTfSn/
x/aUBFqt0zEtwfphPvGaqsTTGMgYQujo9hULMvXodpXa6adccknbtwcVVammf1pW1kgXZRgXVep1
RJoO+LgGtSgDeAnuS5cccyIOw9z92P79cSCwC2+7rbjtriI5BFHLmNx3zwT/cxqMh/DAMrZqHYGt
ELqZtYjl764a9c/9ELK6zgrS8s/rXv8cK4X855JQ+CVMS5XEhLHoFBfF0Fo71tKuJmOBRBPWVLqg
Sad/7mfr1flQjHgh/ChwOpzaeTPuJxGYheAWR5mNo3SJwLNC4Lo1rjeRkoHhLj6vjc+H9HklyCQk
pLH5njYvuar464Nx9jr9OgX7Fp9Xxq/3GelEyjfG52O2+YljcaBHtAMTzLj4tHt8olLYujF+fhjL
F2/wcD/zhym+68ogfV8XP28MvhmGolioDaE0NIJMeyL9xoNkGDeQhBMbOr6ggSFF+jYTjZNEA4P9
hl54ejAfzNhwei/MoFhs2GCZbszIJm24Mi6tG7INt9Lnhiroq+JjrwxJ1U3FX09lGX/yqX+w0DCB
YVwCewYR+W9hAXgDGGX5/vLw1aXu7y0DpUqGH4YM27lSrZ2oNhrd2kk2OwaZGt1C8V08vvPAjhNW
qd9+YZ1i6IHv8+osmDf0APUddo2wUsgiHe/v24/MJL8e347nT1rmyW4dwAEYni3X16NznXG4HoaF
9Cr0KmFh6p6KXYhbpbzZ4sRPPOPnqcbWtPsVah12G5zKqa+cbNuszZGtvb1DoyJWuZ0uWoKnSukF
7zhWOCqudMX6DbeCbave8KeuNnHhBAJxCha45XTpjNh0gnurN2cupIft3taJmh0GVp84EAYMQqUT
vUCtdLdKJVkLb477ht4tXBsjaAQH+Xr4OGz9+AShyND9T8Wh3l7wJmWbge//GZf43eUKOfDfaQkY
v0InqGuPLrzG3O+qdea2P5SxDilc0fsNRFmxo3YWSIJ+sExoY0/JjmIP69OLtEvVqHY6bm+3w1WX
ay2Fy6jpSlwIYF0eEHaxX02bIjdYVdspEQfixJv+YtJSDG7Mjl2tiVoNFAEQjDgWligp/brPAhwR
fymg32y+HN++nHw29maOs69Sz/U0K8bOJoQVYllrSmjrxEvBiRx1/3mEeKjsLlbvVqm5eVpW2//9
cYQxcgjFm9p1S0PKqwS5vhBjKAMpzOdVa1RaAaHVqTSdlmTnkNWLjzVdjn5AMuTYeG3djNOZo81O
tiaIW4inNQUTJNhZqO0tmIAqlRAsnj1WcrtbdJTSLyyxFSvS0OyCIF8/Zx4kxdZDQ2gfWnB9RTZw
/vEVNllWkaHUbIpD05twBxGd3e1qFapClQAypjyxpEsinXoj2Xo1Jtv9Jb79LjLm7y4fP/Vbo21U
SS8myqy4vjCxxEvnETvU+AUuzdnoYHvn2qOa+8Kl98sVnuRhd7xZl9mkDc/QzDJPmgpeqVzqQbDj
0QlYBOF0u4k8AbiMuptV6/NTbNvQzfJSbqSZmKnQeaRb8MiTDAoR4KD1tGl7VUpie7fUzykP9WMf
B59hw39MTQ4+qan+Dxv/l8GOC9X22m+PlFerwdKpY5FxtnBqykNv23GwttxUs8D9SPVY4j73x9fX
w9V3BTFYR3WrPdOVDJkxXzs7fGoQUfdLeUjWIinuNlcKsUweNGhVVeqeyY2qvU9R67+wO1537ulW
SogbViLJ1IBD2lSDsJyXCq+O9YyE6kRhBj+ENM4gVZdq9aUoEgJzQ6ffRsRGJyL5ZLzFXPyF4/tb
qM9L1nqolbVCD+M4ZG5fZf0AkCQwmEGVcSQC89rlfFEww7bXJHn0d0VJRkj21dVc2qFx9+NApwWb
vY5Gu7Tax+X08+1yNteb6YJw4GucNFBmgY/tfo/uIrKA/guUdsvsZFn+BWh2c8ekCHyHVK1yP5co
+hNg63VURZevVxRHI/kqEFbtpEtObB1Rqyy+nigly+YhfvpedCZnIUbYe1MP+i8Ar98vH5vtHopX
wbk53L8fDmfnbL7eQ0Ws/0/Vn5uIcUF+1VW9+qHq4mWYhQx4vmR8BGjEQAW3ArmOJB9F2+X53W9g
qtMNSewHvd70NRP7++nMxqnVcWW4BFktGIkzBZ2vcgZbBjuEIGbquUNfnqQUzlfu2rXLA18AG+hL
k4jhTYALOyWsZhJhIg+tBvVfN+NqJtI180iLcsxWcdE0DPNxPhrMToULQar2ZZlvcDljS4b8Y6x2
/+KW+HI57c11R2YIc4jZT1h8Ufa4l6Abf6yKiY2Cyn/msAd3SGuFq7DrJbchR0OPnp2HvjU6KX0Z
I91Rj+pUWC+wjzueO6tBy4miEaGocZVe1u9mpvVqPyxbX+9wOh1hsNGnzKahE6J0YflFIbrZ9wKH
b9sVjBRpqGukhtm1WIHbrqGhbsHP9LCxorde7SMQV5uX1DC3pqXGCsmtKZ5+YpkW3RJjote9ltOu
YEOwGGWGdmR4MIYhx8RFX2DxXEUEMEtTS4wk5IASddMXnJpBPzUJHN5Tki/1OGOL/75swLOKNuoZ
EF+K/kC6f9i3ZqJIl7TMx2zQ0bSsUF/hvMoU7aUaV9uAN0TbtN7UMJ6lzqjswqCb2/Q4LLdW/wXK
nocix09pzv3xGuKaa+6UZdZ7VKFlRZCWhWena4BajIOtMaYM/3QqWuRxs+8f959JjheUVa8rK0WO
6fzHqqp1h5RLml6XNPSuGxSwjaH4dKKx0BvvDlssc/Q+Xc6x5rJDVps8FpWTHnKiKnd4vbMkASLe
KUlGyHTpj5QVFjBgxHVn1i+3XtrK9VolpcldW2vNWQnDYImB7fsFJn2G4K7ne/3ZJ1sIhHo/l21T
/fKo3MnQh1ih44stDhYCPd5dkhw4dGCFaWqZaQOLtuGjrD/jeuoQD7gsSU94A3UzGL5n2cpnFupo
y6GcY+mq7JBzJ2avpCe79PNWxMt7IRP8D7yLAuEp/zlTQq8cW7KyhOM0LoKf02+yHPQL4Ekmhter
qwadVSoW9u0J1Ev2sDCMVohTtouof1et0IK9rgUnseMjX853abjNnnC2moYhj+w1cg0Re8Lt3RnB
SZaHRI0/FZWX8WqZL80gfT5lfbOoqi6zWQZt0Kz8XE3adz42a4y/IgFGSmvXoKbqbixeTvISomVs
2mdUtMBqksTlsRfz/XIz0prE5/CG6pwxl/PD0XspvZxmEdYt3ot+ISRE+TzNz6oAnfHbcb0yTO9I
F2hduz6J+Rw61E3LcU3EJ2f1xfI6iZsFBaoVKtswfuas+/S33ZcePKZ6rRq0txxFXOFrGhzRLlKo
xSv89rb90G+uXx9MJm/eCLKxsCw2IUxK2OrqkSzN9zVRO2Q2g/LTaS/DxpoXnDv8Jo4wUt7DIt1h
hUt4yYMtYuc8XvvZ2JttrY3TilISOchgLzy0a5Pz1m0avjyV7FW1ZsWsCMSsUu/UI8uHCH2Wc4yo
Ej1NDtKw5hZMJ3VohB7lT5NoTaantmxK3eYtZxhYpJ2D2uaHuJwDpJyuDOhtdpOW4A21A0YashoW
bSClCFKnL0UPhGP/fvp2mDbRr6dZH0rU7OBVv8MqcuBM8/osre6vjMwsAJoPa83CFemrOm8QsiR2
gF7xeAvHsyMNwLkHsKvtzUiwr0lKhB9ZpRAmJrPH4Axjffwt6BUnJM46ig/6BZUQrA1111lLfLZL
fblOzHrni5wO57f7F51OFKwCH7CbhCXWWpIMm+HpeOv8L1ZjHqIY/3eqn2dNXvjpsrgX/9I9/c3+
sDttr364wg+x42QKAnOcUUAT6IumLXwapotfMN2qyRr/G032G134YtzgtozN1bS5hn046z+FKSP/
BdHembmln8IRi/5D1hSmmQD+iyH9FBVtO1GylvBt9nkdPh/Wfj6In09lmsqX0ZQplEjLsnGOU8of
0kmpaUxzPfwXc/qCY/2062hTY6neM236Im2qLuO38Lt1VSZqug2wRfrIC4PxJibppzT8DvyNWiTK
uJZhiKY9u4Xe2GIvPvShTMaRc0r6cC6TkUQLxblBlhV/sc6efeTNyaBmK5FDA5nAL8Yl/3Oc8CB2
ZXIC26N/Nlf1QpatkNP4dZ2+5mJ6VH/O93pWeavlKvGCPzdmm7XBtobQiOM/YG6iphTwF1pxf+26
/WGq3f/cyGSRySj4q0QVckkKkmEII0sY+VdpsCEMqg3fdez36tJ3mKX05+NPry1+N8fvYl+IIYfw
YHN2Da2p9oYwellg41b/hUq8qqFI8kkkQb+SgbvsV6c1Wm4IHnY4HtdV47pf7arl10s8AujsMUUF
PJ826Oin17RC1A+xvxY/Z6BIJcE9RDgu/PCzQsN/3qZtc6JP5d+dxfO2xQ+Dilq+56b8YZNtdZUA
8R9O6cOcLYtnrMUPG50Lqlbc46R/0VSJHJnYLp+qEm+uMzYnX9lgMDXdFbfK2rVM3Yn0a40tDiL9
RmOL6XIzLduv5f8qo8m0ys8ZIiri872Na393EClbG6Splw8dJdWPm//P3f+9Oy/+Du20h/PuX34I
y7SxmGauc1/i+I6V6j5Usbu8Y2pdW8E/YCxwJOjSx/112uy+PM5fb+qHdfoQMQRCTBR+GKFUDvov
zmnP1ESeGoZfH2dfg6J+XqfPyW4kGOUfX67QfaxcVht9e7/AnITz+eWGgx6wS/b25aAEAf0OpmwH
nmTsxvTbIloLQCXQfe/ZVNt4kz4n/w9/9+N62R1uN6U/Gj9u06nRvZ7o49thd0H4iG+H08bzjroF
b0PXuWOHqziab84Xi1frOfu2YWT74YiQIoxboONeJ2LaAhMqiYh/ufzHdfuGnPT/+c8/0vNV6mP8
xjphY7fHS5ij5Li58H3iSKbt8WDvx9v79o7VxvftG2RoNvD3+tmIRKT+w3M+87b682V/MFi8omsi
ceYv+45Q5x9bONtd61/ydz1ydgvyPrD5rh7ul3rQD1JrrPq46gwe0Gnyq42ExODd2e369rHdHYqk
bCuBlJ7RTq+Rx3QCdtpOAtA0yQldQrZ19twZAfHmNvfD+weOF1TpUasvxtIJ6aUzw+DgNw8wIpDg
UIVrK1ANP32Nz8oR3lfwgpRVCdiMGQd2aaG/Ps7HHXKvdugk5Vi5Gm4hPIT94eP+RT/9JGiXW+jc
Mn+4rrIvx1y2mZJt0l5KkGl/+amkvv3nRKsxlcy9X/yAj7vjN53FqvRpj8Ok6ZcztZIuT88seI6d
NbanGb9bg/htr9w6aSjien0XjaDhcZWX7T5yweN6NCg6ZFeZnWP3uN4s+6IlbUCIJJ6kGoyd/27K
tEC7EJc6w1bZcw3m0H2P1sjlcd0dktjX2aDR6O5+e7P7edV/vREMyP3hdev+K2+N6DKyyh7qELJQ
l8vXY8DAQEMQ8AShw++MKOXhf5ZXrUKPsPPgGcSQh+U/H67/8y//+Uf8Jv1bwPsXV2sQ4dHb9Tmy
D31++zjsII8XUGpu+kJenTQ5Tg0ttHvcoNjCKXljL0NagqQ5LQEWqKzS/ddT/DpzbWr99+r0ezWQ
oU4TDtKmta5L/4Nd9oP+FR5htDMOlHt/3NEsMmjmFVEzh3ntXdeZIW//TaIz05l/237b3nbX44c3
H/RLahKF6RlAgQdsdHuKU6V0JBy/hSa7p3rJM34j7qqDNDXubE6H4QmbwfjtOn6B8wVailIbP1On
n2FQ8lpgw38xEmvMVPajOfP+G2LAlHbO2QnaPrA4IVqpkCmFHLx77waRek6kZvmynJyH+RAwaEQz
wv3d10vG8bbz9i0IIyxpjj4G3pyCfjkmNqzabPrK98PLG1htP3DVZq9/3cSvmWv8cX77q6PGX6+X
73/dnj6+bP/qnJOLCoMH63grFHdB6vjn7mUX5n7u3n9+DVhFjtQgZ/UttXEpll2NNRgfm2weVZjH
CGhnxnSZERBG06r1hLi/QajtwFcpnG7y0O9IJUJ+vL69bP72cXgD8/zodAaW9dx0Ck1pDXK98Fhw
qthjRnPC1c2Ms0Bq99/AkHukkt1ngXsZ4xINNEE0ob3MGC88xhp1fwIaaJlOECp91xygEqjpWPUV
0OsAwNna+9Sm40P/UeidypDhsPQBZs94pMBV2HpjRDPxVEFAvFjAdbp8x2E2nkk2gBLKhoOba84+
9FS1i+mNApigTvY6LcF7mrMju/f+9cgsaf2MiQsbIF8T6Jd4GV/Vdn95wbqTr+7cl/Ppp85IxIuk
NhJLsKH38dXq0HjIGekGcMRzHWHZfgbcOSeYgjhZI0mmLhGfTxDefsNHv70V2KGrs6/Zg41e5VaZ
Jgpf9y2nTESpQ2j6CPCqYtSNSdegkwsiuouC+RPn91/7p+KEe8A0CXzjUVJhvmOUGogRazFinXQF
a6kLmNcX5+4cvgWnO/pwOnEmQYQtJcBmd7vpUiBJMERWC+RBmL4dDOYNh2LvbPlEjLGYSLuaxAzy
YrfQQxEfV9c4Ev8wZqb3tpKbSTwRXCcSHlDJcCHPl7frTl1kYjIuhds+3HbuIEo++b7mRrhG/+ln
D9eMwlMNVa6Pl9vWOeKWShkSQ3VYpdbFul5JFiHMEpkR2qQAFEi9oGyeGTUCd+51fh3SBtkc76Q7
NfcGzzYL9w7hhQ+DIGTXsdDUx/41iT33TC4faoks3i6ZdAPyS69RVCcfvXM2h/J4/up1dDRxccnf
H53IgHDH7xB9eG8EgJCRyUqEp9qF+94fb378LgahA3yGO7d+MaRdO/yjeybVaXveuzf7YbyEnvgv
NZcd3l8OJZujJfuAt2Aq5q4XHGUtP7CrGwiI9MUDo12+OQdzfzl4DCI/eEtnJBIYVPTht5dGdm1w
rK4zYW3LbUhvIEOP8WRK+0kYz5t95IgbBAYvL3+DsevmxNkx4piEszcIfhEwr/Fz0NngmeOTwzaU
M5hf37R5qMhqo+g6ZCzi7abz+WKFGpBTaDHoIqznCGwPjowTdVAsr3+cmJXNan7SwPbD6cdMMnTZ
eNmwgc3b9aj7jFW6xyyTG8GCr5cTQDPfjroW6pMHwGLBgZ734ykz2nViSH6QKO+d1WVEUlBQ0ZG8
sl64Fc+oyCaNa/KUGpyWOeSw8LEXPljvsbQ+Irfpj5Gsd18NOiaz8PZw64bogdK5Widc1rnmuDO5
wAFq6U+4F+z98LRsQTeRKmAxunhbxtxc/LgSrJZnU8yqncDdV4ID6xNtfrFjcOcojK0aY5Vgf8rj
gzya/g2s4l2I7pV9PhbU4RAhsN7r9nh6XA2XsxUCDcGJJbcVvdjk0xacWBKpWVu/Dy/u3IGx0+Tz
WtxP4fIXS4ms7G2EMbnrHdz0klvgmnbipmQYwFDw3AbBFM29bRyFjk6cLujrOZOSPY2+ziJ7ugNI
hgnhorlncru9bj0Wis+u38MM7pLB1FAMC8BfM4cUHAjbGyUrgA0gfjJSEDTGszbsxxxGhQ+SHAgP
KuTf0Wedh6kWjqZpAl0HjBkvhonPCEyK726N4J/SgcYWez7agFcNARbyrtYHQ+tcZIW+SJzSsd1B
mjJOhMfdrXx0o+CYYuiPK6bQGwivT2fyaaaQQAd/9DxKcr26E3qbBPj09Wg6C73k3yKpPu1MphfM
Oiz2lxRMx6XOj9MJX3PhiG2TGcDBXPO49xGazhafVSUIuWDtrLFzWsGJAl7ymut6+V6470ryBYNr
FGfJWC4ShaJwnEYTeyURBR0GQYTeQnj9YEVaeQKKITl/B5OoQbVxa1onBdk/NDU1qFqffzYmHaHA
GQXTdb3pO830HMeULtk7g+t6+ZneDJniOlMRS3RYDM4l6u52a5OSsFUV3SyV95FYdr7SF5hdDqN9
rgfd2uhzS3p6dm/ulwsAnel0GQQWy3RmGJy+d8/NWeMvr8h/uvIkL4kD3xYjyyhnwmiM+FvvCtIE
ynwpQno9QHAFBrsdYALI6+blAY3G+vuSwsygkhPx3Dv5XrYpJ/KP8R7qjCkuHz83707TX39uHjfr
kfRkUwGbNctUU4Q8wZGJjw/HYIb0G2uBQO4mUWiQNQnZlnsp2DHXLADAgEj84Jkw4SmOVsJFvx13
h0JebeoSq/QzwtDNwnzyktruM+cknPLxgeU7L9fL10NyDEJaST+j9JaSd2HxYk+bIAzX/XX7tlkl
G9s2Sxh4Hwlenjdh3GvbfT1cXy7bqy7euiRPgBenUQ53rnSRWvL4QAPVAekVky8VvlbjUqcsntau
M3v8f/B6PRwMU7aehAvKRJWfwbg6a0ivH2WfHiZdiKrDj4/TcXe8n35+SmI1gh/tX5BHWjj9ZPHo
cFerpxgh7dMr9cCuAeIDKINDEjfbjw+wPbyfF8p09dXajKtD6RWOzXy/vEC9lff9Yzv/q9skm7Bm
DeUCi7MJBY1jFp88XzbyOjdjoTkuFBN23kxyLqOvymj2/4Jlde5Jfv8XmDz7L+/bH/8H0wffDtef
f4RnZrTbpL4LyN+H4UJ+dX9Jv7xfLvcvjgz/biAiwFJdm5pjMAoYlK1/FpjbAHcFsLdhcWNHqSuH
zzPzPj3MrN0fwhKb1+3pBO9BXaufqJuFsp1AqMD+jnfAVDzsY9mGNp0ZFutSLxMfqei3gkB/zr5y
AsCt/gcg3H+4J/NnLWqKBBuqrMfN8wjcYDD4wlwuTzun23Si9T3RnkJIYW/JWsLnqBO+nbIOno6v
gWbfD2eNbhH9+v2oH6udqMvJo9C1fCXESUVqH8+O+hDtSfF0nVRjavZh4zYjG8C0ZfPqOuqxY5Cw
6WhxKCYuFELO+vHGSSe16sjjJbWN0FvlPPCtObARPx3To5gQ04f/qHuVOAs0Thr9FoNe+hn6hlgZ
CzLDu3em1x0LlO+H65lyH0bNMz6MWmect8MdX8PvIcGRkBG9V6TfV9NyGaA9Nefp/fJlu798N54Y
LUSembA1Yyv0siiI87QVYJ2/qMXNuJM668vLX9fpsL2asqKlB8AiXc8UuYNRWNhIn5Ekl/i3P10c
8//h/Cf/SvUZs7gUSUQ2Z2nJlUHVr+DKIXFlhwA2XfbMb4WrnolCrCkuSmOoPgAK+8iC+da6nro0
PbxMUSnGJ2NIMHr8zEUPn0XBo85VRhGQiA1B/i5j5Qhp1g5V8dbaOXVqYvFAdms0+RhZGilWIHxP
JgT4PF32WEE9I2QQONnuiI+bcf8kR7DMKiO7D7T/0ZmpvzdlEVkPTDonVbrd72Oz3u2+vXpPGlSr
viApaRYvX/J4+oFVwpf0rIdHqqSrXKDIGrqtFk4cTaMYrzEsh8SXUFgRJtr63FDU+oZG64Uu/WdW
Ck6RbV6RoGUBzSggUTH9Keilb84GvJhTq70dMgkS1zNzLHUbDNORGGleyn3330LkHYtb9YuZmkwg
jSJxwAIyaNJkXdEZTUjWp/xRMvzVBRmsAk14d6fAz/4M5/lX6Hn+j4tTz/s/6yUYnkQk0miMqG4Q
65TqZ8Fz+H387hfHO6fDn8BL/OV+Pdx3Xwznge68w0vvZKrfvh6+G75M33T63WHgAk5lPMou0ZkV
3qSLAyPLqdntLraYfzzWmCJzl9E7X/Trceu8X3C24shaY6E2g5zwp3uFRISPuxnSItEXrPwwMjlo
HCdMH+8Hq1XYrTBUrW7IkBil4jXTAGlGgQOdQ0yz1N9Ol5ft6V+hWwCd4z9ZMqhl740S+j6KEUtR
3NYcDx7P240z2r7BGLcjgJYenDVg8NOQrq6f8I/sKZOVcjzD1iFoaejvnsykNDhjqZGiDY8KKfyL
YXkRu7ZorPhruV+AIf/7z3/cYLuFfry5FXz2aDCdnfSGIMe27Fx15IMCxYbhyXN0KskJvsfuroXp
vI076nrJe0m70/bdNAPbsRdczkhWdGDtrL832hp9I9vrDo5zBhhSd2MQgjOc82RkgUESEDyJb3wZ
3rvT+hunCh4HI1TQzYIhmqvF3pD55P32S0dcMYeK3EfivxlR2o6Csg2CEt8gnBYyez7BZ0QNZt37
C6GkNJXyfnSyC5AxL/f7yRQ6bVq1x0qx8vvTuwv86yNlM6FMnGT3vuS5tHS1NdRA13OXs4kh1yvB
ecoMDQxD/eJu4n9YQ9+8ehkzdd7lZPemCshivfbN69AqY9R5+XYwLuZHoBjvZtTNOF+26ln/306P
q2HKkcs0wwuUjYpQ7/XTMCtqwfzi91zyHTom2HCFThIEXOnpcmDQr1wKKb2V7r3ta1Jyyyjb+2F7
e1yDuerMd7fax5fj7hdAojAMQ/J5+6Wqi5xUkHdd1whR1r8/tnuwVHa/e1y/Hf5yEbu7UYAPgghB
fz08Cxz+5NvcbP+mb/W7TzO3zQhHW+mhKFLVWJVSiNgR2lI+kwx0wJcHNKhYz6GfWsGzcmZX8PZ/
AWcf7fU/gzFomFu14FvHAPhfiwzX91bkQYg/lVmYRekgGtUMuZF9uP+lqPO7uRK8Gfjl7SnKToh9
AwL2oaitx1Ew1ZdHDPxoSdO2T0oGbm/q9ZAq8vXvTJXVMZVFFR4UV/1dSBeUfPSO0Mo8OH0wHVO6
KMbkjdDoUBl7iXHZT2gvehustO1J1ruTHa5GMKtvmPYCm3iclYX2AfJKf6xGXiaaGWVTtBs7Qd7j
48Dmg1AVeds8nIU1oXns/ofrdWvsbDAUfQoffoLyrWWueWnvpW7Jcqh1IxVKhnzpwf2CjpdB+HQ8
7LWYcrssy2yEYgZT6nYL7d/IWaiCBTAy0MKawPyTsQwhG2N8t2eFSVBFT4nLv4It8ZeoV/719oud
tOn7HJAvCwd58UeOwe0Dqpn+8+DseEM6MOEn5ExA7z4skTcaCdsYZoX28Mc7zmvYWT432fwN2E7Z
G1wVvCFDIkzUztYgTno5fNl+O14M9du2reDBxeBUiJCXRW+XmADbZrPrQuH9sr0dTKe0J4zX5zQd
C0+ulgB9NesCRbJJy64lkSqgY0oyyhBJnb4hCjLpIej08/Dk8uoKLzLQDzIuacgM4FFw1jvDTht1
gxGjKSnf55W+oe9nChAt45ksx2YbsO1MxSbw//N84eEVUkRac7X3fhpdgCbREoMDdkUADxRTWgfL
sIGoEAw10h6zECYM+8hmhMNL/C8dAMT7OIMezvN1Eieo7Ts5n/fNMBTJOWCuEr7jVd7g3OjZF4wM
H34A/Nv9VlJyDAf2KXKeBuUaMptywDTDJGf40ThFpWckvEDCxHYpo0kpNbBwBiEa8jnLpmcYz5nD
lMoGyp4JlUQwWPRk05SqqnrRtvqgZL/hgXS6McWIQaq9RFzaia9N7p85/ry7XLEIqsDzkp23iIUs
ak42UBV/PNtJip5047PlwJPJv8D0XewnMSTNIAit4JSGDsVz8fqoaAPKHOZWeBa1oQfyKxxkwzP5
EPBMDZ3GqphwmlQexTr8enSK+QbNcU5fI4cZAr3VFZRX87fD1RmOx1/tC2vJuoJubvXFgkz+vy5H
4+bJmUTvr8vrB1Ce+lh7gcupluXZl4Ga+T/p1eOeyunCWdl0odTzF4j/GxKE3Jl6WUPGHVuMTFj+
6Kz723J1TDnt0wqh3uTbco/NVwIY0qoWauzMzaVYg7G9TkBhp4hbqMg/7AGk1HjEZP6wCh6xGhWb
wMwaY5RSjR4bEv0btDYN82wS8su5kGkNITOs0r2YSSwXc1FciONTLaIe75f98fWn4XMZueaYDF6t
uDo2LgCCO3U0kqCDAZL6AAS1xhXsKZf3rMqRPE/eoOUMGkUB/tWsqa+lmjdkzWYZHeQTAm0cN2/T
kv6ssfeIL/jX7XX3V9zaFgo7LP3e6Xa2FN8t5dnIOuyQVtmCnpk8VpFpEXVUbM2cspCm/P4Feweg
TBra6r9ZomoScsOP8+50uaUy+U1jxD2z4vZ6fqqJNqMjHY2WYGHqrN6qzMrtNEhJDd/NipRAsqDX
XrBwKNvHmmNRLQHU8cauQ5sn2b7WtGU0Cg1lSQYXdOdMT66zt90M2VNJDqaW0jZSj5UeA/O4WqFD
rRAK6ViY/ClYkx4TFe0ZtlbaEcrXfqENoWAcN2ZcVy/MQWEBLLykvEKKjDjjXVZZxcak5B+NBbqs
aqvNfVf3LL33iPVom4Jpy8Lts5jqRXJb22kp6JKNL0d3/OasAyiCKWX6+nGhSMcI+WL1cPSUNn8u
PCSPodTKw+K3eNGNUUn9vx/OzDeYpmsl+4I7Y5iyQo8sOJE+Y2ArhX6o9fpelKLr8xdUXAmMlBeG
CFVQhmzvGP3psTq96XSYYQpUQuZKsi8NKdzpSeoYF/Pk9ZWC+0LasWP1Qk+x6mijrink6GjaFXrA
jZqKiffuFwhN0sWo1Zxd3VBa3XD3K6G9YqnVDV+dMg0MN9kusCqYPRRgrCGmVudtFS9WPZE0lMne
y4oqkcTa6LRPWmG1b7C2Kwi6qdbDlquD28T0z8ZvqPKwg8nMsXtKpRzLqSEKYz3/vtlf7S9JalBw
tk/64f/5e8PM6YQRaM9O2277sfmbFTfpZitz82Y3xrVdbg/UT6ko9+TezrYzTLPpnl9wcoZXVlt2
fJYc6r9JfMatYZxTHKJNz5gbSbaLOBv3kibXG558p6crKSBqxjzomWJETSn0xNRCoTq4JX8J2vFC
Sc2Slp1ByyYTicOCtxLMGgJObY0AR8fiOBDIGaeSR1munKYKNRy8PteC9PB2uhl86eZej6rJVaUr
qplYqx/+kYs2cFID/smK/uduavUdMlmxPhHA/FeM1U16w1dR7/aNYWhkGhzBE+yugk7vtGPhci+Y
TM4n9TQDo8yB991+/sQiRX/aHq9/UdER0YonowDw+usq72C+3TbMoQzgT6GHCy/Ww886FjwdfhhS
g72z/slQYGH0VTG8nj1bj0/aivG3UtitNpJxPN7mzUj7Qjoq6g8SQCoKMfRCK2QncagF/ud+vMX1
gEhLusVJqXAcswtxoCZuJBTOYQAGACK25z2mrKDlQRP5mGelYcE1ePruz8XIjbtzfzcvoVXnA0ys
6zfFFaBgMC7IMfBwuSZY1Tf16ykNqe58AxQlcnFmgYflefkZYFMU85UKuKvc7fOHgnanDx3WlhRh
lfdhPc7u+B6Iw+pwpGqrxbBtrIoLfoUPmMA8gteIMqve0ZAmaSMuuHcN3DmcMHeb2DjZfj2+qFup
ZiIp6GdGCBJK75f9wbgVOg2UMDRd2gLwRdhAGte4URFbPdpaXIuVEPvtgMuJNLqVHkEaoO5joWE3
NzjRGaJQW60oi6YRI2dU8K7dnyOltXXzBrkqfYsPeYx0cJLZAI6hicb4JSGmx2frLBqdYiO9KHyh
FXPQIw4MYPEgtBcoKfUim2mkpZ4hNhqcKkCvXmfIJITgJkLvL+IOBu4O4uK2eZy37i92CNN9Dm6a
zho1ySJW6ubWclyOajzi038cDxAa2R93BtfWieI1xIDqkOd/nI++lRNA+J0sMtk1JIjZntpUIMPk
Ihz0sPqgoXEHH3RP3WqBF5waOACY9+MDFwKdoLMGzbzvvY+cHREf08YZgW8QeA7pGP2oRC+0l4Pz
AXzmjhjllvW2p4mkHiRe+pa9D2ewayVrNJa5ioBCdUZmnxJBautEbbiUHGZRSnplf7zdHgbjVOzB
MaSvTIVt7pCIuhsys+bvPfQYwEYYwDqKqjvq6rs2p5Jq8D1da6IrrQYr3B4v4d+aAEsUYO3fXvqh
V9fu0q2DK+7EwqqlsZVe3286ex8KolctGoM5by/bvu9rfctpeWxJ6D65uEWNNj0o5nKupnNh2z3X
fHWAB4GL32+C2jueN98vMKZI56sxsTmUegRMO//QIfi1Tg/0Y2betItFYijUsfhDhxnDhZg5muLN
onFhFnMQ7AIuBS+mYU+GSL574CSnD50+fbpBcEtCJ2OUrV4IPJwQMwx+FKzpVYSUr18H6ytC9ZVd
cE2ld0+mcNwM4aya1k5DKohlOIMwuj7O0IDqHLStbnpMJD6otNJX/COG+t7JyPP+cg3Ydzpt24Go
khIFScR64qIRddCJEhCgl0RhtvX2fLxdHGU+jjvC5dPfwyRYZBFWyyzRQUuG3vucTGv/BP1sDejz
NZVeR4qL9Qk6cqCD+RfLtiC7HntMWV1PEAcrjToyUQIQcf6c74Y4aei5sBB0UrsniBptMfB5/rgY
JyGDfEyxeb+BYh5lCA8+Ohg0PhS/B7PlegzDs9VT9IIY8njdTuxcrnfDMm/Iu6nhrdcd9xVx5HXJ
IG6Z5QrlEXHsTeSC5vcp2mAzRHobDJ0WHNbz4z2Mo1ZtFvqUJjutV1yd+3+64iL5AdHGZh4YrjDW
I24+ADPIjrZT0RHyCdxYQEFOVbtRMq6WsHVDhhFWS/SKx0A46YEfgRgqFjUunbbKWredYX0+3rGw
1Akq23FIKhYneDXBsIIazn/DLfzyePm9sYGGDEhE8esn/qyhpN7miIaYqa5bMuc9Wz+HMjZHI6bD
3IxUL50mm4fgjD1wD/27tCOQfKEBbRWP6qyZZB8i/LLAWnB+UlYXh5boKpKiRVRIuk4BNFMSPmFC
Ux/frX8cECc/6g83fc0qkD9hKdsvN1GcTV18fZwxJggmmZNqZ4+zZmr+hiIu+BrqZLoC+0BHaynu
E4AI/XuAFUMoOuFouE0F2OPg+Joe9ETijiYuZerS6f33xwlLDbx58q9onlQYZfpX1K+6mEqrsyoK
SsLh4wnZo+Nh/6+WJdmShcGKO7zxFURREilb6/W0bWIUXoYNsDZby0IfayHuFCJW+HANTE3kT4rI
sqTGLSZarFoefBxkSFPNKosS2U+L7AqWnNHCjrETzPkdUEFoRyEH4WFEWfEBogz+z3X7rjNJUwm6
DJU11IeTztb3MGcvf0z6YaM/f53OTNr7YBXTFu+H283X+t1uliVEcYYaDJA6QHEAnGs0Cb9sT6/O
27hs71wS6UQaBKb18jm9fKTzAazUcnqhIzuHZVLkDeqbInUGtl8bgBQhRhUCTfa9EZV4I0sMuiV+
DHE3RD02/HmKBTYp4vCWvMwVgTMyVADNou/4G/Pwuc5rRZ7MLHKgv/7weoqRp3ouOUqvlKNRYjDZ
s6PpiwdT++Ycvt3Rqe8zCkVDtIxMMvVYRrfQ2rbPwbxiKhKnGAgbiqW/lynzh8NU0qQbfvpzmWqx
JQsWp5IO3bPvRIfZfP9yAN0I7/jtrD+TpqOMDfXUs+gj3KQeQmkFp9gSAnY0sCHnbsbStko20nEp
r/f31oySITRls1fTcrWCDMAJqHN5YgE+f3K5L2c+HF8h4QANRe/b889y5qFfpFkaIZSlC/OW+ArL
cFpJ7b1vcWbJWR32hKIqLQSJVRYpzUxKGL6rNkxS6V0VYdDjjInwQD2Eow7yP4SpQGyFbNAiZnW9
Ai9G1MjP57Ng8L35fA4w0OX0De3S2xGFyU99uYbMC6y6HEPdZWR0O+iRqILRwm594LwYk6cEBC/g
xrXPH87KJe7U72zgOdIAIRCihm4hwFqyHCtyahA3ME/HYPLaqW3w/kIAgPnFOsHSsRCksaeQ6lJ3
6jdGurerKVYTLbf//st/bOpBf5e5HzuI713/mpKnQ09TiL1WvH0cdk5K7HRdSF/zzrTV/GLnFvpk
FrWD502lLCQpXV2t9oKz/5bu6H3rVvjRvX7TDZJRyKFY6sN28RsiHFhrdbDWsAcM0BjvkOzffy5k
ShGtATTl0DdCNbFtPtDrZ8W3PAdu25BkuxDqQnidy0vT32grOBBB8Xkf2EQrRUKMQpQr3pMJKTsE
VnvKTCimi25EVZkd1qXRwu6/u2GU7YfNIc1YZWo8xMkW3uEqa7yhJDIrMid6lKY1UvFkinK1nwjo
6AqhEW7auQZZJNFbdbXOc70QCfC39bY+c9hKoZHsdFGYx5qxl4dlWjAXwUODyQGGUvqwocoxnz4M
5zverI47AhN8fgLmfd2+vZUik2NWz8CpzbCIdTrXQgFZlHbumkynop6EUogQpnXPanfEcJ2vPtA9
k0lwTB3zvzkZV/BpKGqDoyWrTip+eLsefnokVZuQvWSJENvi/bj/+46YYGYt9xDqUp4cW16GlSY7
6uKGKtioxfP/HF7+xx8DfOG/fzNyIA0VXLDQU2pasIJhZBW2fpJklqdyz2yTkrrH86vukFEcHsHY
ezF8oQcsWK5txPK0hWmJsvLx4ceGnh9GCI0yl2hMtyOPMyAWnQUsT5jmVQ7TS8ZKsAp0U4WlTmcM
nYX24SOaFzoNKiEcLlskOh8QHWv8o/2kQWhH/snUHfpgEAooN6zSw+qxHnXggdR3a7SE1FKbU3hz
vhXkd7FY5L8+wiQAjFoZjaaT3iadSsRj20OxVJw6CsDarINaS9iRsYGx0DM7GOg/aU/rcCyqKS/c
r6s0o9gYNenxNOqszTqTL1+OUIlTnH/XsVl6T228Ep5eqZOQ6Msz7Cog5v+6nKGIxGma0+9XgFDQ
9AU+UZqX+D/OlK4xgBWoyN87l/K5S2h1A7u7nup1FxgkZbzGjg0BkDHzN7eLOcmGwVHNA0XejOE4
BWSUloDScDRFn09aaPbUthiW35wvAbLY6D9uLNjVmHXbQVGsk67ADhikf3esoZZN+rrDLsN5zgEv
L05cu2X2xWlFHY06qntftyQhZxp9ojOfIpjjXgEg/arpW20+vaN/BqRfjafYEa4Xi56eDw/HCHHG
6t5sM2QgFU+Sjt1YAUy813sVwf53n/9qsSJ1SlYVBVkzkqydRdYRHgkrTYCb3V4/j71N+AvP0DqI
AbLd722kmGHQEQF2jysE3myg7ZYmqzBM/QzxY3O93E1ILNrEc2Udm0MFE5ShBOB+fDlZuNatPjaA
4om7n2j2lCFSe0Ile8b4Scj4n5kh0zJ0zvEZlfbnaTF7yUaWqSthuhrDtn0/Yiq2YHjNRpv6CmST
nrB6BKDd9EJWtdMxYLk6AcuJmmTto2sJZhbbSCTcsMawc3q9c9zH73wjo7+t0siX2cDdS2Dwq+el
dSTbWPX/EuG8aJY2Qmt6hle7MSEX+8UU06rcG1yatMkGJzQIlMaW/L1vFPnD+X755XB6NWx3Y1vZ
SIH/cJQqDRQwZslRBXropy513VYEdAiOcd4xLplLsFNTa7NpgLB6O9EgEOSoUi8sIQtp+JR+GY9u
X26tnXRgjhzYuaCfjKZphOC4Xj5AIxwCMGuuJDa7uzFvYDFAMcZ7dgVzom0lQJ6kpwgwwJ6+2NMQ
ouhMhMjbh8dNCqCN+O3jvNs+oGd6f3lvqa1UXBwCcSHf3NPweEhebu+7L4c9gK7d9C/r+GWDyimI
cr6Bes0G2rSBkVAubzdnrf3vx+VubaCKXzI0Wv7z05qf79MpqCpBBwLCTxo6uP8Et/y43S/vqfsR
P9wfnHkGZVu3w2N/gdSHAgmOE64wLzq3oVmpDTn2/fEWsD6QX8Is1ON5sz84zf8FjGNM8ejrtnFd
zH3Far9tKLh0nIjFA4fHUV9iSFujkBbs4/ERD7z5++PwMDZRxRVYcimSRwX3a8L0L/9lKFr29/z7
//rPP0AqCC2pUFANwvD3l91DrfduQsLuiRz78FVY5N/9uv/rF31XXVwF1gtIGRkp4qTYtHSp9R2X
7eOyOI+tE+4qpCBSF4rBUGM6acj6+Ld9g8FG+EGY1U5g5pvjVeUCDwPob4LFt9KnULKBboi6wJDY
iInDuAfYl/7TiYdxnHL99GWExFad7yYGL/zvMzz3dACPQ2dcjx8d4N8BYTw/E9GpPGsX6Z3zCED6
2HHy7fGCJQwbPzXU2tAU1wp4WMvVIDhxD+CpYKXptzskbgmtyVOQa85icfyHn1SVAhNU+cSDk4pz
BuFZVbX+QR8/YI5EVTX6B0P6IHTkhKcLlx4Erv+XTbgTeak+xbFqbC8dCYXkB3zg7QP8x/ePut6E
Rf/lh75al1ajsEHcizf2AaVQBbjp01gKjy2Ycs4q/fo0uKrOCSicoFlzgj6dgLTw81prVhqyc7Q5
LXBMuXEtlXCkquoMIozpC5Ip8eecljSRp/v4HP3JKVKrsiH+ZC+cUH0afYqdLH7jh6PtCnKO2ad1
+LHexx5DcbLJ6t4wXvw43mz8df3H23TSEHNHT+F0+PFy+YFfgG8EPi2OboPymRuCpmLK0+wixQC5
D29g5pC4rmoG/QvfmoJflKUMfDGM9BsspIeVq6EuD5xnxynooEN7pv7rPqqPa/VpLeebXGEC627z
Dr3SiPe6/YC4fvA0fE/Td9U796RISzMA9Kqa9YP5UAVuhiHN4cFeHve70yNfDz/fDmf9N+tZ+E13
s54UmO44XG2QBr9Oyy8lPqGmMa6xFi4e+Grz/br98CXFgZrOlD96D85YryG28OHw8CjrXqff3AqM
UdpDbeyhS+tBgKXubVHi77AS6OC71jbu6iDvCAW1h++b8OgMkk7ZcaZ0mZfr/njGgWWXx4dxielK
ePAS2WnrfOWf75fHbWPuoJYYsqoNFp5H6TXXg/FFIjLryq3qzviiEZjz7GxxTLOcHu8QBuAv2Dlc
euGwf6u0bUh81MGdqerR2EYvECei59521ws4dlf9Nzu6HrJdj2fIB2x2X46n/fVwLopbWoO0q18B
ivIgbfQ1mCsePux4MxZLB2IDCYBLQRUknH1/ss3xfng3Xs4onA0PtQkLGkzXZd8Gtj9doPf3h7X/
usr4vZOf3v4AxUn4j+UXOArk9S8Qo6NeKhs7SpzKuvY1u8KLj1oQYVU9GWw4pD1WC6URzuf0d4hM
e74yrq0W36Kx31liwKo2BORcaYoCrA5jb5JKYqweDZT9z/P2/QhhlZ8Gqw+0CdT7Q7TCjKuhDRDQ
Z0h2HZyn6vjhffsjABwaP01cCoGTJqS8qqY3+LATRM0Xx4S/XjDrBJfsS50L8qIh+4CC4lXTGT/d
ZuwVJAxy0/9MG/g39/slSSVaFLVh5k2zxIyVIZGnXlCYX477jyP06ULfBvJLeAvekgtPBNGRIIxr
eOdIwKSTcZhPH3ITTiNDXuMOMsaEvfe0mLJbiOWBp9MWcIBJN4PV8gEdi3bXuxc1g/QQm9a42Uag
1u502JKBGLtdg8w3yuT8HvrMmA5vqjEsrKqSdl0Zyn9qBHHnfgP7r+HZG5KHGIqiXZEBXrfHE4xw
8iEjPyJMhWH2rEAyBCouYh9rVRnCehqyhxztScM8mjpBXGY+gW/W2T7uFwTSN65nypaalxK0xLWk
lycmOyqD4NIPCv5lEN2GqVQJliycOMLJprdssBp5jVApFutrqto4wCQdIDKal7pQnRCgNQ3Sd4lr
oVAilH9nt3g9GMljz2+VsJktZow2WM3IrN7t/m+Pm7FWxfTfFJBmMU3ysYUGq815++34hkF4/Pzm
/j0kJWDc+eN6g9KokD33LVpyyKFOXhn2i6MXFfLUuObNSZvdl83l4358N8fo1ckfquOY156WQQim
9+31DYYVQqGVsZ/wDOpF0QSeEJT5u/MUMT/sWx+30AdrHG6Mi2GfbtOzw+2P3xZmcxhSpS/npVu9
nEniaeUnu3gBZRyvTktM+FY7WiKBkZcWqVpaBH2BWaCS16kGbSY6DCwShBdnJmeZet2CneOlqwue
H14daI42wN3gighWk8iNZc3BUzmXQOnrpD/rvIscF359OFPSww4FmA/DuvS32CeOT4F3zhTsyC8P
mgmM4nsdISZ2Pz2ic9EvQKoAODfSIhYfWuv5kBquhxK24Uxz2B+3KQtq8EwV1xgxAhsmKPs9gZno
NI0zLc6OmN+/YL3Ex3ZnsM+U1mMdfrgaFEXBuzRuM9EHO/vaZlIfgSe7iqrrj0ZvymPLtLRcmDtn
pGz9adJjYFgyz+/a2Rw363EnmiB4YDP2T08qQQrsrofDmTGVGTevUyQGiQZKoR3np1N+YrVpyKR1
9/z2MWJjbCedFfuEW87jkPi6GPeVpHLm3gVyoycQnoQdC/WLzbSPlCLMJSEwI0bJE32MY5Fw8EDL
7Arp2oparEqXhVBsjc7fTrnqgUK/FonVDufK9pKg/oR4mtN7QSTGtmbbu3+/MEDps2Fle44ncoHV
Xje9JFXWCRT2itGNZtoDxdJScq64hbQ71qJDHLopET69EWxAa7naqW9QcXX5MIR2EimsnNjT+Hj+
ubnjXTmnFpCztMEjdQq4IV0gAdkMvab8KORgqr+OBDcgT7fjEzu9nqDCzYOCFayIKT2/useapkF7
gFGPGuWFdQqY1XVmiz+L8tLo3TolbOpYLs929usGO/4NopOIAnrVEyP6+psjc9HDnXFKg1toUIE0
vkfRDsn3b8fbY0u4Sf7b+wmK62BMEs5L3mlmgM//xwwjq5Vc/fWUcuYM/DV8ilk344dTAQCDBw2f
JlPQuYzYLV5aKyXimavBtxFX3F++nzd3SCxp79xLiLQ1QvHKt+Y2tj3vvmDpVqoSKW4z5a1Zu8bK
a0qJ4KjVQpVei+YVfuNnOf48u/NpiQN85L78BXGee5wpzyZBxq+xgOOgr1GlNYjguJvvl+seJTuW
EftAq3vffqQJ/9+M8AUsHsYN5XypLG6sMsZVgoNWW+sYh/arDXE1DrqcHcqXlwMtjWU62lQdBhpn
t7nZH3aXK/nzi7/b3L4eP9T/wf3769b9nnp3Xbq7vFv/eSXIRqF5out8WK+N69U9hmt6c0V9nSGt
w8fpiOv42mGAhwsj2B7Q42xvc6RtsvifuDxoTFpSf0p9RVtGTJ4mlFXmy4X0TiwdvX170x/WlC4H
lHGT8LR/fmAtGYAel8/azmlfHh6lti/ZbxBhrN40HHWkYRPXxRkVo72qdc6uTzucfTlnYYd/Mxgn
CTRErm4YYsnTWjiw637VGiQC9ks4YwZIK+/LGdr7w22HLfYG3bp0WigGqgeD93yu0v/F4+OqZqdw
3Yl4OhpbLK0dPvEp7uWP6e25WKSb6j1ZKjQxHuCCICteXmN65qoFqHC1iUqIR8J5La1nR5phXSqZ
BDOxnscsq788sp4gCGbdU3GttpJen45LpSLibGxr4bAIrG4dlmrAGyy3D2rjaW/Qw6VYIVMaxAGq
H4vC61lm8f3ljvl3Jxms1cJY1z6AQNSTzNq6uJqoF7wPBdj1PMhbKu2lT3vx7DBHTByAEni44/wC
94bfLv/yE1eMEjYpKzYevLimLbTbbMlx3ZI3Z4Pev0D8FJOaalwMfiBJIfam1/+Avm6S5ax6pLiu
AQ8AazZkpCZ4CHlNelhmtTaummyA2AQhPiD95qeEhNn0GVqMuIZ7Qw9wDTHQ4d/lzVi3WTwCpl6f
z0j23/P/5v8qgjfp4TKkQSVUTmvrQg5PX6qnAmoqSFKX0oA8+jQvNrmVvbkS/pVxwORnsrY0m3Df
Avrsy+GugPf5lZObiAIshi1p2eCcp/iUR4la1Vvgf6AV/EWdoOUd96kSOeo4TVYXtUiAkeiXo6yy
le5fjruvzoC2uL5LXN+jaRQCPM8FIIvFja2lBxpmhcoKzhBAE8337RewoiKx7l+cXfn2BRq4432Y
tJvT0jwOtFw6zmMwiJcUXj2gcdkaqtzYz5gkGoJXT08OKUTHgj3J/t0z9Pbldjk5mQysaFWsoevb
Rtf3+WrCmt4XOTrmOd5PljPepKXCbPv/O1Ue4gch3Ixoc1iO6J1zvV2rImuSz5iN1WL3C1StYQL/
hnWqVukYpBErWi4VAGRlQ2FfoRoC6sFux5cTjg6EALe+0Z7MXqxLCf2Alz3AECNHhhPrMZYAQxzM
VKo+vzkB8vUniZVnKpprdqnDiwUE42Kx663q9KqwjtoFWIN71Rhf9LNQ85a48niONIG4qF7p2FNx
Eyuwul+3EP14CzpcxWLDFQZpI1WnFxh1UyXUOIUg0hPlofmQPzZLzuB+qB4865PRadCxoiF2gsY4
wVAJJVI38F93UMiNsGdhIHjaMYROEVDPIGUvEKZqO2Mjg/AFlOkgLhD78VizHbNR+ib6tAmGJpFu
AA+FbTwvvp7w74/j9evNuA4qFm69xCpctg9dr7rpVPnEWhrT4ZMB4tzZ03aHpdTaLAR/cLmfpDfe
oNh60LcG60uNROfDm9/ytdh8CfukQjO2hvLyO+PlN1IXRGu8k6ETmO3pbRYKWfxvT9KLMyqyu64T
as7BMg8doiqEeMMg6Nm1KiW6Q6gDehrBpjV7DSGeHTAQqX06VeBdT+YWaxoFnQB3JnOPNY1MWeDS
qX2bNLhogaCjNjnSaJhmSbnB+GISoIjUrkYaIeLHybPOutb4ol8id1gHwfthw1xSyW+6n9PVvp8p
4gh425UAkdT7mSJ+QDCky321U4x0hThOKuFQ72eKmAL0G719P1MEe/Bf8Ha/xviNUTxHa3yRfKQY
GLG2hfcziA+u0T9o+JMuMA1+0C5/IfaYQ08HU5MQedVxHEB0UTMmN15oJMmzzv0CkDL0t3Z7S08t
JOyZJiEL9Z7OY9hDKtYvr4tMarphz1fQE6f71bAQO+qWY/DuVhNKxxrVWH+QUWLf9VIDB6NZmI/h
AxW3j9PxHgyGMHrBrgrvO6nj9MsRQZ9Cesmp3qeb0xdsO6F1zGoJ6NpB1LaDoW0nqYmgM35jHARz
RLhwDG7CtRsKWjKJMTFRoFnpKshtYXvMTT6CmDEQZvCppLVYtnx/BCB42OX36xGzpDh02VglN6EH
w5wy6NUKx/K15388vN5DGfpfnDONqWXfAWowLBMCWJU8F/sAOirfZ4Ljy/EO3tsmFO8vvYLYwmlw
ejJYEXO8ke7L+Tu7rx4HV8cP9auJvXtGH31HLVkMqt9qUO+oZZUb5UZbeNd3ksfYG79BHYWsI18x
wVuDa2qB9UK3iHeRDFK2ljGeSXfjHLPQLlj1hmyn9n+GUAsRuwBBUNp2n5wXlu+h8auhUtLPv4r8
qvdu+AdM6gbwVeoA9Fz1hgNPDZ5MvhXY2oiitFJXL3tnPs4VQrq+1dk3ZQJsniEGkgpgaOPVYClr
MZRhNPN29MB9L0BQTAYLDHLDvUHtPu+g878BbyOnuNVx3Q911vg9x0y1d+2DRvLrQczy5XK/X96N
5SoRA8AIuIlGxFovYghNC8Fq5Zgqhl85CRNGLEeHBnhwYBPD8m7az1re+TS9pmh502xQnnzxXfaX
100eV2LdckbUZxaEptWk25E2ZdI69rKFEn+uFVPltzXV0UuzZDuwGZx6rAxmC++sozUSMI3RTdwR
lA1XXZ1BjLEVOvSyoJkfygKS2BBNfXqODAWRGTxpxbsl33rBHGC+FGErH8sNmH0jyb6nBkwQDlA4
UBIQdS94T04lOMv5+Ha+oIXpO48NIdMJJrwvnN4dTqdNiBiXQ37MFyBP/+ToHPoJ3aH8PxkqahJc
Fseqtpf1W0x8wuVhrHF7vNyvh0PoEn9ylSOG4f7osVKXkWGDNKNAY8Cfg3m6fOusZ71wgFbEh2kN
JcoC9xxhwvDuOulGq8F4uLPkIwNY/uX7ZqXNOJLxRYCyVWccbJReQdUbEmmSTErRE/JC0fDMukaS
9K1hl48SMonCcqGCcXtGlCVojHo73NFhPG2P+43V5twT/AvjkOfMQ4F1+0aAWKh6g2sWvd7TU6r2
hCQWnD2Dysx89lgjxab5jnbOrPjVGtWgCHkXYzJ4Re8gZmxLvgERjCNVVr3x0AhDBauwhvxwF9b5
UHR2JsEtqDqDgQlahwfCtvs9q9k3rnIQvs5y40yeG/JvsFzLMD7QGW/nw9tmwP9nuLiiLDXgJ7qu
kiCr7k/a0gei6GyGipAiI2BMMKvTxsnrWwnOr+qMJzJKttyTv0MYXDAc0Pj9RrKUohWdlg2+5Yoo
diVi7Biih/Ey+XDVYFBgbkSaGZ7lOEo+nnj1xm23AsetzcZhVdeUgLZZFl7x06bkdOMHZT9tSiF1
BB/nj2LQP5gT5jjJW81Pww8IX5wHqFv9g0H4YJ17PqUyEvw8qLISEGLXjWLVhRHfJm+LZUmdXIre
fwy6HU4GU/aiw2SEVMZOtO0MId7XQk2NhRbYdYPA+FVv7GrqJJCextiVGECpWkMRDlKIUYmvpyoL
Q+b0itEgl2sYalWK15J++myUjXBmOABeb1zXNNjR/nSoYyGDQVUNLINhYdl1XS/axIY+JaOfjyZ+
rqha7/tXs8B7VMSCrohb1zh2nYXSBiszadBiFn2o1lBJgwTMFYIzoSYpGXp21VvNgLUaBv1qwGR1
5IJnfqXhTA0ivFxn/MY4fRJireulIEzVG1Rk8GYMw1LLM9p5s95aihtKCYXHwivtaynSnPL81PNa
CjIykEnCEQtWSDgdpSs9mKNhkTyhXzIw2DioVq/QbaixCqLWTUzCQU4B/3tHcSP6g53/Y0ed/Kzu
zMPRApweFCfqnxOmEa/SUcpT8QsC2uFDzgDCDc6MIkIvx8MVGPgAaVEOzIb9qrrp72FHpEV8Nsbb
/ikm9HE9wBDKW6xG1jfWzSJyEsMhR4pi/vryvnm7QrjRO6o6MlHs/qgXVmejftGOA+ErJYWeDF30
b0zANiRQQ/fE7CGl9tXfLCGU0BMDVLfHPsHlZWjs3E5QIOfrVBVcx1xEm2uVCJwGlDX4tBb41Nob
3tAZB0f5a7dmK9WpULvORzW+XOMMMnN3DCaGmPEpS2hvoCekH3bE8wXBwz0wZsKDN+g0EV4JuWZK
obG/9TH7YmBAnM57fj0aD5mxGDFMeC247dx8D16KuNRAh+ctk1qRLj4TdtYxFwG3iA7orUSsZDYe
KIGR8IlAX47eVIDAUITkI9hIg5FaQUBq5bf+CnoClqO4+pcrdGT7Oyhce1/nMiZM3YpQTJ79St6e
f6uMFsX6XY9KNQhfLGXuxucjNpbY6wk70LeVj5UM2RneuH/ii9R+SWsMgixeipG4Z3z5Jf3L0PbA
GqgHiQ2B/QGvM4Q6C7uMg1jqkMeNeHhhTQQLpg4jg69b4bA+SVVWH/UscJRW6uefY5dJg+bp8rzj
FjIa+wOMxrodjLuqMsaqgzzcPPNDQbIzzLOFnPjHNEZHOGPk9p4vvsU+jeR0f5YmdfldSgaNVhfm
X55EcFX+IRMa1rFnmUnkZrW8uQ598k96i9X4ALCJ49jvR8MO7RkKGHl8Xe18mLb/nX0NTG+S0+qv
1wkExNEKPGdivQUHfGEAbL9djkw0gJehohp4U6AVmE0ra/PX2KqWLDDmbfNyuH8HVD4DvKVOBXVP
prwhumfJbCkwsKHGZkkTfF56GxqCFCULz3hn51+jvf9vsIZBJoYzScr2vL1eAbcVz+x0reUxSXa1
Pxkyi+1vNZMA5xinB4WSp/3x5v7pZ0lLNI3g+UXri1QXOOuP0x5FHRhlhtohPECWo8vlCU85+aKX
VXJlIFXEEVPUdgPcwyiIN61+zUsCySCMT3azuKNNCB4c7z+N10wkqROzrFAdhr3dzgIPa0V2/pmS
XdSlRjvLzDa895H5+6ykUnBxC8qvH4RnUNT2gY+s5zlnhx0Uihd210qyXCsC9ETOn3VnFp8lWNin
3zjsjwE/EbjhyW0wXnMvOW7GVbZTLTmdS8Pbk862u9sFGOSgWhKfefIVrcp648OqweMPgAMlXku0
AWdjGhXFst1jNdAipVh0CaQImJfIAEMhRCyNS6wlkVUZb5sg13nXhEp5g9zEDR6BLFNM2FzkmwJK
xG4IVZSgapI55RGfXg4/b6xuI5QxGKYVBSlbBOGv+Dn3F3za8UK9NE1tw+9bX7tjtSB4Luky9TXZ
bXYRZ/rJwyAFEctvQv07zC21opqVwEfkxOOy0Yosa56eaR5CZFp6qtyUig/eEy6idya+New2BufO
CgDa1lC0gyD6QrR88ziHeEPqHTCYLYteN+Tw58GWACseE4mFOQY92QEsC+VDWrEc8X7BypADNqav
qkn0lzwJpGJ1rbhdHFjmKy5ZdaseH21agQ31CEptMA3xIAdQsWyFWg/JMfsL/4gB4f0BWxXBRwBk
5nWikbzEbLwbipXr0UlxTzfc1d7d0r2s5LtBMIDpiazzPDuKXzH3EUZphWePbMMSC2u5sJuYNcrQ
NBXr0d13ifm6PLA4luzz9W7/wLQQw9D7nIq1/DbSi3NxeI83x1ohHpAGagOsp5+PjfncI4wVLUTX
KUSPCflumS96vfqh6NvTphgkYYYX2qj9QnFoiVEvQhrB0PuUYH+ySQwebLTYiCIOOlUcjCRbPBqh
rJIihyw3vWAZQx2Ng24SiXsejLXoqiY0kscVQYln4Isif7daTOApXLu5GrzRN1pC5dn5MSjYdkIg
JnSqHW+xmnwf56vF6YwFlyrtDYm62hU2zIhWsr+KST1W3l1K6U0rEporGdb4lVFy6JvBEG56xNJd
yA5vBjTM5f7lcC3mm5pZoKJv8ojlGuFsHj2xnIlkVg4re6yNVNwknUgr+fM0IKoRepBXuX7QX5xz
b2Zee+ZxsSx3bYRbWcVDuYbPH26SDlcZ5GADjRgaRzMbFrUUzNNq+PwXnfAb79vr3x8HKNAR/A6D
h6ZRSyXA2/D/EPOhppnXVlnArDVdqpJPyxKCRBQ1wmHZxc0iFtGulV6WlB0lKXu8/xXe3F/xBf+1
+HZpTBG0GY4rcocGgoVfh6VjGO68t2OXVRfWhJeuZqG4kUbnaVWM/q2MWlCaGAkNc5uL6sxZ4Kss
zO9npLGCx9mNgrTUSgv9Q2uFAol/zGCznPFacK3/Ab/f+KVO8JIta6qdKilfJKVfrCyRlJXO6mw2
xteUJ1zGwp/f8evx6owd50reD0btTjuooi+aic6Jv1wMOdVNAodopZleCQ2rotxP4shIfnSVXg0j
ms2N7vkzu6xDVNe1+zO2J4VZf5MdbpjhnfC2LR9vw7r8DaucKNtg2WZAmWJwp6lBIaTwwrD5y8lJ
KqxoVMFT/p//jzlNE2AB193ldPvYRgTnMKW1gH86ZPinw1OLZETnd7wcGyNDskfdWoI/xSGIPYEF
iYOi8VdihC3A02IBUwjzFLEfwRgcBWow3ORQF+vDHE4thh83aDOHuq5xxtQjCR2/xvWw/QrhOs96
jhUKK9VpJSqqDpImlEZDtvUFBjoHxPJn8Gdt9Tq0A40ptDAsAh9fHNuekHVDlFTfaJ+W8sM0QpTW
Y7j/lrPXoX9qzN5XAjg+ute6vT+jo+qwaLjmmLZJEWC2u7izMxYkhtGbpTtq0j7pJTDT54cV4sEF
WrqGpISlSyjso0v7CKoFAdW9e/N+3H9cjtA6CyHoBMzrePpwK6ESp2kmiCncs3JTMu08osHS4IM0
kI/a+ry4/g4HAmVm8P2hpcKXJAKWD5IBV9T7EkE4JUlSD6gjlzQN2mnlW0EqJEBqNr0nOhgp75xi
BeuyxyjfCTibbn9J3ojBDXKeE1TvigCitkTUmuKsvM874N59Bpm7oXE0ZMFkKHp4VVgJFbGcVKRC
J/T7bHLM8LnjO2W608/f0OCcmiptX7a34y50b9aqpBj6TPL2ZoZ+DsNX/QcgS4feLMWaQ5d8ePYc
x6fTtyQJRC1Qgr8wZ3poMHsB5lCF9/QLzhk47zwWvsZtc3i3TAyKDyQ8O1Lmuok1J7jUhfbTwi0I
i59EMS9KU/Az8IP0CzV47XW0pmv9FsZJEPdsJivmVsBOuOnnyslsox/hvWRqK5zr8P5x/7mkZTRp
bdU6DYIa1KqC4ryBpw1orvkcggH+Aw4RUuusNw6CEgRxxEDhQnuCEeaYE3As14NG+meO47qWh3s9
Hk57iIjc7tfDfQeAP865ezucdeNiGoUH7dNii3dA2D06j+RGgY3hhASshbfrf922PwKar7fdyKGs
dLkyzBL7NLpsnDqJfSqd38b8IU9Pgy5MSZQbQnZH5RwSpuEDqsZyvFeg2ySJ14CxgQbkWjk39aJg
1zl27AQWFzkNu8YKNnGzvP5FmcHiGDeYQLx5P1whqeNBVNabUdVMNkk66tvh8n64X39ucLwx+pCg
bTzOFnTnWbOpUWy3fFrIspPY26bBlMjMBxMJBWwdWhdCzXUrAjzCnDtv+CSwMf8/lNDGYOc0RoSy
7N7QeU7a+18JIdqi3V6lmXzYu9SGgW6eDjc4OxRWHHeP03ZlUQpueKRBenysQ5pfwyq1olOOuyck
t0vIdqkmIc1+4T3RWdQO4/shZ+OnwqQ5IzpBGJfgHx2zXf9Bas/SAETyN3YARAz8cDzvLlecWIjM
ck5zDuLvAcq3MWACmHBWYhZum4H2+JmNZtNRazJPd2yvNw+I47zg497oQZfQcWMVnYEY09US+EY0
XQqIDV0tIQaw8EwMsBmnlvCzcUDszfioE1rb3dUZoOmthD5kU6ZpRQQ6G5ydsKuzpHMWHzS+lrDB
cZb1im8lYCJ2FytW6AU8Tc8KpRupJxE4rfSLbSMgqvBfXMODo4AWwYOz+8PFaV3Y/g/96JUA2EHE
M2j29OtK9+YS6CzVCtpY3RDpIJVE+fhYbhkxxHxkRtcSVRYkkJuwvV5e+vqahd2EgHjUDBONoY54
kuFkPuacMpmmkqwluR0aTo6/HnBONtR7xUSgKv9HQY+XLRD9pB1FhUZqjWOBTr9JAh0roHWB4qiJ
emjG+/eOlpzqRxaKuJGGSSExeGl58JsdDMWDSwYi+IHBBkTZ4q5Gxe6CNZgBwYLRsfc/TJHDL2ut
VaGnvNm8iD9M+hc0LzPrBJmNL9KYysyXGowv0hxKVsuiFiT0aUIwflEGecIvxjo7x2RiruEX0yCc
o7Z2FfoB51VwZ/4cbXYOOwDmv6Cpqivy73jyhp8juaoGl/SJVsx7dKbfK7dMn4YVRlvZ8+I+CIeb
Pn60oo11KPsqE3PMX0rLSRwqYb8fXr4ekzRKMxXtkW5+CyOdFEG5JzPAVseZmGEMK1mrGliRv4FJ
4r3eeHVz+g2mbdbdgHFY9jDRzuhLyy6LRaAWc91PpbcDuZauM8G4PI1mmp6bJkWqwBs9obwsZFlj
3MMwC1TVUH49u3WJZKwbuTVkwNhmb6e1GDSN93y566SsiRXQv0iAGMa2xz7btj0ewTNck4kVO4Dr
hUSTEbPQXtpTQ+riN3pLBI+SeGyNc4ydyBQW41XiOQxVMpHyYa2GtSVQJ+k+GuOLIWfunsXHfY3P
i9Gm3RPMVE7sAh8aTEjac/TRcxOS2ZPpabq01UOKh64F3bZO6mnmv6dFl0kjG8bZ76ST7Ive2Ps0
Z6e1hy94phgFSeFPl5Ua+cSensqI0zDGBaEH/YNBiEUb0e44PmNcNPc2+i/I4XH9FypKIDHQn3rU
f2HMttSWsplx0t0y/dnrH/RSrq4yPqjEJJhxD7WQIdLEwkyDUhYpFD0RFIeMLC5Oz8g21Szxkp5g
bapR4iU989dUiVuhBb6fSqmBONNwkfNt9HtoWildpidZ4+yWRZ2JJiwhNr4tdg/1hKwyh+nXvSWD
rUrnnrAZ5pT6b4M/YkixuRMkTG0p9ZkULk4eTakmyyORVa4h+YZe+GIRS7FIQWqCQTg3xhaHUfjB
2nLM5kky/Drji6mXHOXKUJB9LynI3rA85lqwI56tgtggbSw0kwlTM5DWweKNViJJbfBfP0jmW2d8
MdEB2di1zuClqRF8q6LNQHVNFp/R/YCrik/Oj5d52+5++qa0vIPXQMrztRgUxUGq81Ij6KNaEZua
WyFbldkLN58rgeo/P4rny/bbURmuPqXeFcRc5322CcKBFWcaYx2m1LGLYOw0Au98+I4Al6dPbGsg
i6BOsb2KcbueCRpIJ2GdfYOloCEVBLhMeph3IP1XLyKKS4ZSIZAHsgNwjWEZrLttPh63L54C4Fnr
mbGBlGW9GEHCOjXcnRwsUrAZ36xzRwocmsPw2FyXEWcZV+XJrmxQFMa2h6o81ZIN+spiQpWB+F6z
KWaY859CfTmUxW1i88z9+rhp2nqgYtM6hVhD2UCJ4aaE+ohPaGjXM9yUAITxU14nuprhptQS4tcY
qbX48rHdHd3eL2bT05TQYf3YhYrcu89y7JTgvbw0+TTHTglPwNOSdYevv8wpoUr6XUSYplJdxvXy
OIdKl2CJfNmeXnVhTrWYDKAb1UEKm9l1oil5wYDUSj0R6mKUZOCF73JR87oCZipj9SCaoegfAe20
2oJCWoWWbBfDQMuVsfpGKbEExkBeBJElfTwuxiYldG1Fm5Q1Gu/DZ8ujGz2ZM2QqvF1UVoTsLSA0
mNRsp6zMOqC1XaA18OGLWwvVNNQ3M6YRjSX+g2Qk4dgDk+vw7JWStEJU9pg2W5Z3mVyOTsmT9bM2
3affSE0V4GxIS8hBQ4Vm+Gh337C/lC1HrKf3pjJU0/bYHxgsx/vl6+F8/PXgR6I6+/FwhWaq2+56
/HDcdNk9sPUHcMGVDlXsU/JvvV6MsKn1L/ohfVGxFOTNlxjdf54O2Nhw375pvYOwyph+lyf2NC8K
fzd9AeCg3cBz2+HQ+Ou3L4dD8dhjz38+AkThKn91pLxu/7o7XW7GApNEhQfIlneAz3Es/vfHxc9p
OF/8wsZiU9oNr3U3yNePws8HKvi6L5yJcjtYv0o0oMLW8+N0gk3r8F74aZt+nuJfSPJNArr2u7np
i4SGtkUvLwKsBTdUR0bAO+zSJihDGqct+NH2xT1MdVqDsjjojDlBpUFN44fpAhgYpXt0958fENbZ
XncAImrSf6Dzk5Pvibh8zZePg7GXUBEYD1GzhQAlThvL479thU2IRMSEHb0wgzSVQFNZQBhiZqQ3
0bE8fmu8ifQFM6KcCDzirFPryyE9ZqZEcwm6uTr71+1/D72wu93hZjDVQK+DEJZoI8ahh054Vy/b
fUmADImNn6vNnmSjQfMhYwa/jK1Z/mrJeGIE6gUhOhhfDr1wIa8n5zpA2AA6h6HF1YmptWpubAR5
SVsx1M4wZly1diubw7fjydhPujCW9w/Pbr0EnaRT+Z/PL78gP2rh2mGGzPUGbx5M/Y/D7uhYwL1Z
g1LputEHqcP45Nvt/mULCiVoxhus4qXJ9n6/GscbR0FB+OM5F+EOG8Ir/GkcrROWUDnaJtMwCaYS
6ssfljSYOsHU8KeImE+mhJ5m4Xscjn3wlAQTWp+A5imZJBKD4/R7eJzR0oli3iBlv2Q2/4Z2F3B0
8RN3z851O4LR/NY2m9ddA9Fj2VJ2a0w+2u+FZOIYcH6+3O8fm8PfH8dvdnMDLOIrAZo88v3j/YTP
E1qUHvdXbUZ0BZ5zHb9nstM59ltkfJ0o+OM+td7kdV3ww9EK296gdh1mIN12xyNgL19UeFZc0ZdG
w4o9WBZ9MC2gO+BcO2fqjP9k7KhJO+KYJViwvvnvv/zHZjLuY8pIEUoVb4fH/rIBirb6p75crclr
DKBe/nDFeNNtM1b611NiBEJ1iISMHGaQjL7mKDvvCN0O3ibs3VH+BLk2dSYv8hLxAhkdjn82jptP
x/vdmy5HJ85eDL6eq0RHljQUlzlfYKEf2jpzWocUqPOTr9vDjw/3H98214dxm43Am8iA7k62gIax
QemF70RfphuF9xHfltkJgXejPRB8mecj7Mb4mghAyjcwZJR9oESOL4/7wTiDD2o2c6YG4ELqYfNy
fAu3YVxo4jDwQofqmTs379udcY70+wiaPUX+fN/e0cQO9rDBmJXwMg+33RYGvb04K+TrwZBSffqa
FUSEr9DZs366mYX7/x//9v/C//jtRQ6+wnlbbw/0OULF7e2laZVqD/gqBLT6zHv49//+3eZ3/0v/
pknfsLnNoNY2boOgQqD1RQn74QJdWoBchx8b83Rtts8mtqY5I+6g/w59RJ7B28tfgSKbqdK/m7P9
hYaI22VzvG6U0k/cYx0/Y1zzY3N47Da7s/5VI3wV783a5Cgezr7tKf0W1Ubtzo7y+if9kq38KKU3
5OSjE67GO84fwki6HsLs14ezVrFnwFCvkkje3W7J2gC7H79c/qVsWU1p5lmDaWLfDR7VF/UzwCYN
8dAI58IA1K1MlWmeJCnLdXdv6W5SM/CM6oa05oQdfGj5GHfSGhri6+U4bQwd15Lxx0bNkmQr2W+N
pKmDW4BgH1tDt82z8PE6q3PqKkGqZjRvDJqPJJPRKYiPFDTSChOTuAXDyjHqAwFDxGgoMFubHbt9
tjCVwK/XRaPwdVDFmW1kcEyyNWFIaF8/0c64skR2COAFRexMsA210BjMIjHb43rafLk4Kx/It4rf
G+G1/YS01O1ueCm9YNb/bfuxBX3DrJDjD0N21cL+I7+G1My7SYF2EuyojGs7S1KQde1LKQLr7N07
PeweV82T93yTDElwiOd66ZsYLDd3goeY7Xq2dk0WLMLOBeh9Z3+D377CPZnpwufk5YYLb4wb7yS7
G5SKD8taHsjUpd/MKnv8G8UA0+bl593PgwfGvz3eP2zXqJ8lSbs977dHt8Dmb9DHdoKxQsbra3ou
6llTdbqI1rqI9HahMCHUJQD8lzPh7xvvIBv777P9NylM4BXV/vC6df+96orVdInUK5RtXaue9Hsn
JwqcwzrM3Ao+IbkgJYdwFKRAjFUUtPwwZnInZwn3g8aXlf30OoP3B8EwOV+SYUSDvWMwTg2Ged1D
HDQ/GQu7D2d8GCzQ9tlDjA7xGebanI4QA/t2OUK8IMnVkmuc3gQYQaEcitt9KetxeIdXcrr4tqfz
4bvet44Ld8I9/9x+uVycn3k8GUKjzQIYQzgi8vYGG65JYP3Qf34S3gqyWTiYwSudoN4xOhmfGGzA
eKbpAGzu3fMzscMvg2SXsWtJj12nQJuFs7pn86rg8NeC/I2J4LJlOQ7C/e+djP7X218OPzzuZrCZ
3GNSJEYFkIToy8GzjXgSXuxtd9fL+/ZMhkPB+qgE4f/l8HI9fMf/fnLqQQks4i76uAuW3/af69+M
aefEg/53Nkf9qy77pSAfbn/45b/g0+kP+odD+jni29PlTcXLwI/m7KOGu+V1a9BjSrukhEs420H/
qo1fYc4oVKGRHDak8CgEZ6PaeLnsDbNr6JW3dILKlaI46AZBXoMIAzT80/ftz5vXv8YGJPcwt9hL
vlYzZFZrjr2HQTTbfqsz83H4/8Z4A1r8++Pb0Xg5VS285NxuqC27IUliCHiEQeyHx+7rFX/dkKPl
37X8yynT+IHozqu+naCQO0mNv30YVE+aILIrZBW/OFWwuVydILdCjq1wYeSe3i+nw1Ud7eoP0GV8
9+wibgaL6vT7WPZZjUsVYnB8L2iO7Jcn65fJvgEt5ozFzML58bjhBODXowrbjHuoBUMnvndUeobq
GybhyeacY4UmpmQTQdS5D8EsIN3b4Xy4YmlUeLf4vS+TKsPDg9Vdp0BZKI3m9cCYcFO/bUIEPY8r
e6RBj9LmNOLp9IJgX9eztYuWdsFHnR0xIe2PQChc+oaCUIbmhjaZCM/UsKqgkCZTOhdvFGz0Hw4y
Od///rp9Q+AxY8djOjgz5r+gC2kNwsDDNsKnod4BLyGMFQwZ8Qhd5sV7gQLVnN1sw4Ofp62Ggw9f
NmlXo69oC/x0+QFz8LRIiKdFm4jYYYNBJ7FBQGg2Z3IiedKVCHkuQsw7fLP21IYYUZ9VSGa8hFWs
TvViBMD5I4/3c4G6zTRk/FVz6oLzhxT+oZOY6ATyIDWH1QaD9ukcDCsXfZdAEtBEb1hij06V8epD
6KcPrZ9N3WV4TRlxGB4d9r+VCFMLbHc8I8Q/K0QFfy9su8THXcYEHdUihlcRcFEvp9JKnSTr1L5L
lAmzcMsLZg4F6paQnUkYkfLzMi0MPHi97B630v4b2v/IGrgrg2XajGWGiLu4mFmR9bbpqw0VMS2D
fK0N+vXCjhf0u24hxmDcf5URz4bI9qduhHv+dgQIhsPvvPD8nwi28ifsqDAYJvHyM3LgHssofm6g
svVm7J72QlHO7H1BKbSX+J6fjafVi0/LV7TBMDWEakOFEcpsSpPUcIeJR9A6HHjDa9A0HAmi8PrT
cTkELz7QXIf53pO9ce/NKNzigndY3yQO2bC1CRkoqYctJcT9a0xtSfvDx9045jgslprtOlx8C6NK
GijbuyUCQQWgabS1bSXIk5fH21z33WjsuhOkQZT5jnqnn5FvLmXTZSJhAKZxPVbSBd0e569a8SAy
Xy3oNI5XRyotznYrWn60JG+qCtRNxlPWxPNFLWpHuSeZIVjFnpZzxkM4ucHQfaZMWr4t/8LWWPvN
kJQJA3d4MooM+gyCTA6+wnmPTVvFMXrITbVAFRWNBeVyl/0yG5nmOx+zC0KK4CjQ9+31a9Hgb+Yq
M6VjGiTwzJOTZSwkGTAahro/VyV8EWZlZpZUxKIKlTeeawrPLAktEDRBzhAS/IJqBvPNgiqDGrEY
jDcYTlY7uUUPraMGTdMSLbauh2ld5wvWFjMJbLBtJRzAq6mMyB7tGW34W1FbSeaR2m2FQnySTEgN
yg6ZY85k9cgu8Hr5vgHh9sGdPEPqS/fgBbbe/+xvsFG/5G2IXCYai3Wi7nvfntz2390Le1wNIVj1
gjUf+gj3x29hKt7p8OOINgNMz8qAaD/lAjddxjON8njWmyT57XcanJQhNMk+gph8HbzRIL7jXDJ0
aA2jsu6E4MaSp8rCpW074U1pExY8N9eZEcPB4TeZzWhwANlOvNyBsWP2nleZnUMr6bTH2wa6jibj
PY+94ODdPhxzOGb7y+Vy+ssxNrEbbDFIHkpt+JX9JBCeLvCzfNk2wqNioZ7NbnsD3rwdzr4R3DgL
ab8KEb67ssfiPXBDzHaCD6SOM0b6UBCQ0p0xaxwOhqwSrdcy1425uTpkVfzb8/F9WzCbiMWe2iq9
8/COpICmno/t8Wr5hOz2KxylwkKGvhPQQIHxCrUVjK/vcdjBWqOgy53TJRuu00qDYMGr83fxcukL
njiKv+q5/lyMC7V19uqG1JsPEvTj6gyLK4ijAiHHccHv3Fv411fP7u7P2AxlyKBZIET2bpjmAVXp
xFoAYihYKYldOmyMM4SFQa1WMI89qfePj9Nxh8ax/wuMJRgHrQXv0+/nt3n67SiIr5I7cPQjZtaR
cCB5UslRGD4htnghoyC9mdMKdsw/YLXU6VWCmhhiPc59ezzdnEP97gjwc92tN+Mk5BdYdqf4uCdB
3Xtp57Gr5nbsK+Mo41JoBkHuR+mha3Z5cdr12+FNnezSjYOA4nJ7vNyvhxhAvekf9wtAsIgwdtnu
A0gE1Krut/dtLPbcpJSu1vY395XQQPm37bdtKGWBJR2HXl7+dtipzYMTwwsgSegO5v6zy+O68y2Q
m1d38eZASNhQOwj9uI+zX8AJG/XDrsna0pus/o3Vo4WD4S7ArEDyqSejHlV+siMkWLbnAyCI+DrR
m2lcwXTf1F0KxAq4M9RTHEYmv+G/AdHVLvKJKMTQr9NKe8eK18cuQRUdYa6x1YE6tanxE+JDw5hl
pDExrH7ajEJferisnIn0a+sFlIdEifP22/HNx7ZewPR7cVbgV3U7fS90KF8Pr+4/+xJ6aFcsM9dT
RuCRn+rLT6eOsTbm7pyFw/2w10+WwwT43Vz8Mi9baMj94rwkjFGa7b1zVQnABwbrtPpVT0Kf8Ben
jC5OEruNfN9e92b1Wh17YpeX7om7ux7CqEw/SVi/KeLhIW3kcQaS7B9gDxxCPskrHJuD524W7h0B
Pjzwom3zxEbMJZIBkBLZX3+Lc099/lUyaZAKB3+pQM3f/9d/hmzNH0HYGC+x5m8hmLGhDv3j4myb
nwhL9bbVoRDmmo5CHqQzLbanUB+KR3KGzM2qFKljXftSNYRh63g0QKH09wN6JvKPLiwS87EIICAQ
wIAxd8DTA2EGTe3QpGZ7hpIL9PnD+U/Xy9vVwO2YGB4OT+mHF/n9eDr9cjjv/3z4+wO0ObbOrnib
jaCuvh/Pe2fQBtsdECjcV+6NEQDa28GX+avrEtgCAm7NccwZjGrb/Pef/6ifUoIjcPaAY8nNDQva
ouAg2aqTuxXeBRYaRan67WaiKkxz0hA9LNbHASGPF89DYRNuW4+rr7p1POD/J/PJ01NhU3fAPnCG
5Qs62KAyCH9h86YDo0z0iplddowiLUCbRq8dEYz0V0N4Ijj61b9hLLzxNpRHXP24fODfhfeDO/RA
vAAbcdn/pLZnvfawlcq4AX/RLw2KAURokO/6OgTTgJOr6joI0LhH51/EMEWBc3E56k3xzWsNo8Fm
+3HEpgDHQ9jlwoisr8gamxj4QDqo40T3Zs8744hUpwprDQ2fmLZ6EWpRgsR8qHQJx4q3tUlU04t5
/Jl6ARsjvzwY/xtXc97//gR9/bqV6ffYCggH2UHvMHkx/ZCx0iwVOqYN4jJ8YWMlqi4nleRXAR3r
zExfbnzbQG3D3ah8nAmPg9lUtCks7LklS6bI+dSHwcJzyxv179aoj/A7a7PG4TF/QtIzd+oTeQSC
AQetItE/dKmnUuZeCyrGX0ZP+CPu//cC32XWpEfy+eLepxGB8iund4+1mLX2SotbpBJbDEUtpNHx
trn9PO++XC9n534Zq7RCWTdtx0bV8Ssk+crq7TKyr1iE+mERy7OOnJE28vjYI2oS2Ghmi97cS0g2
JosFQ2SFLmH9ylRQvXwJ0VN40zP7/i00UkNmUeWF7N0azTcLjYZP7/Z8AjxjqIFxMvO4PR1/LRCY
NTcNz2/Yq0GnvCIZ7tftN8DQMvq1WKU2WzHd/TrRQm1ojJOdGZh2hsN00QYP04UPAMsF4FmW8GPQ
Lagr6v75iWA0CcNKh/PREsyEIsMsxeytrOdz6kfUdBhEpM6GU+ifyyS0dOZxkstPZ4IkExQpmAtA
XzVu0DAJGYaLW/oNYznSR5NHivjETa+30HijZIdVDT6UCO5OEBmomTbBNyoA1XkIoSUiJKmMsBi5
Q3poITkvLEPgnVfoMEBQo4NHrHOv3L2cdw1eqI7NNd4V4k25r0eoVLte7hcotY1XrR+uFzAbvVew
u3z8xIofdyHB5gBlrnvALMyAa3V5tMtLRucm+pnYb2AY4WXrL7mOMGvk8s+JahiKgXvYYF/Jm2PH
x1WnF4HpMbEd3KDM6VsRiiMwPeaoe/8MGTk4xOm5vRtc0VHolPqTWUgY6n/12E5XCwGRwOXguvr6
Ah8mBknnmM0ZPWvDLQRKykeKoNSgsuTk/V/OugBAfzuFxdgoxCjpNuTe3gthkqoXgCNjoa+H4H2c
sexvGxNP/m/B1oO/C0En8EBO2lD5OkKz+Q13zETCKpjAOcGxj0qTRXT3x9fXw9WKyzXp7rBILyRM
YKiue7/gLFwA5hHj73qkoMqQfFuCdbyGUE+s2MgCQPorkYBrrciDxZ0exG0ZzPeEu113IeuLrsIe
GNXyaOqI8Ofvg6BTOPtsXyAkYMe/WwqnUucSZz63CNT5QiRRLbiLvd4kOTv+8tBTMz6eGQL2zGL5
6zjrZoXsmiYTTQOPsv56uF48coYPR+qLUEweSh+auSHd8t9//mPQxY5Mm/Pj/cVIMHWdAIXrVd7/
tf22/cVnUDBsiH+ra7tRWCjpkoWQe2AoKxPqn5N7dZdBmlerQqk2BKlHilpiVdsnYEkmJ96CfaBv
uuVBwxCbWyQ7vxwPV0D3hsbwzeHHYfewIqQTgWEzv8mxtnM9vIcDTYL6pXVSGNN/478PPI6c5AX1
/fhusBNpEJ8yZ+z0u19+WcVHUgJW10H6EACPqrjUQpczMwzJWYtBEN0KmOdsNf/e3i7QaH7efcFC
/1co5o2ZdN00qQWDDs1mx0IgwB2tnF3p/tw7p/HypquWahTyTkzCetvLqtyJzdDLBGjiej9aGcyU
GDLXuZtC7cBMfQTXWBhKq1RAl0N7j3nQ3g8csgYozG2b6ZA+a9EI8hsHMWS5o427vnf9sVRS9nLp
ZmwhOqRffivwJLpLNtJTHeGNlmmCZa2EP1pQVE4VRc9Pf2+NkN3N0paFlqCYCVha7j62Cj2PUMu8
wgGYyRhhHnM60e7h1L07FIu+mTmaic0eoYeWIgoJZACzkKqBmbbUTSkPdoxseE/RhDU+CeHVM1B2
oOvmcL1ervozJ/+jg2MxmXr79sYSqu7f/sX9f1F61YLVyCtkJKWp37dUdxGkMj7071+Ovh0LtaQu
oqn2g5l6QY0HUyBAka9IhdYCIwfp480rXdyMwqdLmzqkmtGyDssWtCsVNzHHeLVB8UmDSHrGfoRW
dKUKVQzNLIgmz2bH//AM71lljRLPx/5MJaVisEg9UAa3wTSu7KMArvt6P2XOjNVulduM6IseHU8n
Yp85pL2skr8ePowoTSfc5NvVucZxcJmPWqOjcceOx0hZXRQ2gp98+wIhiBilzhjbWx76Kces7CSU
gV7c3l6h7A8bGHQ1Oghu2bNYBmGmSuVWiNNh6j7pLFgLZAbcGcL9m176NA/CUzVqnDp9b7PgOKIu
dLYmzEnbOOPlvn3RtWArBIwuH1snl72WscrZqnQOiGKHiaA+vuVPEevIfD4X4XvL5SDTIKkuDNlA
8BfqYPf/pIgOTV3CyqxRMnISjzT6MtLIK+8w+Eg+fE7KuzwoYxLjOAvpvNn6wsfULvnr5fJuOYSV
NDZmMT4E3HkzaVFHQLll9Wk6X3R31sVNZmmtR/StMXxS2s/cTXJFrmIh1GpBy9xK4nBpdeuM2wuF
fsfzh5PHsUmM2N+Oak40vogpNc/l614RTeWpPYRcVRIzOoO3o1D55zcDShGfiFHqRwOLGOxZ0sbe
fXDC4Q6ulm69NYKXFhjl/XEvDXasY2HMMv6oPHf9MLPg7KHHwYBS0qgUXfD2mZDrWGfs4f0FRtg4
wtrZ4Tpi4y7Hc9HN0PilD1MOtmqV6/JZf87yGYUHQc5VkITRvjXvrq7JMkv1SJ+I+K2JmEmJBDW+
91Ew86nql6XtEzUhxqXLRCrexNyZ+9POKYEKDLgLKbpgJueoiJjlXoL5jcyzwuyepYlo9BA2/iXk
XRHgZmCfhk42qaRTjjvYApSmIbKGnOP5y+EK0bxQ8e/4JnSjW97eNEp1+0ZabQWzkVPAmnSWdfe6
JOuWcUuvqK7nw80XXYIEeodN7IBfHC8cd7dCZ8s4SXHupcbCisZgQKvXOLJ6akxH1yFoDpMpoOXa
vR5Mh+2c4G/0Dc3Chm7n7YfzJsD6+4AIzw19FPSjdLE9zqyQv8Lp1yH2BB0k5zO049vEoeLerNYY
/xv9o1bIDD+OnpehswycwNDQ5P7VCUZ0uh7HDTamW7UITUpJYn0wV4rZ1068Xg9vEHG+pudnLNjH
BXk7yOrtjPFr5vkttuOhHsobGdJGgtOc8c+vv/5qjyQdWRCKjI53Z2tcfx7Pr5fiW5ikmbi3wwrT
a2RZUz8BjLkwmAh29rrzqo0Iy8gSEyw6efbGevkhj0JyCV3m736Y9MvltNe/JvUDJk7NbRz/biFO
AS3qj+2bQQXx8UIYgCcc9M97saDltoV4xCbOmwL9fjcy2COr8xjxRAkxF7/zwtJJgBvM24bRDZcz
Rub9dDWL15vIoKCygoJeLqQdsEmBBVwBSoEC/idsbBMkEsg1yBeRBDcWq9N7Cck1Td7qpKqWKimi
nTrGuwJWxs5d2jvAETjKeC1zvMf+2PfjOf6jr228HX/1ncBowoLRc76c09B0dNv1Eel9vRiRHlDw
HgD4uP3xT/yloEqxjRw8rYBS+3r8gcVXa9dX+qbwLA2dBf8IbmUY855akPUFxrTAhEinI18AcFde
Lj/0r6mX1gPNRnTPeKdwvCKZhtTOy4MyizUSTSJaobHenHZVz9Q4we72n8tQwcWB3xuxMzrMmwjg
ofp3ifas6PHVOQUbZ5MeT9SVjdUU3497xedDVqN7HLCwuRapCBeKyUGDepPQXM1p9099IiMxMLed
lvsOGKxrtp8IwapS3H0X6Deyp4rYDwRl7XF3dcpTMzrVi+CPOTfliu0Y22+X4943/+vrTEksMbXs
iO03jsNn7tft0XrMITGHxAS9NlXx9P9/ujx6/n40XSY8Al6xu7qTs6qNbQ/V4v0MmRCLyB3OB3oc
dFFEbEs1KdoZC1cxdCJThg1F6uhbmekFDQjv8nQN/1z5kziwqTHYyXlwJfmmdAcsb0Dc9ziv4j/S
rBxTx2vWf+qRO+K8cSCR+2nN2uiX2C5UWwiTMKvkn/qWeroAjMo22VsiObTiPfWMff2jCo8BAfFx
LHgY6vDPPcLQ5NefEEBzWb5CgfeZCqrV7f9TeWpoxVcPCpn08T+ZjWd6uegKNrL5tkLmkBbq8I+e
yYBV+mekvUAzdgT6stXmxK58pBe/oNk/16ieaJ8VbpZAbIzTTZlZ0DM66wxB4gxiTvUcYmE+DYlf
UNt9CBz6clfFEYLAhUejxRqzPqErh489FIb6bcArr8csVvi0BdZDG7JSGiI3rOmHFeCaVPLkT3gI
AO1Qs7Q97fQ1PPxgPWa92rG4+PIAHri5FRJ4k06eAGmOS9XJ+tzuLx/32OTlxMnFTOh0CVsZl6F6
0HxHjkzb3RfjUEQYajl7IraPPCGRO+PS+7QWRXyyxn01B9klzFf4nDdMxySXR4m5+aYLPW4N+/BT
BpAsVPmnDsFAQqarZem5QMfQB3GGqgvEqzdOkLieRTSeiBkHf+kHqOhS2Lwxz1X/B4Pmf/0PPdze
JSRBJIHUKFBIi3UJwX1BxDWvsNfXnFrhXB7/D+uUCxcbMJwxtuJVfrcs8LuFE+prtIm2zA1fpEcg
OwVFAvcIOWAIK7oqqh9ZQ6bRIBO9Izbf27e7JvGAEeEowYz9dcJaWa1n6TElTkKTeUywbLvQiRWL
zgtvY0h3hwkz/zZ+QJveY3+8O4L7GpfbBpsi9NQI7kmV5v8eqgSOhWvzWJTI3ZRXZWzk5DhWNX1V
ZtLhkea0DRZDeF4EjLjDVctkdWngCy5E9W2fYOow2AQWQMCKIDph7jTmwxJyhl0IgqStBcEB9XCX
V6rWClz9ZXvbMIQfndpDlz2Sau0j0eA0Yc25FpRNUleghgHa/whp9u/HnbG5thXMDcBkQhYvFGKi
bUE7YVPDV5zOsFcmSQM8rRl7mYx2a0+rxO2sAC9wxOH85stYsBZKy1Z3afYP2nSgG1pWpJUsKega
WYKRGjKh0u9wu9tBr7KTyofDGbnPC2RDO5DOo+rkAC2WgCP9rRb0zNgIKz1R3+O3Q3vh+WK0N+AF
pAeAYeA6wOZ5i+8Yob/WWHxDJnLq9NBDsSkod1Zxf/ppWGuSED38+HB2zhkx7q0+2y6BSKO108PT
6XvtZbNeO2/866l5NH/Sg6pnzBQrLgAUc9wiFrJB/EGwkv0KGHeGgnXvq0ExJBaGeA/eo8Ie/HyZ
8+XP/r9yt/S6PVm3XdEPsm5m/EFeqdMYK2QyKZAVvJPHCYEgdNz7LqGVI/0an0L13IZgQBs/+Mj9
02H/B8dyvzfR7roE/r8wIXYZINPlcb5bO2JW0thi9K1ljVRfwJRJykUHCENVQkKIYGMWJVb61316
2DiOMAhCP4Qq1RKEKo1ywWKXRuKkux4yHNEV5hlZtH4gWoYmFkDuQk+EHxYQyVQQYW1FEqcmuPn0
cgpzt7qEiY5ag4rj+fcvp8f1hkW0bmOhPtNQH21mSE7MkEyMhMT+o4Vw5PXGKDitmf1XMv+kBSD6
6CMB+8PutPX5683xdjkVHNehzyTpUBaCTme8/PTJji1i670fGkMeNsJur4cg8pOFEhXvvvSiW2Ja
7ocd9x9HNhzN7xrR1745A2rzcfxxOBnatycbtsNJ16Gf3Cs5LIfzUJf7zb4sc3rBrcq75bx49mi9
5qNva9W6/gAUyO07gODvkh4wzOz0qBANy6/0ftkfX49eAGGBfoRoLtmNfRKKNYT46qrmwsOQGYl5
6wn/mJMVcCQXP9Q4o2wtuHj1pD2ngGiDWN7FkEFDJnmNGKD1sHBkvn853sPU3rScESVjdgAV4SS+
5FIRW0xt7PwuDTJBiUbtgaiC8naalaqoFxyH2LQgIA8E193/lMkaAWvea3DIcwcLIAjJIOPOZgRo
SkIDs+Y1Py0OBTyejjAowKbYkCgGMneYIsRQQEdGQ8S4QToHq3B9dfLUySlHEh9cRhbDEHooxEhT
ZZiRhsUBIWMATSrnw2F/27x6YI6P7dHUiAChHbr581kpyW+hPW1YWb0qDVoqZ+yzYdxRv9JywXf+
djx8x40bGFGwzSqtylDknlf1KcCQ9wDEPU8ZdzPpxeo/USdKsOjiP8q3LRVr9six8EfDOvUQDdXE
hsdr6uMS7YBAi9Vvp4DnnL8hwuMOC+7UTn+kS5V++imaXv5hZFCLYaYA/ttnboG5vr5UlzHzHKe+
YRdTfDbYssPnqtzsJxKrLnupobtIAH2viSl4mvNp1cLW5lW0C46cb+1Hr0TfVlpxRGpW/YoHHHpO
4dQRc1z/gURNBmDtnxnissWpG9H9vzEAOD+DPBv1cL1c7jp50quZsCdVOQqbaWzLSnoJ9RLh2DnD
P/UPE4tjoU+t7+QIRaj6OiSiqkU/IPTQm/ZjSzWrfVaE/RsUDXrMWEqzPZ40LATccP6DmtiOYfvw
836WEzDSISqGAHyoc1XP32ijCSk/oUlfZUjbbXOTeKkMzXuKPQE9xJyhCNdnjp/Th/fLdWuY6B2F
7lg3TdZ9VEakQLlAlmzV+Bx/K6aIioHwMAMGt8TGpy+D+4bxWgkeDGuVWeEEja3guJjBvh96XL+S
AoeGj+qbc0wLuKMsSodE6obV6a/BiH13QmAyhXhSx9pKjqDIa4UDfapmWHA7/IO3ZDex2vsWTFvD
3W2lZPV1527VW7X4jxhSNDFd4GKpQpY1Uce4Y1gozo0xuQYXS/U9TBKFRfwS1ny0JtZK+NITlq2h
7bg9OAKdLwA5/qavkmpmmOkf9vFy2N5vakYLv+6pTizFHMPX+8PrFv7bAGp63m+v7lQqticuR9U0
hC0TllNTjfDhomBwYuhv6BTH60kuoycxoN69acOVm5gzeqIx8cwLNin//XH9WjrZINTTLsnstveu
r0B1dKHLZG3+qjNi7uR9UutKkHsH9NvfzJAa1ev0cwJG4NLTTIeOeTlHmqXz83eXd7ilP5z/8B+F
jGUrZCzv268x9InhrEKSuWukgqFnwj7uF79oMY3XCoH459qscD0+zgJ9mtvd3fLSu7rKylY6ChR8
MiCStDgfDZWyFug3GFkLUpgQ7mnqMWOaw0ecvlmK0k0U+gbfow6WPcPHOnIw9hhKMsqDhjkLY4y6
AgntsQA0ZOgOiud2+Mf05ILvS8wVhhsvFHpS4+8eysMKI1KVFCR2p1GKx69I4Uqxw9MFTFBEMaGh
qTGuYoSL+hRRY1D+ziyGwPwRp0gcrQqTTojHcTAVflFo5ucJP+PC6IGMafY8MfbVOZoWYzMxgH/M
Qj3XsVTQNQkhe5EFXy6X08EdDCvhDWLXrIBioF4Qq/bPyFHUuWzK/L7Q520XCIWprKmGpSkk3Q0x
SVzUpGKYyqgObbqWJAbrlLTj8B1Fk+vGR2qZwIp98im57Cd8lxKCDRm/z45krH48HZFvtACRf92N
kG3LpqSx0X/Gi0ycD9HuIT5vZ1ZcXkMoz3rPlKlwMnTw/ycL4/PqSoNVJ+Flc6ed8b/BYGSyQ1Dm
t6XpDGeoFdwW5ncesSNVhy/s0kjYxe2vMcUqw52asiKbapUybA3jSiraWUHGs9fjponTVZ1gN8YA
f1aKWyrhkWooPxsEaMjiYqKEVrleAmrOl6PxpMkWzjCb/Rs6FnViytUOFdBkqDJrmhca4nas/Nz0
jxTCxEqqy2s5U9pWfVY9PH+GSQzu6AWr3HsFuwvMHirnKFlpF/naqTDb/v2WDPq+Tk5/LHe7OHsb
MmqGniH7hjkEIeeSpVzwDdqVJy1Fhxjk0FFN22Js4/V0+W4koLwMyjaZcYmNZ9elueIlAcZMitow
KRpBoBZ4yOAdqY75+Pksd5j8jnYzjebNLtFH73HNFxgwVhJVnWA6JSTUGOsL2YKSyzlkNTtdkWYm
yg5aU+SJD2D/LlCYHvdcPBiCrBXEIPNXrgXDKAkvKI+fBqWozhBJXRax67JBtJiVWTEQxzM5GX4t
5jrDjCUAFYRSKEcKp6/wHfvq2lKSvRLqBQsa2thdnanQ9R0JRrH1ZBRbB4sB3M395f182R9ieaEh
SEfBeQ0Fycd3S5lOZFKiz+H+7Fef0Ki4nKo1RdxMcPWG4Boyn3hY6BgM2zMwaoNMg95xFhbykGOX
6xEKBfExG8slyY66o19mJH0tPxXXArRUcBmCXnrQXWcCCVsB3g/7I8CeXq1wQW5QdauvbjaubhRs
xjVrGvFLqp5h5uMzkp9vVvGl6obkq4XwwbP5ZhuRoyA9WQjicELZY9geLfPF4I8wEBAt6zTtfPf1
zY5mtCwWxsZzemqvUZ/jb72tybitYY1LUpxk0MVMAS7FqnoQs/0KDSWHMwWyjAIDv5QkUp6vvbUa
g3pBM7Aml1TkUjTqpA6cKMA/WEnAD116kCFAcID36/Z8iyZKtHgM86Sncuc0JHyNf2tIbirKXKYa
YjEwlqoYVSrePJgFybS07Y0YMflpdYt/TEXby9PNMFmJgXrvPggtsV5+v2vJJk92yQMteWNFV30Q
2HvRSLm9hZAXAL/bRhB1GbB+01Tx60nlVdARoLVtR61tslDPaPSPGIyVJBUOksuGFuWFciX7rtHr
WHF0R7lhvKu12PZnooLN1K9hBGbltIaVI6Xpl50PCYHtsLdKtKncuw44Owv9FrAwrCKShpo7sufi
H0gWO1rUN57XlOSyau0U7U2IDB5+8gDjCK6H11AbF2hhjy+tm3YWxpWHnEmEAOFYQ/pSLc0w9ZPZ
CTJic3NqAhrfDnxkwsvWLIrERbspjf+EqqpwM37RK0wLRu8vmI7n0hY7GnDMVLVfbevu5uc7zImB
dV8eb8YydZedNCijfSjb2F1Ol+uKycDucDQamBSS91/8LnzbIEgKg+40iJUhmy4PdQuld4WD9cIV
fmz3fvYN1T8nXEIL3QM3N9J8XGwG8+mQttE/qec0kRldLP6OfLQtngUe6L/pYXfP4EOaasxCblVt
bWCshWupmmnzDerxdsYM5bqexmwecIA99KYbsP/N+OGmbvhNBmOiUpw9/3s0BprtFZB1gUCHMyas
bnhf4DWgywQQNZZEoNPDk6uzN4cvOHaz+rcXjJQtWu6b9DQNLmvoTafX48fQ+a9LQiHk2HGLHB/1
+o4yAOdzhz2+H29BmHlV53vrbjeDYysaxdwsCtTRT/V7xO7zCxgFjxDKOqcWqI0ZgghsOUtHwNrm
O4ESRgkcRbqv32QV0AWBF4Lui/HUWjYycFQlcHCluMDhk0k4zNtxe77/Dlj+AydoGCSv22yge5Xf
J5LDuE/ZawiXmZ4js+tiLHqp4K6HN7fAzVSYLc2LxwFbPY1Aez0eTnuMUgNWhsH/TMDRpSwFtp+L
EoqyDRsvCO5GErO1dc9MMpPk8G14Cf4saLQwhGm/9214Fsyjb7xIS/cDhm7nhdr2fQEwi8AXHIea
83DJZokgHpdJaOJR/npC4Oh+eXtDSKRTYcsN3UlmTyLqiR9Gi9XY1qEnYU/FI2dC1DpxflsM/RTg
lIPAD8H+3jLSWrKAZiy8CCnx+55ZqTDEz2JgSakH2Qqzcn+hSv8FJ90skShJ9aB2sHXTi3ZjX137
rFgASw5HYB0CaziRksamNNZ90uB5muBSKWG7IAdb4QRV21rGDn2CwGvs0Kf7NZk61/vJMmuTEQBs
PId4IcwwQX19eQUOdGL4jIbAyQ9oxKQl/B38N5Z5SZoKWDwWmviVoyTFSv3j6/FQNumblilYDHEu
pYOvR/SzZCFAaJzcN+Qng5Vzohcm3j50rH0lw9HYW0+HpbEOcRRoNKucPRxd8CixwAEx9FDITIq8
DSd2BENJUzxuWsbRcGZSz8sSwAD1+Pz+ai0rpxZMzWDahB7Z0/HtHOCDrDf3vKWQxyeL0dgHc4GY
4uoq446qNnPiGmLH3WV7OtxsY6Np07tm2R/c6x/Qvvqdv2XLbZuexYzb8gr3oKlIzdQpsv/mWAAM
pf+4XP8AMwb+9+N4/bpitYBIhqtRlfvudITxg04MM2uiZCeS5GQgAsCZawxqywCbOzUokGy7zMq1
xFwt8MqzDgxqzNpV3wu2T7B1gsqKDcJPGsw/Upz0uDt4PBME+wdLVw7gIAaljzHlTvrh748tBm12
hz1g++O0nZNH6zSv3y85pSXnfDxwRCWAs0BG5YPsODVAByuGKHIuFOKK8MC8I6sv0KUtwT/1lbCl
wE2J1tosWzxhLRDtdHi9x+8jkTan62a90sS1R7oQKIGIAL6agvfHS/tB/OuIMPG3LbIvPBektsEG
oQpwXqAn2Gdy51h5ppHO5EHzpQvw/tQqhgi1AcuARKN/0aYtsEphfrznI7krM45EBOsxcROQWy73
u4eszx6ncZLE2izy9/TinSeI48eVZld/hYlxwAyeAzLu5ePp/q6nz/LkRIcFyteh8+Tl8VZ3zWgx
pnQ6tegY7ymdghXWGPLIoOwsPFL3jFZIsK7KNhE/bVd82q4SfmvlXpctFirj7qfNM4OUdzZO2Qvo
pZ1hFG3d1pLIYaUA7gWuIdEgbUR07YFUSVeolqO/7lbY0LOSdFLxcgxt3zuvl9nDMJbvDBUkCLCC
BumJOalMsdISS0i19AULBJjPe7Usm+hsPQZ+JN7AuP861piym+gS1wapw4Tul+N+fzAudWJyvsMx
NQsX8nmxT+tbpssn0nzh8IMzxgZDUIzCA+WGiXfHjAVmga2iX8fJbeI5IYOOgqjVn3eJP4nw/SJo
BJQFt92Z3ODh+b5jUxJPRGKclRXA9Q37q6T+G+mta+xaOirdIbnA6w0f20ogwxWUch20sijCjVXo
6ZNztvrp25qdrM1+Js2uKqwSLVtB+9lWlv04STKBKVHHnsBntr6t3mKTSd5Z2eJ6+UHr+cEXRRNu
jQGSzs0g020XqnTsPuOhLlpia/R12gxrZhS8Cz8V2DhUsxADLY82OZaApdYLFVoNCt2c8A5hp+s/
UTdUC8U4+OoGCmgtMjUrIi2Ug+ByGvYbsIPc2lZApMqygG2SJ7hEVs9RzAzMsxADyYJkZr60ZeF2
8Opa1niSB1BK2fgAoqxki18O9++AdhzmgHmu92lN+AuL1ixqyobhrM7Imhm8WYhxKYmPzkp8pMhb
ixP93J/8Xbj7PGbTYALuWCnxNjXC3Ybw638ez1gRtYZdaXssqFm1lZU6qIRYdRpiBBNhygxBaSVG
3RC4TaTF6hpE7TsdigRp6ufgKAW6y6UDdry4owA9LY8VDU70/wUW+BNE5/7NLiUOnCXGkUNSxAfU
oVwpvC09vhcusBaqVgJvLVN/Fj917HxzGqxHU8JogqvaA+eP17WC1IDURbyDFBz22QsjaJ3i3Qy4
cnV6vlRuMQiRZ7CEwng/uIzDD/entcOOYvoM6wLRo/5ayqlUvRBVVisxQg1G/Ndi/UUnJBsiVB7i
huL27PKIhmQDgTlVzWSVIU1CTVjUxf/4rXX0dhjRQi9k4aFMrVBx6OnNNKJvrKa/LWbIGyYO+ZTV
qrHKp2gzTIY+lzqtLjBshNRQzL36ZofclbC0/iiQeFkl4jdp1/S1kvXxgGEnUKMICPbe1K2t+67U
NI6v3MBj4XrnhynAyQRhybPGLFSRcrKaaWhZKbXwJkAppfIfdQJXuJFGrI6EW03llSH8BTuDAhR8
DNyztUolSfS3UO4qmRKWAmqFjG58136soUf8O37bXF5ftXbHYC3NmTbr8rqp8ECegn7JV9/+TA5e
JuT8/2JVVw1COYRi7TVmhq9Sq3E++6brUbr2jOssBTeOQrHwn4NMQJiUzTvs5/4F0Noe7y+ABOcr
NkDZ32ypVzGC+RrSpQhDy9Y4XjvoZdsgeSHZ+RbQ6V5PZmEne6lkcnD7OmjPEsWnWjKqhQpgryBC
sRe83n+9Xrc/rRoj5gUkbNGqtlSpWLphVhWBNLXU+ZDVADSyHLJKk2bBxk7jl3GOqa8eLFXsd0ni
MMgssRrBKkKQaupT1MRsDQzG26gyYPZUvRltIJSG5yq1IZxg8Euqgir4MC09CY6tfjlFb9gfzQtR
y9Qh+oI9Ns2fVxhXy0IYk+XKcHej1PXLlx7/OAlGxhn40G3Mjw+D/fgG3WXqKOA6W2pkzArTeC01
7ux3PtRg1cQParlOKEn4XAdIIxmuoZgrK4G0KnjbaVAF3coKeXyg1j47/RdCfAamlLincFtf5tO1
VKxFTWWJ2XzF15oC5lHYXKqScwQILSNW4GGSghchEmWiW4cqLqlk/DMOjmE8BBygxfludxjr9nY9
7osxkGpWTfeltQxdas6SLRnN47PAj/r4f+q5vWBT5fZzyIG2/Zp2lrkXwqDfcapHISjYiVHPnINR
jP4mPp6EglcPqheLWu0r6smhSWWLUZH7OVV87ABIhtKd9616XNAaH9srQC75Ok9Le9VP+wo7egrb
AMwjYFtbArhthLvPtOr5ct7kOgNiRLHs2jxzQ0KKISZWlWVNUQWrGLT0Fgx7JJsVoqQRYphxvHeM
0zhKWTbMLEVfG6vWe2qkRi/wSuuqWlvS2DBjhbWatbNl8UtubNVY/TmsyJaEZdVaTvdcC59QFHK9
UxCQFXPZFSNgeOkhXX6/X971Rt1gOqdHxrAsjHBNUcvqpmfURRC2jaioxdh39XxUr1SvyI3A1zBR
DRJm+PeYgvtmXfYsOPVPwcnbO49UF1tdpHhK7j6Expei/5C0AwOoo5Xgw7WeSDKoGPwmu9iQjMWC
FHCVPGIcTOEBV+XP6DGVy/s7Jg6XZfhyNTJPLL8UWk27TshNKMaVY6nt/m8PSyh18yDEYLzxvNCU
sc/9j5c3+K1ipGgU48lWrmmc1JY1fj9B6v7W26mFHqe/Py73AFQQDGgDmzhY57VwyzxfenOu1gle
0FePZAT9DlbEmuks3Nj4aXvfEhpCQDRFvJYdis6BtdwtyS3xbiqCahzPu9OjMF8g2IxSqX1qRvRZ
dBA8K0a6BCXdrWru2qSTF3u98o7HNnMgLlfnTb/BQGEEMIPXCzj2ENAqNIdI8aFMIsCUxusB0AxW
xPBF9zqGRAgJoRhJaCktmMzCFIcI9bp7RIstNa80JGmzkm6rR21oBIvD2/B+ByGsx/7Kkj6d0Gm5
rvPZ1pVMXlJRFATqrjixI6tvtfCpg6kxCp6P3+bbdev8tS3WApmZrkmIjC3U41pNm3YTR92sJhra
pMU8JUVZaNhLVVsqYZgFaf0c22mt2I4UCb3H3vbX46uT2PFMa5qzOxYYJb9wHZmcgrluNz5OWOAz
CeLhcX7cniBTrAyq2BilZDpaS+bXpMyRinPTLIouwDpAUYMzykrjCkOnYS9cjdehuGRB3E+5uJ8U
wXe7b3df7eT31D8VRPhtIF+HSAK6/u7WjntTjzcCxz7VpqwOJQ65BqqN+vrVrfNNx4xzFLjPJj94
7KiC3R7NwrGGmosZWp7Rkm4FiiVQlmJC0AP+lCscBingFuDYYNodZKst9529gRqnXwX5NVombRI+
oBK7kQoEty/Y9XIoFsYQ8g6zFj7nTmz+DukVa8yOt3Ympv+Dkfgkay1JK4Zd3GH/cN4ffkC+kYy6
/fH19YCYeh73zMxwELpOmyACq662XNpO6KsXwjWrGmBFrJag8JOv5c1yPovSMk9YiWRLTRqrc99C
vvu3ZcInvZ4MrryxwsVCHGJtzqYh3AP+LrjxhG09oRa58DQbYlxmlPmKWeidjbVt0WcqmWUNQ6hi
EAv1YD30XqVkTPfcf35Yv9p1Ut3sJys/bAyHAKi+wJWpKkuCDYOgzzjWlEVHqfAphuL3ZT+iJcQZ
NgS2asZVIFm9wBTe9CpBy7RSwDQvei2pWAKPYeMegzCNBSw+kBLdbv9o9suQhiVvW8FlegaowY+d
/4ZXdoz1DLrhgQ3/IQBch6kowzLh7gclGKiQkOsPBn+dmQalGElWb2GsPae1a/yjZR4jHDPL/wBy
r/fLN88EMn5kij+CRXx1gMIPweTftmSXlsQWk4F7uv/gbse09FxTg1Jev+J/J1UgXy84AvVXixUq
Wpb64vw6v3Wng0hXzX0y9tYkLghpGWSxvXvk5cqJRQhv4nBMycAK/+4jzBgaJpUP0VbLuyczu0NZ
Eq33pzhqNLrh6f/ixUPx9feykrIKUUcJxy/WWDPv5NPtE71UnSN3fFCvx6YUxGFgV7yV1Vd5RTcl
iVPvXpTT5lLljjv7EWxUqxxqEMj9OL9cD9uvnlegjunmTW3LJW8Fh45slTNWJjjX4FvyoPbH98PZ
jkk0tRSWEsyPFYqzo4QLC8N7ojPkuMsPSKZneIwrvf5qFGHkrODgKIHZVe1keQBSbaZHUcm9JRj1
CoF054/s7infHXjUTHuzZowOoyQq1W/363FnpWGoiIvRhIJqTHqvVcCBL2YzGlGq3GLht6cC1ygF
3+x8QUesyerTUOiEiUzRiY0k4/Wbm4MHODcd8ypzD2M3pGWtU+DJtJxCpG5luUdDgUHWW5knetel
eGupquUfcg7XhEdGoSq6aqxnOen4XnEzMCxls4WmtzWigbwolno/nlNbGNpda9quCH+LlaTwuqBQ
vXrDgt7ivlrpQpwfYtFmEHyf55IEVoVyW1uf0GVp7JY5Nrcv1+P56waQFT8ifKtFpTHrkumWId1/
Rr514L1mtWUaWKZay2AbmdWsxFVXFvEOApKjhjsU5IZkMQbljeWrjlMB3Sa91ePNg1WaML31KDDr
Gse/4OwTiCxNv63a8V9+qPU4k1AMULVWhRLLMCw1RF5Sdkb44gx41ip0a4RYbZxgf95wH9KTYlWE
s2lYMIMjJFCQc7MUXxH6o+SLd6oBxpE63Hr7yw6MAkvaUGQNErHzMipnBeWkAsEUag6VgvcgaCzr
aRRinoHRwSzBlYKSfN/+CKGMYiFap1sjK1A4go5oxTtEJOjQ8WK1NdAemMy7ZtJs43EHsFSgMHsk
pI8agVrBGH5S0+yk1uOthSLqqrWMGpYy7AVs4M+WrQ1Sf0ysv94fbs6E3sPIWJpbsaITfBZeyXPG
DgK1jnrvZldSO7V2ffyiaL9Yptc85QCDBOPVN6UxCRI47/vl16PjAmihrKtmHjaLeq3aysmLoUix
PqtYzt5Pah+qMOaiKKKHp2oR/gatJ9jzzpcwqYklG397y3DDmmqGZTJyBU5NkDCdCEa8QiNbD5oq
sOqE6Odc2FUF8rMI+WyFemYpmfC5VOpvyyhJrS/RgfrygJFy2H1osWklVQKtYw8LHpmsXYjG9bUa
EfChACykd/8bAj+UamhbZqACD8bZWBE1YmPa4QTYy9qPls878a6vE7bUbC10lgkN4la0a1KbS7Ku
LytBSBz/hHng780Kzc5Z9ehnED6KckvonufV9ATfY9lHvQCxHF8VG9iRYW4X3cyuUqmOu0rjV2/3
7RUMr6sfibkKQ5tN8IHd1xXXJVqVrWXxTgIJoO8bh5acNrYSaFjClLU/7bYYBs8mQ6WiBhMrohHE
awwJJ6APrPMIfXjsxIVrmYVRMp72Nycdjuhqowiyka6CQpcmYlwPH6ft7qm0yzJ+hGatRYeLRfw2
E4VV1nFlX1w3S+gTAtKDJRqqfwy/x7JaK23lrAL48ON483K5VAGcI+541Xu+vJg6UN8DcwXLfiDl
j1jr7SfxEdYE/iRsmqqx4iBU+8EindIEg9WjCwY1jJDpm0/OMxnFymiGAPNyPO9jB7L12iZJWLl3
8l9+1MWfD0UAIKkAv+AXWG5sJ440aCz/kJVLsjCTWHZu2bGzCD6D6TMoAkVwAoj6WsbwLAl/VqKw
ukmzJU6El9q15eq4dbVwvaSKX/y4ei+qQ9qboLJiPYcnpRWFasywa9GwGiQ/bmkuni+rE9VNzUDe
GKZr/n0ENrAO1grufVVb8UMWzaGQozVuZE3FHuX+mGnip07RE3Oc9uVyPf4KsQa0VgrzwwjZZwBj
Y6j4va3ALaF8PYvoKLXYJuhMZxuJoRWnNOeCMiQTzT/cnr95602oobHufRTuPVpI7vXBsz7uQjcD
hnawNtU21NuuVuNZZLb5sPv+cPd4qs4wNkP+bStUKqwdQVIAmZul2CvstFBa0HSNsKmVZRkl4Ds9
LP1JTItaMGoWkzJL5fr9sv/Zq+O3w48wBOXs1M9jd78YxlXFWmaos8cPdnQveN9upsH6ehZiC39/
bJ2NhHOlfIgbHqKxCJstRWVtHzto4YfkXm19mswAdATaro/T152C+nK4HczfpaLZJtUUph1bpx6E
DHmcY3xFdw8e+2l7M3++Fnzy/eUd/+szDvu+O5Y6gwd53e7u2iA2rACrUq0alD4EMjzOx90FhiPd
YEwSFL2oqD5+kVQDGFIBsWb9cgtTuSG9ezIrHYeKihQpWnL76cTUj41T7BfzFKw+MCXAoUjsD+qT
998NWWFkmLNcViIVOfFY7zbGOSUQELAYgMA1ido3+6fIUQUba6oXXN5Zu0xvFL38Mfq4zgHbvG+h
rfH79rQ/vJt7ZkOj6V6wLcWpSj/WGkoB7tdSd0/VSh0q79sTiFj35g83t6L98BqpsOPyy/1q/zBr
XOhS48L2BI/Ex3FOh/ObM22cYI9zwAsPuRcAEw679+0Gxahza7cAGGaepVrKz2B7w2zwwxU/wvy5
iqQ9zNI8AXeCs0+ZvV4v7x4g/fj+cbnqU26GaRQGJkgL+XHtxkKTMIHjcQZ/+O4MvRuawk7FvRmH
qoUl4rT4685568bP0/wU/ip3D3SGoDkY7PHSIUZpdsFilcb4nMYTVHC1IPYZinqkwAboe0bz+nwz
VpuFEUuLlewVaNwHa+4rXqQ05wcrKzf77X27eRhjXQZCkUfEwqaK0Zrirw7C3Tuz7avxSS9c1vH8
8bB+phPeDR7O+KYVqJgzhXGJ9Cwq3GYFZ/MzErZfb/iNNsBpgqp/pAtGi1k9iFIhgx+M8QNk5vBj
6Hnhf+5v0j0n8FDwQsM/e1ME6SezFIQpvd0FlgOzk8OShzsrDNt4XaMu5MUoLsTm8PK9vYIBo8li
nOTQxCVAT3b18xLxePpxhrQL8lKzJaKJ5unipPvu8AFVwgd9W+lkOIh+el7TA1Zvmh/qGh65A9eg
hkMal6rfjy9bTPfTPP/4t+PhO6gEiL6AwX3VF/Og8bBYjaIgkwXxLN/eGnWBIR0Dy7bqQSBwKj1w
K+n0aNNCE2reIuOlpLDaWIFc2CVyEUJKfr7rjqFf1PqVDb39MnzEOfwFMoC+qynbVfW8qw+Il2Kk
QGfDxAk4e7gOoIwv18tX56371Zypj8GcnxuUDzpXNRk7tvpjdZ5Xr9PIG2P4YilSuDsdP7w37Ryg
wj66EneHp3UE4IfrEZ1s4876RGhucCzYW79xojAo2npawT5Q9vVFX7GTnv0RrFWIll4/vlxOl7ef
On3Se+thR720o5B7C5kC55oFI+9vOiv1XSarB4u1obPGUf5myO2GhC4Bwz/zZYEVamLvZLfSnuDl
X16NHDtK/yTfWGtjRqyQiBWIZbFV25qiYHsrFVAjlZqSGjmewfm5HXe2jOva7NFJjwZ7/m6P19fj
D2ckR8WgsyltrZHFgV8R8c/WrFcJ4gUwHi4Yq7xeTreybBjTMbF2qC+9RUP7DkN2vk43LDRwdeSC
WefQ3LaASj6wji86iTp6glRUFdJou8v17EcyWeRpdJ5MOkWXAGQJjGhrT6tEr2XhJOpgIC0OyN7u
jz5NBKBTUImwT+1A+kuhZ0yln6qZmxt0+u0lUcoK5OgNH88pKx6Eg769WRB3a6WMQcGWlEUPQmKx
w2T/fBx2PrCqpyNwOcYgwCHVUmwVjJY2CWQsoGpsS69kvfQN6VY2Pzlb73J2hIJHDUUPx5fH3ZCB
U0lirWSLbhB4LWpoyGf5RV8eAK1RGquLeiwtiMiyXS8JLsRHYTGr18sVDQk6uUFJskspMCI9XMtO
Gkp3u0LKd2PGr8JGDmcIPesqsasE8y8zHLzcAKFYsB5aYaV4jbcv270SlsVvEy/1EKHpp0o0GwOH
m3pmEpl8f/h2BH2MhVivW0jGbPTaBtxSbxpDmYFWFFejwOEf+9fouqBQ1tUMmWUdxiv6VXLA1BTM
0mMzP0UL5oo2FVQ3rrA6Eg/gkPeKZajbH5twCR7M6QpBYZ1i5NXA/59017RI+zZ7q4OiyXy0fF80
QIohFk82KJ9YafjVS8eUeoJ8KCuwGujxBxRm79MA56rTQla9j5FByIq9RjbT1Yh2BT3RZ65JQpQO
BdP7yyM03WyVEqOJRDvuAhR11fPFPN2ciEhQflDdofsXE7nNPb4DLIZiKdv9dfsd4YtiSw/mgpHf
bufth3rihk7MMilYrRG2iqmDW7gDnXQdLUTh5fz+4jAXFct8IsM7v718HfDm3NfqEkNigGBejs+k
v53gPV7ejzo24ERWUZ/ZudlC2db0u6tpS6x3FKRDlDHUC3d7vHhBEdtnVKK3ickmEPlTEPk5uZy0
ABddjwpHj6nPXeiMXLqcnsgo7bNy92wB49fr9OsIrNMLR/jYXtUZzBOFFvvMxfJL/BlX+PNx/3Yw
4uJ14jqm8gzpo5/GV0Evbjq88fft7SsWFmFTvJomwOdERKFotGeYCMkFdcqIzYjNvP7Bq+PM8a0n
bhlRNTQSqf2Aoh8bbKNQT9mntABHk//4EWtW1Q8rEmKQ3Ik4Mfyufn+53w97Q8DP6RwgB7uhdFmN
fllpJRYhW66E7dw/gh1nXf1Ez4i86gV1j9fdSRd+PSkNCtU+yy2dvG1fesnOiQse5+0L4B1rEzIn
sk0XqyFuzjMrh5X1m5fOxtVyp6vlrqgTdMzFibyWPot+mfesX3Iuyafnh5kMBS949eeYqDuAhRDL
D/OnAKaGQRl6Tgxu+NnGcMbFivDeRDFxPN5EQKLLo11BnpZMIGZNwbJNLdtT0JN5L5pTpNNB9tT9
rFgqhoVS03YWXBSovb19cYLHeOBJ6rGqq/DjUHDmXP6tqaeqdAp0WqenLfzBxw1+p06LR2UlGRPZ
pV8vd+yMuG7PN7W/daK8aZ+5CAIHTjoHDqrmzKja6lRNxgM8014y1lSk/Ylia2gST9jPwlfAqLFX
kRj4CIgchFa6s2gdw659ltLlUqvVpVabORMcS6igJQemXgm5xQuZ4H1wmOBckG1P37c/YQbkZf8A
L/YCcSjL5B7atFF0B4ZgvMdOt+3p48vWqO3Ft0UvAwpU2+DtMIsAZBAuZzRC4RMh5u5x5FKjGe9o
u0f7R79Asuw4MKukE1f5J01umDUFh0mnmMQd+U0Gq1EtIJwoxycqAMkW6nVbaM5EQXiGx/1xU1Xz
Vr8v2gBFthevq8jv9Sx4oQsH5Lp9f7F8kLbiJmnD65kjJ0dRjS6yrpdb1fQOsc0v2+OVL2i2ZOEL
S88DBUofFv1+ePl6vK9zIYd+EmiUGR4B//50uVzNzSS13EMqv597TerrurSqVnDvOXgpdoPHRNUO
aBsyXEW+pV9AjhnSts4rm/onQa07f71uGPCoD3glRTOFDlJjGdAsLuaFcsl8YpEQDC3Pmm4ddFcp
D+/IuykY7ow8uEgjGRx6edZEkcg+a1rwvBvfZnpT5ceUJE4P9Xf9NITxo6GVmr8GXfz268wWXV7O
iSzdlDpul6QNoOLnw+0WOEhnHbruFkV5J64YojklPiQDws8DEEIyzoW7YdwcYju6QzBITq3iA+pa
YhQcsNzAsPXuQA4AOMnBStzjJf2m0BnzbdG5zWUYPXv/CyVyMwcV7i5z5bInYvZjTlSoYQVIvCjU
hXPdCy6qEGHRHZ25VePg2Qq6UT/rgYjo6TiZY0XkqqJhg+AjtjKPaZncfpfjo3qYaKj1RaLD9TDi
KBR4Q4DFOjR+y1EDdK1144ScJajB6MeM07wdiu9J59VEWIyTCzGm0+X8ZseFeuFu4msO3Ypm6wtq
3arApf96Ov2CprT7h99hUYoe95rSjiBW1PcawxriXIpo8hX+B7KJZRPNxShVSSrFuhopFp5ZZrO+
izxG0T9zGg94JXkZkEf82Epos1BbrFAFk+6D0Hs3NqucKj7XQGeuWbDj1QB6/JnS6HPcdR59eZZq
/4VrWUKp0S3FeMW+NV2/YfJvhwXbxxBzmDpvZ5QmI98Wy4L3oHX2j53JcnSXzDZ7PR5Oe0eLf2PU
0WUSGWRQJppRxfskJaJMaQW4o3ZWmdYDOIW/e7uAm+3Mq+35zWJWEjTVjBJCNaSNnAO5/ZCVl/Js
5PT6Qxt9GLFeLWdy4Z2P+jvvBbtsIYNhTErB2e3mjB1HbSOGrTDrqTPZDkZa6/qJhbSxWalSDCDj
mXYCSwvCSVfYtfq4Mqro7mhVCjYHdaIfgmLFTwopPvDL42rFRQdBH5UEqf6KxGv24SHdcqpaPcEW
fvb9mOKzENbT9cIoXGqIhtYpzlgM7tC98LpEMSehsyhpejSAokWI1KgNavR6NUFKv0LLPGxDF/09
y4WkrjPB2DHCAlMpz+g+gGKjnymoWUwWkhZ4NpIXoYZi5KNaW8CRyGUFBptMUo55ZRZWaC4jejr7
0A3iBF6YLOUlL1SPXs55YL4QghiEIP8yhha6DyxupBY9FhgM4arf4hlThLvp0Xd7jqX1ulXfl6KU
/vpSbTbbmmFhpCNiT+0wZtLQT9iIRutz/FF/xyyRxiY0C9F8/RLJ9oFYqr9EP4Mn1mlgBBxBTeLO
IDvj3pduEA3MPgCXoB5bzWTRpc1E5m63MHfDpo7nL4fr0cjFzKqLtsgul0rXWBKmo9FOecJER8LG
07RZBEmQCPfr4/2jlHfp20k4U+gN4MvpVzNkzq9av6JfzNypdSKZdTHotkFXSNv+63V3sxLZQ8Ya
Uvje168vao10r6ZTiSKmofTA0TiuM710EUQ2x7NyyyPwugKi47SIq1ApJXFrUuxjtp1aLmh8Es8o
1fSy84k6BnGaW4fN3YqlrNePkFGlWiQr5Ch1lbegbOthEgL8nytspHgOOLr91Gk1iUmT6BcwCc6l
HALU2XJoltZNqPE/3MJ/vkWg2hdngP48yzXZwJeoHyd0Q+vkK8Mym9Px5ieYqt+iZ4Tfsr4J/M1Q
zWqF3GABTEPSAjX9OGwfJLEz8KAGyqNk6Ieo0jpzqnXn62xfNJQQPEcbP2fSi39++AaWARDkoBUh
4jpDWodExfbjw1liSJXH9bS5XzY/vuhLtOk6WCfP98v1a6xA9/+MG9vgFvXrrWJd5DTl4zj5Gv66
zCWGuATrPHxaorCNPq0xJLiep6PYS0xpiTmBBYUlMpZxi2wARvFjCzyjIRZXUarikhikHfiS66+t
iqlRXIkZA8G1DQt+O27Tcvo6TVonuKewkPtl/+n18PeH9SCH9A5goWD87S/vcALfg7k5/DjsHmkE
AqGaqzydlqwxIBORb9yK54fiMuGTnNJbIGf/dIGIKN7W/gpAMW4vzt77qa+SJAxzlfhtH9/fD/sj
1JYVnvic3hV1Z8FCYZ1fjx+bl8d5fzKETB2XYPNW4Wrcf/fh3D6c4Pii3036nNWlQHj7cL483r5s
tte3hz6HDDdAYoqyHNfDt8vXg81Z+HEStSz+wym5B2cR/hmskQIxSUiNSYE9P5jj+5su57q0HXLL
su0g0PXl+rPEn53AZ0wHmQqsTUzKzM6A4pxOYv9+mxiLxSv5QfCfrZvpaBOUIIEfhtd+BNjXFawx
a7dbgjzEHRBns1gynH/N1+0gvIuMAq+ve/23R4ERQLJsLtcjZIBuOgQanjzdP2tzW6Md8eO09R79
IC9u2aFD1xeyE/R8uAWv1+1PAnHcvG6Pp8dVQUiq/HwlZ6fl6ErsFwAu4fVxLuFb4lJzWopNovVt
nd4E9bulhjz+v8nLgvPr4yvoffKKRP6xChTiF+jiAmFQcvO8wPbs/q9qYvtlmrgMZh3b50VeHKmN
79u0DawSaOJ8c7i3laQY4hKQi46DkwMAv1/C+LgmOoIs6KenExgf9+njGf8IzAhGp+fC0zFMnfPl
KVhsgHPmDbYB5mOFC2TdXkC8OPP8hjDT2Pn+Q1uAxe0JJhGnWfm8kk/cWiXRIyuipfRSVc3FSryB
1W1Q5cf7Fk2qAFrrayrtcp2RVXRS/Qe6OJ6oZ1B/BUIOQiTgcorDJHCxiFDv5zqpS5ELyE5lwZ5N
Ut6CXyLbhPqrbSfkgCojdz8PUl1FOvHxfni/6WccBYrD1A6cLHK9vG/P+k5nIQxQGXGDSbobZ/Je
TuCSB37Ru8ynaNUsw/KXE25X/6gS4kwBgwjuIvwy4l0AfrovVAto42yKi815VIoHLmY3Wpznf1y/
FSmE+r0FkOd2Q+/h5qXMy+Gu9HNP0d/18R6o6xzmxR1b/eBTdP+Xud6qGspSgVo02DCHQGuvKhBX
V6eC1GAqUeH28/3lcrJoMAu9f/xhFokgNTxbkIlTLeRhBVFgv862FWVBu4L2SYowjOh054XO2JGF
u+f0u98zoqvfUv/W7AEnvZvtzol1Qs5YxFW81w0Daq2NVFJXvhPBKwjQCE+oMnLvVAzGbFSnzlF7
68eltirWABEjlTDj2dl495LkaAS9kRj98h0iHVfnWxwNYUzZTxyZPKuP5ey8lKv1ViaqUIYqrVB2
yLRwCjb7Cd06aaiojHmgaBfhanD7ulabZK2WDVTXRYfU+0mjMcxXN8ySXoukfDgrc8111BSKTtch
SBwL0QhfolQRgtTDF7WiN2oUy89yvaT/fCV8G0JmcaZPHMyEreS4NS/j9Uc9CHYmhpqc5r8Uv+6E
lF5lpL2oCIvVoDB2Bk5K1+FhsHRaTsJa4UWFjWO5GVbRmZRtJNHORlkwQkLq1w+M33u88wQgpxOp
EVQn5OILxKXEdOZl+hv/t8uP/4MTxa//y7n+v/ty0Fv7RiooZa0++8PO6f3T5hQCWL8erhd9hVYQ
rJh/icaUn0R+2The1iC9pxg4WepuJ9hfDB6bhd1H+zQN+gmTTfQrrgVbtTJykJR7Z1WelVHON7Oy
fzQzGHOH7SKRVomJXnqV4VmExWw1VvWCme22v8J/lDzPhQuz2nYeRK+tXmEyVOKXehczS8mzrPPx
bZ0UrCQwjKpfsc9RoLMQK1CFulRtI5kKr9vTCQJVG30QwBSjg6E1cMCi+CcuDM5WwXWXyOnov4J/
WqFhTeOfktffC7vgZ1novbtV8z7WkhSLigICp0VRTq09DD4gdFdD/HB7/VmwUYf5iWHimMi3K7R5
48Bo/BD/PWl0GPeF+PJmjhjyYAQUO2BhQTZT7vK6gdFHr8fz0cMLAEcZaLHdTNiuY+r7wq2h0YMJ
MRZA9W6Fsz6cXvmm48KF2aAI4gZBljpE8XFhdw14Uih+ft/+sHEqW0KgxxKK0KQPB7uFucaOsoft
/fQTwdoPPl3zbXs8+VGGiJiqvoWZiqjGPEv9glCOZIFjr1kkLKyqQjA2hF7OcmvuQWAtROj1D+0d
7G+37hT0ct6gM0MHe+vGSeCCjLwBZRRGyEFrmwUo2DLoOMrF+V3BMDgcflkGt2yrPmOmmZZhXpqX
EE+Mr56U4KMRuYmdlHF6nOXi1ve6177zlgGEUqKL2D54PurnhK7Lqgjkg4J+OO6Od7p6/aQzv4Vm
lm7Bz9fVb0AaJOCX8COLI4jt8eaRRI+Xc7E1B+cBESI/zsBLkz29RON34S9ARyitWuGYThiALIBx
g/jUiNvCRLyb/hQ6glRNEScQLj4aHxqnXi4q5GRHcwvYrCakeaTX+u00NMuBlVm/nnBU59Ni8DrV
ldjBKMqJKwHybKDYpxetBbBrUdolBQXV2yvHCCIBOu1teR4MDbb+lsNkTz1KgLPP8hWHxWsNC3qJ
GmcgRlSTj+0eVcIKJu+qBDiLlXvVmtejv5iOwPlTWII2TeK5KJ1pLsdSOodp26iOQlSA9gZ68KQf
ljC+QRh2bH9IR3AY04FRi96+XB4nbwKYwrUj/cdcugU3+VTEZrvDoN0NIY79eFeVDDUDWJ+pMwQX
fnvcEyRzUaW0hK7OWtWX7O7v50ltXw8AwAdvRUc0w912AgA7XT9KF2R+VNZ+/Cowgxcv6rI0doSJ
qmj9EYSYt/xeIO+v21bdNAv4s8G2gmrgK9po2VoFW6qutFO7Q3+csC4J7ZzjOWiL0+XyoW6QLooB
abEH+bfH7X58/Vk0mpu51mRSpJ0/ZVIWoRgZZYe6vVqiH90xTFb2j7JgzbU0zMDXCX/GcNpc7/oj
p7FLrITg8IObJJZ70BC7LSXv8z5i2vtc7CJGN6bncMztUjwmsBDwNt6g5DTb9ApjdBoykOxasqZK
91LlgmLpHS3ODg1Yl7fLGUr6ToYObglfPUBItMlX3bC34Vwa53Z9V51elLWzMDtoIWbghpcv5lOM
3tKEDIa4RCZWMLnxx0pPsSOWwknU9div8mBxRrn7Ad2TrQTTN64arYBwbGYsEa1s07qbWwFYH7+O
NI1PYgX7d7X6sJaryaa6tTQ5JzBFNEy93v44vgMZg3hPFH4y3PWLSwTGYtqW2+3vbEBGmGC90iDt
SPax0K0s+0rymM2koHxFkFZotHtvuPTqaVpADSvWrWDD+zcVjvqAOrgUcjDjGc3Yi3O6SDBlW/2M
+93MgxB3YGYymlefFFVzr5HUyxd3IXjFC3um4KbSuA/m2WTRiwDGU7oqNmGszxfC7f2K7P0DUvE4
sTbWeOseANmYHMKdVuR4jo7nX/VnWHUaX5Nkjs4KmK0W7hDK4No0Nny1QQiYlsg2T5mjE+amB7uW
rEjk5Fuw1V+2V91MqLPJWtNaT7XkSzPPhzWiaO8QjHPTmhlJ7wI31yHc+WTjB0rsQ9YyhXC87NQl
GY1jI4ybFCHx+jcYcehc6GM1KmnaWVopaoiVa3VCeFMwfYu33DXVZ1waCpZ+bA1/phPCEbRmqn8I
pyyN1GjJ0K/rkdozAgt6N+t0eUMdGswW6AzXld4kTA1ZiINIxxjQDusWttpRrI7PtCedl37llrve
WI2/lifnWbuzZ2VTkBrNTPxNrXHPwjZGNuyoRlfRNJzeo0bL7jx/7roe6LWQg2qcGXEgGtLE2uew
wFcyHHWpWGWRwEbTnbmDXVKdZJw0iEwwLB0b6PguCNaWIl2iqQA+elGJUKCT4StKNNfpPArjWH20
INr9n7ZYuo7NaxLibrneTQ7cCrZo2Qw78oIWhLdM3ZaJdZwMz58jRZ5E16wsnlui5tJUS9ggxbQS
ZdvqAQtJF0HnXO1+QpMzOVo9eWd0O+7c2V96Plj8rR7PolRRmIWdXf27+2+PAA+sGiR6MKERRocu
I+K4OYMEzcK2HEqZD9tv6oXhugqfv7sHiW15MICIJgRaVTWonBtNgD2/z3BB27eDF9vr3+sshOYW
Jlk5HZpuHnhgmiTeX1h1dgybzYNkE+NOly3G1X2HhX3dU62Hqz07LmMROvdVmnb7B4I6zZz786FF
4Pv2I1jBx9fgVByhI8sREaJw5/337dXdv6MoxjethGbPVDzCDnDzjuQdcU5RbbFZfIvAfQovZxbN
4srfth+fyTyTUeHnoTeV5l4+Pj60/lDUc5UwUPmJEZ4NMor23HWxP8p2FI/IQF4BRcDti/Psvvqq
xxC7eDOFDJMAi5T0U3Dmcf56vnw/LzMm+gtrRN/OvTC0cz+ul/v1sfdYX44wZ6hEKdtc9FRqCFpG
BSalIPwj9u2UBWnQNcJMV5kMfDK9FZgnM24cacKuEABPLtAaQTFq1+VjBM86RnekyLqjLtan9GWK
9dkZTBqdzsroVsfRV+UTKOu8TKHgT7wer7ETAoFz9OfUa1cdQ1Oeb1bk6tp8jGr9D6WtjaOTj4fw
nqaPtyaMOAnbfgo+3A6n13LsQRpGC7g5n9XvU69xY64BC0G0hoL4rLNbX+dzrkdDxXQMZ3URAFpH
t0aI2ZDRoZuY0tjwRaggdYmGhJqeWhrVAoYUIcS0wuPdSHWRFQTlLPW4fJhLTlgj5TrBl3gu09B1
RO4osWhlMGjxpeTRHD2mOJdC2REMt6S7WtKIy+ItpBRguHhqoXueh9t00TsKxIKzhShV2J1ZHkX1
jG0eo+PNV1ANcXV2xffrEW3k98ter5HsaIhuNkUo8SplP8oM0VE+lUXSnoOIvyH70ahJ6vMRx4n9
6uObiCxpFjG1VG/D1tKKzMwSrn4SKszkbCyG320vryOhgSUlK1ORurHbaXVFyf5aH4+gIeJZxD5G
Az4TjusoPSamylnFgbPpddZtSRcxrzj2ynmf84CZK11Mt9pO1lRp6pZAQ2GKuvYIRYalit6QaaMm
4rNBBD4xB08pqDV0LOIwM+ck+iluYSldww2CDC4VlujFJKPmIC9s/iK/tevrXTBpB9qc/ioa2PpG
8yIFllgOg99vj/fNCUC40cOudbUzZnmTdtF1SbkDXYpQMgzCmXXXWHajHZVuyATNMG/u3AU1ImNs
Bv1EA4wUume2GWG6+5CknQ5pm06z7ldEUtYVSidKDPhw2Em8y8SpEoGM9IBHLUiKWHPxm3KqHcup
DrmyXBgs8dQrDJc2s4EWZmfko9XavBPMoPfLr8fTaUudM6FAgCLvQFcNMQSEYefLOmoPFwp/MEdJ
Wa0zVuvTamBYNW15tdZYrUurgaxthrm4Wg/QAndFRPhFh7QoGB8Nz9gpi1qrNXG1AMgzrd2idScj
3QlwI/DOItAQIgwrqvVG5msMFFPJ6gVWlW5Te8dSnSxdFrTE17gsrRYAoTiokz/gl1GkQpcKg2BK
rqnwMkuTOqriwJ4i8tbVEqqUUtEdd+pWqwEnnA4eO528ZoHIhDcodClTaW5fFFwhvIlMaOSKyUjy
0N3d2nisM1uPv8J9FSKyrPJ0+VKooMvjp+m5wkEw8rPT5jWN+nErq6sIMMh24OuCG49V+PzY+u4o
ED8DonOeJcxHWRt6f9asLUTr377cnNEaxcAnkjeUJlg6rL7QU45Ur9FNVWuuLCeXdd+8UvvlUud7
LFbxtVh6NL0T2iRFn1B//oP2vp5cBzC9jtHnysJL+gbzyNv0W0PAVn4+OWbgYA3dcz1JsZxQCnqL
tUOerHbp0KzxyroSX6tAJRETsAimVeYyPikPGp+e+TqbudUMxhSWYuZnGPhiF31NWikjttP75HRw
L4n3dNaiok2QRvVQPdPjqU6wpLEbKpEEKK9W89FXueW9Vgq67IW2g41tK5V4rK2iKNS3T6OW7NdM
lMNdg39EI6UXnAI9EqFHIdR6njUuuX6/VDk8p+olXmd3ce7GBxR2J6caizyMkAbrvUV8qd4qFgwS
OdoZ4V9XNrd0ZB0sg2z4S4gB4XjyU5Vl1GWJhnTzmbb1Yn0GPVHIbdTVUnOG2VCf6TafJiFJYpqr
Ou9n8jRAu6xpinU2nJVp6HuzBjxe0+eK5ymHxRtdSnWj9+3Xg1vZwCVFHq6EeEOi6eeK8zuWp6Fx
jlboNiUR9BiumgcEDbq7ez5akdCvBd7hKaDIPqtAKppx+g1m4bq09pRVefnLznOwB6vJdxIqWUmL
6fG8XsgJJEsvlSSsgPLCXfSCcfpU6FswQ7pBKzeFEpbo9TpC350shSrKH/pSrdZQDQDjX2+Yu/KA
wsEXLBSLUaEQoW+ugIPQF6yE+n8eRAyxNHyGBbrVqpPBBC+Wb2z0GVEodyoxlbuqA6wYlGysDF4m
yF4O0aR1RMVKpljHH4eZXlINbYEv61qIBtvRVbsks9YSuL8peNKyTr6Fma/YoFZcWsp+faI9UhfJ
3eoSMaqN0q091jYPd1KF0VfBhMFO0MX2dO07a0z1qWC/ZdhPmkwKodB7oSCc7A7HMFMjfF+MxDRC
SSTPMRQrs4kxOEq8GGpakQqYtScgZH8/FdQh+c8e60rfRzdRJk3QrqzMNPKnLTN6oQym7tuniDk0
lehaQA0BGpE7m99mXtLD/WQWJMY3xhVMAUopr+3zu0RjFk0TGFGKGXVdgEyaANkfb1bze9tIERYN
aqfYa9hq1XoLRC0KIhRAtTrNoV4IxrVmVMMaCPCP6TcErk2GHRe4BN1vKFnUfdba0EBW239s1zDF
AzX+LaNUwaJfaiNd0FSa07YK88IIUBKU2dJNiCzGn10pWEnd7ggUxcT2d+eRf1w+AiCaMXAZjfPa
DO/FW+YxEd0lZ1VdHWHaChXIn2kRaalyhyF8BcBJuyGoXlRZz3Y7d0pc6EzcZ4g00wI1CZJYWET0
eoEBeYfzWwkyp6NeeFEFpb395kgmVSQIbngWIYLl3rbXfeyUD1BNJn7kKF3NuqDRijgXlfMz91dt
OSa1aIefW7Onl0c3S8Xi3bItDNFQAwQKfuE7GtCoPhVi2aAmZm80tHWWKU4Ot09CpJmm9txXWK+u
fDIMrTG6/rjF6DtR34WHj90bTIvbnGlV0pYB1Gt//AaDUdHS+27szOszf9SRyn5CfbJHTqKNHvd7
8PVIk/FC0839xSBpHX8n6M05VrJ58DmMOm3qqnqKzSK2uKc5vQefoIr7UlNq4YxVOiOFGtLHABOe
FIef72WsVdE5CNEorfV62T3cm7KYYfZhHViBBb1NeqfdZdRWdJyndrrVGpyBuluc2b/ZyNAxyGrs
ueEUDDySumFpJSNqGq5iSAuRoqOF3H9/d3TYWyuM2QVIB9Mhiv1h2rQHynyxDh+vPazXTOJBmwdc
lAmzF1t4jj7Fq7TaKfxiSF/wwQYLXgnPH9u1vh0P3w0ypFNkhmYEBTzvvuDw800u96ybSU8DU799
mlMGeH0AL4hv2C2Ml2xQJt0w60g/XdwKzkC9HV9Ovh/ND2W4aFXC/ozp5Y/+1sMwoHM45Wn7E5Qr
hHD3Bz/9zlisFjgvTKKLsNbuGt6+nNT8Ia4z9dk9emftcXbq2PkekLfNRNPLw1IsLXERmUJImd1p
+/5hbIJ4mA3CWqeRWoNG6e6YrRCxOMI0h2V62dhkLehhEra4uwgrZOypE957YIBgwDK/xLOE43sT
RC1wfJtx6kIW/f9o+9MmV44jXRD+RRjLffnYreVe2Su1ZBLvMmM2RkMBWVUQUQCE5ZxT/PVvuHtE
uEfCwzOLumPWTfGQzEAsvi+PI273+4HmVdv2QRFJQkRs+Bl923/ed6bbGhJaGP2gQUBs+YH2gJ/w
RS2n24sl4TR5//+dih77Vtm6LlE3hoTs43t0WDDQNc+q3gsOG8rBv0qhPC+1Y0Pb9f8Bs8iREEth
SGCVHiqOnu0Tns16pi5RRNWTJImg/bmBs16K1JpWzh70y/aI+4WCZSc4pV4Q0yv8ffo2bY//+bjf
z5bpVbWJEd0nb/sz7c26rChMRJw4Hs2j+Ear3iKLTjEBQ/hoYRtjPyjCP4BN/h1GT9+cHPpvD+cB
GpzeJ7ZDn5AMJkjO1nOXrGA5Jq/aw9YtRBEhkAveYBQ9Bjxi5Nt2YYZCoeC4lU/PptZZioR0+7nQ
sz6tFTvDEcABDQzSLiArcm15nrKrRJE+SxzrDnkHjEkQNv8FaR0ZQ7S8xi3QRBwcci764rd3pzff
s9U5fn+RWLGcdkYo3w5gjEVMal+XtPhiBVOfzC4J6RlMUHSGXnKpA6KfqNsxAdzUnTl1iOxo5h4e
O5SYz94VycVc6Jcr5e1yw4vod0fFDoGOhB+5D1jgjRHrKNcQQV90iomKevuP4Jn+3RH275weNcRT
l9xNb84Eoi8K9TZJ57DqAHngrtYyX2r1ejrjtIPl19s2rGFFjJ1idd5TyxxXtaRCmYhY7zBP9zvD
SP10vngSXxWnsYy7FSI/8omY5x5P82PzaTFspFvAPWtn3y7a326BJnEKMjrPoAyNqnN9MkQZtXJb
XqxE6wVogqWOdfdNQhA1RRivj5dPEV2EC4HUEY3VhX+5yaKcdtzlmBoC+NnL9jZtPqYrzhYHSKvY
1k3z8qrsmr7SqEygHnDN2zerGqvjEoIy6bfBbw/H4/Tm7qvPftvHb7H2xs8HAvdnP+3O162fngk+
tnMc9lsYNgBL5xZsfd1qOYOATbbT5rdTha9FYab39KyfDZ3OKefDF7//61/CTC84VpXfePxpERry
QyHO0800iDouOkpvkpJHPk+CFHG9+4ApOIbTx+V9ezvc8otWCVl0fJfTj4uzdzEz+89fNk12hS6+
R9Jo56OWtKd154tUL+cEB9YRNsCJUMyP20uZf65BIVk2QePgssdp9f03THgC9BWuyhjD13Hldhqc
m5HO9Z49S+jFTi8Gfzjejr3zgXmQ9TAuQCU2TuT5ANU96w12nO1JfUGSIfkxex1js6cyN25eSN3l
h/Xp0FR74h4uj9Pu7seTb7+dD3tMm2X1T8ewNeUs/xjehsbjAUcRGed5uyiUJ7YOaAjqKiNoYngC
i3FAQ5Fj6lObSZrAgljpGAo5teUSEbo7f7wccpmwjvENU+dGkRx1XnKwWpH9r7QGgTjlT9DVOZpe
mvDZcUF5GsSSlxwKFEOXgc1gfaeIdkV05R+9kCwuZEsiIgz665MNVM/vmSc43wel0EIiHfJ3WfL3
FQKTziUj0D1YLvklOuU5ROB12WRqtRd44uP8/THTsb//TMz5O2R+ohYnscL1cbphwjuvhcciUS2l
KYXq/CnKjKKBPZA0zD/BmKHAGTvnTauO1ZQEOiSexEqL/I9XOVlCAy69tkaz5nY5HvJ0MHaKkv44
76GOVCOoJZ3fZSzxhC8XH6YsFP0Hy8C7OAMNm/Ty86pwiTqzhLYTQ1CMGUoLgi+fIO24T0gn1Pku
DItm0Aj1EtIF1/suz+jMabI7PJF1eeuhG5JbHHQ9nf/xWtHNSEZLhnZbdgmJt/Mh53SAGxae388x
h5md5NdxY2VqGFK+ccGHajLSchNinHkGizcoBpt6Bl1n5msOYU7W5V9yHBUSejlfzh/n13Mu4dAx
cnCZToGQ5JP3dfoyw4RZ2yy/lEaJs2sAyjKkfavcABduvOaaPzvu+EnDY8KS31wv+ZuvWM7H6oR4
874uC9rYLDKqIzsIVGkfLXn5JxDwOp+syvlkRD/r36NLT9Xn/Pu8UCvLHFMFB/06vaEatZ21QRGx
wc0nYGAx9NFJjACMlr/rMndJUruucxzGNmd2B+7p8iRf5y4o81i/wbHpysTv71Jc8BWht8ZQs4It
Dd1Wa4KJzkCR4nVislXsMTsakjfxm6xxhxQAld3Wm/fKnSI6iiUm2iYXcASDOP9jpUL+cz1JoOfQ
92oryKbIBVIDtea9075QBHQQc/lnG9bRj2Gh5SjQM4It2LsiI8aWQsf5dxwVjvcP8sSe59NCFLWc
Xyqs9uv5/OHYEz/YHQ/UGLLDqlyqHIH/IA8wMajQnY/DbXc9XO4bv3r+66e+B1l96r/wpaihD2A2
UsE3NoZqFyxqQYmdyWkBnl9JHF6NiSF0eL0CPON8fZ+w8rgudz/Hzv039LfYyOOTrEbkA3+3IHau
xiQt7mvVzkdqhjz7Gp3t0Zm1xhmIWPEMTKyxbYwWpbvRwRXwvsQZcKBQUgu42OfnD1XEjbApTAvP
fnSpyBvP1fByHBP52P4Ia9CS1sWMcYFWJEsr4whkXM7u8nAiSBhvFOEtvm4hDZ1LfdPP9/zzhLvi
IapfJmzbQixUJz8n60rr5Aixm5je8/LDom3ydvBbGKLop5hfnGUJrH3yGAD/3H7bhiYy4zWKoVV2
gtsQFWcvRo0QvekQVhEpc3ee8Kb2gRplC1zaGcQVk7LF+H1yOW2moi0aetP+zXqngZcDnVV6ZJBs
nQMRW6MQ+PxKb9P2unt/PUxHi1faSCcCi8C/dXjcVVxXDHWyqeFr0uQ3y44hEoZwzenXnPC1uIzp
Esen2MlnuncWLDJfPVif9IqemDVHnF9jpb4X3AxaY1Fio+wmLn3chpEMVjEuLST4XeBAc9MdVszI
AlGvSS1+jWsKrU4MNtfH1irxiKKnb07oYJEtknl8bFmO5n3VVRK1rEpFKs6EyEKVId32oCqX2iKi
StGPMQtKcoZhAY3KPOKYTuEYkushErID4sFmyZPHr19atawrhf0VPKYU8CmKXeviozYWPtmcCED0
ni0CqBICKOc2ga0/ikS5DymnhUTl5uPw4/64Wkepa0VwOx+Q24u8rWBtJl6HQJLypEzQC+8IQ7T5
lkcj8hdbKE+WrXQjSmTa4VTL4itbN1Iq7yIkP371BBYlxCSpFFAfx+mV9MjVzB5WneISPf/C3D/I
r9coARprx0Lj3c/UAvBydubPR/4n2nmoWLw5tX+6X6Cs684J/htCMxze3qBzfIXBWWkm2ledGX7z
NXZUMXbKw8dr8x4NNpdb5DhojsP7dQqdOzcjceZVTOrIdXYtJv1qrWzdv8Zl626NcMAsiVLVikRx
WtpDpaYKEvqjXnPN6n49VuEdjucaVCnpVnscDzdrpbZUhAKRQqiz9P0+3iy4fTgCm0z3LmpxrDPs
/h2O8ypM8/CIZj62l43lqI2Dok1SNW6Jq1Gx/nc3MfjOcfP36eWXg7vs7e0XVJ20sSW1PCZKvioU
3UAsaemGQdEN6RroRVpLRIMVLnmoxNX6B194nLKoEru0nD3Oy+PN0ehgvtGoONNzWsYVLULWjHUp
M8mfflyPxLQWd0UCFs1vEbhuTUBhSNSmbwXaO7v/tniOalCuMysqrIXYFSmo/HWZERfjUf2ocKKA
6/j/QH9zSJP9tn9Hf/dJ9cj/J/p7mEfw02jMIv2UmoJ2BLj6e02o691eQNYpDnOgMUuJclSSG4/+
j726l/lRrIhmmLlQ2L1Pu1+yfT2011HxKf+NOIW15VFhXRG0Wn63OitKz6fjeWu9SVEqhs3/Obr2
J2TzXWTs8taCJfTbxC1tVjqQ7qneTNOoLhRlogaXqaTI7GchCoqHFqAfUcFZT6I5XNpWrB9n7VoU
LMW1oAgAwVgKslEsIRYqtkes6fj0JEtmQlMrrmS2LYiUTauETv6PJiws+iw1JymiFTgpur1coOnH
rQo5XYsOOsX656Drmvj+kD5e/eyDOLPvZFuLVaXlsFZ5XmVRz61Vag+DS6TumQsavVsnkcEg3m/d
vUMS020Lo2Rbsrf3mR5q2JrHU6g9OHnoQMOfCFopTjjZPa44qSoLoIhLUgEaLClxDnmn14dH0Hrs
D2e06TPlBrTBOqyGOZPSvyTOaNs7kxuzjWS03wh/DhtQr9u3fNwT1x3jwbnKSexy5xj7Pv0VX/t/
/P3P+YU8OE+dzO31DTPQ5Qn/m28hhxV8K16dFM2FNzAKQ+m2u/gxFyqFjyEmEcIIt8cLKY1Hrtkc
l4v0IEEEz7QSoPLR4FeD7GGVJl4u5Al9Jkm5EwTQPGagFelu4vHEmLjrtD9gLPjbYWs6bPjQvbKX
sAkvr07n/PMMHsmgTuQwgle5K/04UBYebxa2cz7tjodcJAjvpon7gWyQ7/c6ALTYdXp1//U7gqVt
ER544Wwjs1rr/9ok5zvCOCHRuYyZa+OokZYxBxeyFO6w37fXaGbkjSI8X3wxES8SjOXumhtqbo/b
BZrastFpfMG4K5HnQILEdsELqSTI+4ILDq+6cG1NlClizooXdrc7QBmczkYoAfcUeVZO/nFfP6Cn
i9IGZD5uBKkYW+oVvsPXYxINf7s9fRoMU0WSYFdrtpDxdW2IIrpyTwtzqfJuXldbSinl+xfCuk5X
OV1+c87Q4ea89c/T7v16Pjnz01gvChhhV/n1fr5ONoV2zNDSSaeX314OpNwnwHU3WE8j8+Sm/ITd
zTdAbwKMSFvwVolY6OZsgxBL58+o8wyFxCtVsWMYYZrc9XrBYJyrTrR34wGkPL8Gi8B+7a5hMTIg
jJomdE0yHtMHrg3+ipt7d/LT4LBBOZhU+MczyI51VkkfSUgAeGgKDqzUqzutcVlChsdqo0BIkb0i
AKVBQYMqvKXl5d3F2/nhrPbNywNGjxoyLhIScIzv2BHLvU3nePdgan5z29wCrL2xZh9JQ8xzuDn+
v208/2GZHB36tP1mUAiTuZjHxZZKkls5PrLIhHh18TkrTN26v/ZPgtMWuyzguPPTNMMWBGaTrEe7
CfhtXzOhxkbZmnhGZ3k4u8XThOeCynjBXrFf7OWMxQbFelXJAc35BYoolTsLMwooaTetkIBdq/C2
OCCN195vzs5ygdiL4V31UUngtJdnJ+M4bfOAl7iZUdo+DQNcIe6FL7v3pL5kssTNiKzDgh91edze
8SGMWy+UHWqUaizRJhZ2Mb8mbyWuls5DpHi8vjWC6+yE97tlGfV14kZUJtkTaRiLjYpFq2/QWIRd
NQ6RfXfUef6OGzDM/IoNoA6DPol+fgaiWng+Vjx9gqilWfyn1VY/y2QOeyYS9f79sPMCPkjVmwUW
ToK1VqwjzZszLIk24eqG4jI/Ltv7O6Vi7jQMEU7umPQC7uoux0PubCOmR4YxHa4bB+3gItvr2y37
PRaX0fds8+N+NrfT9gKE7efZB7ypj+3V6bX7DRfPpb2bgPeES+PwnUEsvZ/u5KS6nZ6vd+vmYSU0
T2iT/J60Etg1Rjq/CaA09DXXA7gXg6lZTs4AVVG4/RvG3bOcgztp4locoKKdxBkfVt1cE+CT6F7Y
X9t+vBzeHhA3d/znOOh8zR+oipsQqJUwWmGbifbgQ8ePRCiCdv4K4A4HxKLPcituvAxLiHDIBfyK
jw2TMPyNvncsXPY1IaWPyoTJdY4i3E9b3/XhO0GoELY0PmniJ6zUty8v1+nbASWK9XNV8nP+rIEd
rQ/H+KGYruZv2Pqui/fCea/tD/OnauVKph9ul7fbwo+1yY+1JIaYJ/J9MMgEVSQl9l/njB2yTLfz
8Rv0lmUNDFyRpRi7bCEHlv2qScVCO2fsLYMo53+5Vs6CmSYUb/nv2kRuejDKcHq3iTtUOfkOA5AK
Tj0iW+e5eow74azD6RZv0Fce/sjeRidPUgXUVLwKt4tHXoe0ZfLLY5xjEAoVhR7K/nw9JpKR6Lf5
338LYuE/z9fr+bvv+bldf66KoiqrUq9mLLGCh+LTVbrk9QafQj17aX3ahk9lFvlX+LQuFn61DJ8K
a+2XPf1qU9XWp1XcMGsavsg8RfnP6/i5gF3GXy6KLlPH7j9t4nm9ToFvf3e+Tvjfg2z9+eV8dj7D
6WeQENZSfVyKw+a4gFf4Swt0fAvMzLgA9jWanz4dI3x6u08X60MmFa5woN8MpPtztrLOLxFJRgRT
cIkj8u5x8eLGuHlWy7SAN8h/zmpov4UirJAII7h652RdD7vFq48UhKml2dv9nNXu/usyuYGOv945
Qvp5QYnRHQyReQAW1F2ib/iDKK0zRX9YIrVQ7DQhAKcfu+mCwjwvA1Mjp4gMuDk9AHU8sGLeSmKV
wlcQZnMbn2nagDTi+f7u9u5Z5zeb0rw+x8DF1YSnMW6mVfTcBHoB4ZfBHcqfrlZOR+XMXr9EpZtf
o0w0fBVrA2BiWWbKDGrFQfkufUxwu+DzvJ3QL9srC9p+TCxu4qsY+siPDsWTF4qVQr/uqcExx+kO
0gmc5wVLqWN/rcW/+OqE0JW1/XEwHIdWoW70EZFHdlAAcJtO6Asd7p/5Cy2Vddx3EGCfMVreXqgU
e+Fxoml1p2iB5RdoO83z9S2dtqzC32fvlMfJBzbdP8CBzhr6eAeVQpjeJ3Vn+I9//O5Pf6IbfT0f
9xZrdHmfUjJZ/vtIYKJOhL4PRudvljtV4vFVc7kD0EqLdmmtcbCzze/njTdJ8pdcKDYxxEhWiPKK
6YNNAmcN7Cac8YWMkt/0OBcZaE1fpmn3fvs8OZl+O9zIlMV/ton/0IPFAnyCuxwc8QzMacDcCtBc
YbjPl71sHzf0px4f5mKM2Qvipgxe0dMuYVPHBZh4t1zJg1wg+qcvFk+5eWCY/HywD8yzF9BqCCGZ
+bK4zs1YiDGwxfjNp2XcP9j+Ym2HIZ5BnJVhUom6zjJL+kV7+agBPkp/BWsZDeX+aZkXKNDYXj9J
k1g31jFqOJqZYebEfMW3nXjURSLhKSLAdNlFJ4R73G+gYsVajmfr4D8AkRFGGuEX87kYcpCh7/Fm
/PMwvsT5HrmgHLKd72XFwkUsmwsVj2P+G9/W086g0xvjizL+CkfhirLNf+EbN2dfZMAO8Avfgdgm
pFeUnfEbdTwH81FRGueo4zmErZ7rzqZdDXFXXO8cn+m5Q9/47VG9kdq49SL5ohAp95+g2BFpY/f5
O/tn+3hkZsWiNH62jj8rRxWUxtNV8WgiYlnkwhX4G0y2cpyZ8dhVfGzh32OPFOAiAH4SFgx9Pzsb
AVGB0rc5YDToZvJS3TEvIRxNoCiDPqpBUu18vtyMPhA/1wrhIkfH6xdJLjwkgR1BFSDgQ75etyH8
fTn8cEoxHy2j07V8OiDl3p59QafTudh42KrRSCEXBMIv2oTc2oUbxNBoJtNI91cmhNJY61GZthlt
pTWrRGIGAi+MU/XKF6G/KuxmgXMjaWkD/NKDRIgA82bq+U1H1C7qiHbc4fwnHOLkA+E5sIsRsB7j
HFmRKCMMsO8v19xnfaXNlHZGJ/24btvCz4lZ1Ow44X/tPGnngeLfoRv38nmfaCRsdjWfzyn6BLoh
usbQuzTRVMRQ02ZWocH+6lYZRu4Mri1dqLtJP1Q3JktvG6d6Nv96HK6/ZAcp92LWcAKAQtULJ6vy
E3ZVjspA+pfr+RdEDYyrvE/O6m/yq9TJJny+Gz687c6X7K/3/OvYbFb6L91dYDEQYmkfbsY0YV8r
VjynBy4bj+UF13nb4MSIy+OeX4gBwTgWQuQDicDd+xbkKQD/b+/bDcIDH8yZumPMfs1u15eoRCQK
6FHaP2BQEYAZ5vmCT8oqcbs/X6ho4w1UvffSMmYUNLGNtTIa3O8oNDNQjh4Ny82PPItUozq7fvrh
bgm0DjLswXk6P3Si6TplSrb7b7Ek+7Tx/J779aFSRrpfJ+LMXEMUfNiUyrhvurf//tNf/vw3FHe+
2eG/T9sshFzHo9+FiLgD5xx+hRWg0CsUiKeSI08vLMNYK8RvaUVfU+kFcLauF3c4KiJxWeTkZU2t
XF2sRCNFAUe9f+Z5vuMB7sLGxnKTy/mAozWyG+j6Qvn2ffoRac1qDsEfj2JdFFuezh5H9ADFOF5s
eO9rn6fAolP0G91uvrV7jGWpRRrZmsncLAd3Ylw9y4GZZvJ1wCdjUiiqpCFRSSEKjTkZZt+s8I7U
ICZPE41+fz/AJLf7OT+1GNUGK1n2PWZHwVFD2YIIWKVpFDmCE+pi+Df/hlVibERinADRZnnoIIqx
UdF9kR6tID4aSQVrQAwaFZZcL/NyvZqPrUfClsQM0Hn+zyaAHt5LPJTwpjQ+ya+QqivOO24ep8MO
NExUqXhLokTMsFd6vm1R40y78mdDUyWbEhxjS0fRz9uHWYzRSGghtd39OeN847TT6ZYXLnVCiAHt
CbJl+Ji3BWuhqBMTJEw7Bpx/kgr5X24UwUzGy/aI6hgKuGx97OtuZotglwQwNfYQpoyRV7G9oncy
RmWdlw6VIujoUKIjxue6Fq6WlY642jhpBObl3XNgRfB5rdq3gJzqPmiD5luw1CsW3NSS0PJcZid0
XxCq2vuvm9uE1AhFN/mYLBJNoUi/2V13eWUyJqqoY+H1KV/K/TlvmXZtauVWKT/NpenH4UYmTF7L
jwofQdoBjMPb0RLGfBvSCXSfTdcrpBFBrLpfznDA0CZCdGbPBtm5ypTr2DERl1JYElzbOjR3nwJi
46vzhqDWyDmwK3fRjp3iHc6oI29uFY1lapCqX2WHDorZxnlmd0QgssfJXKSO9yOQOPyve3tntjXC
25k9X17eCNco6/I7Tkdv37OIb7sy9z3zN0bdSYIL+HE73rPOUpsYrmUkbOr7hSJfVFh5q5N1hKAv
EdH58XExwzldpbGW70sKCi4WHvBT2A5ypTljodcCbALySmwTrOwV8Qy3SSSABliO5TtF1ohb8VRj
xrnYiu6iH5B3qfNKplB41a8ThWbgN++euzcnGrRIsK+1pwP1hUEwwmvNI9ah7orEI4LOMznS5uUI
Ozx1BE+i+Id3UZyVfsl/XiVecffsMeYjU32tqMff//Uv3s1f6GtFEVoqgvxZRZrBm65tlEVAswMG
9Acam1bMoh1llMvLEN3nwwaqvBBlrcQVV/vzA/EUcRlsIPc9bwuxw6ZVQjCzcEDeZI2POhI2GEu0
aXfc+imvju7R8nSsiFhR22ueRtn8Fr6chF4L6DQ2OCW6to3imCpmkQV3g8/eKvE/L1LChDGEVXrc
81fVN63ipntDGNe65YN0Q6HIt9fz7U7Ej+CB3ijKslCrEJ+kfNMR7Cot3jMTHXmlzEEWESt5+nHA
Hd398pnfQ6EoiESC5OMtHJPL894SDASyXqW4IHljamZq5I/WKxoUAuje+nG89EG8hEfNO8WajUZV
IVi1BsVR0MmXlwaD4lVnzCf/asEKyq9ZKe92uj0uS9HhslTIfjHyWZELlxfDnRLT4DTHhgR6flOs
BqmISb2jl+3tsMtTUamY5Fd07h0VA7SUbXBx0BrC791MZiMV3u4E0GGiUyFn9IrBkolc1Xn92ih8
QdJNBhN9WMbI2MV1wI0b+rklF6W/aeQWCRG3UmCLPnwopjSa+1Boa5YtujprjYa+7NS3ltkiwP3K
xwbqUYtQT/efDh8ThLOyPbFjRIeYuUPZfKrxLqPi/3iz1gdOpJWcP0yjyGE2z72K97MI7TCBR+SZ
PXNI9omYH7oOZinoGNvOZr4Z3xHhLVwnKiaIkKnZRPbYKyYrrkRMMSMfA+wcV9MoWnqdLAHzW2q0
cPB9+4KN/5E1s6ol3k/TiZjtFXCzQroIQ1/bO4KBVnkBrNnic6Zassp64S5y0GtZOeR31SsUHiPl
lEkM1d/AuVHcvhvpRY+fMbMdpTyDmJwtzLTbmskPErHb3fV8u238bLR8CJNrGOQ4PmPFgK9i0mhf
awHEebEFjqq6baAX+ercxjtWcoHoyQfkay0snvOoV7rSpZJnUe1pw6JsFJvWf3x+DcaRjy2ZNCLs
WoEsBjCqgDOJ+or+aiYyq1rx40zLLW+w1QprzQWFweBdoxT/iMQV4GaTpEDc4LzUiwILojNdMXcb
Fj23qlIy8ZkURj7wUaYxt/q3xSzzp9Qyn6EGIjsQBhVgIeMAtZo1yAdVCk1DzQjmFdBP0XU/v+YZ
tFYsSLzTQCrl2GbqRDGIoG3E51JukHSguIqdUhR5JllCtCi+80SsxauIav8C+g1CvRSTzFJfq7CR
Hu/BMj8zya/p7mx2xkKSQdk1KDbpc2RkIXLU6tnq1/OZtK/Hl4Lo3Nt1ezFSpoPiIK7w87bH+2Jh
XaMsPdN1VrydiytAD3tIxSTmkI969JWWPN++3Djkkd9416kFNkJF5X+3UwLFVnWYE+X5+jDh7oaG
B4nignxO2DJvy6mCjlNZElUpb0UaZUxayvTHooWdt/+1EEwqTG8IN+Blmqm5Si3a5hns5p7g/LZF
dXzIh6w7oUU5jwlYgOBL340GM5Spo3I73lH7hIFn0OhimfusOusCwZwK/1i+lMGPLEG7BP8REpgR
BeK0rNAS65g8TwOt8mZzCXu5G6WnXVNYWU1aYqlMpqu1IkhvmM4r6xaqR9pE3pCcR8710cklN63Q
AjGriwCqWrmN7ccFYEzdI0233fYykV6f/vdf/vzHoER/ZONCmq/hQYC/loovNfeCXPNldhg1gz+t
LluK+xVlPguwPTr7Yg+dd87Ahjc/bt8SobhGaPSNluXCemcOe3mdSkOHTDQnPPag+LTZerLpZJeT
lYVyiTLLimLWTLKO+cAcyOlvb/kZ4WPEmJ7RQMaez3tuIqzMkihJ4dt2XSuit9jb1LFgDHOinYmw
+dy+O1MIEPmtDFqnJKmeIoxr8iN9qfFa7BYnrQguZNzkn36f1z6Nti81SAAayf3dyQj6aaGVzLPl
61iY/GSVgdfMeYmmeVevZ+uTLi1oJSqlQPEhzsqLWiofEh8UgeHdxtt0vwXz637epL5xnp1bpexf
qEuAJ8AnsdVVO46KQ4uDLvaHNycUph8L6SouDQRPwndef72KJ8+iohBWZNo/nHR1Bv/5TmxqSJq+
0XLtXoJu9odv+bvRnFGlUGBVxpJL7WXNQ8Zry4uIQonhIyN7yITpx+EWbDESHXDnece/Vi6XApFU
YGfW3fYaG/oLwvAejXVknZyVo91Tqh+hjqHZDVgaP/l1up435B1cp4tz4kGLhv8knzdBCEzCZ6jT
lLWYGQDd1zk0U/BPyvg9S8Dd7VZjqc0W8nRv7qRxv9mFxjYsJGjxcYrJBL/c1Y9QWrVoUxXK7sSi
fFuwlOO5FUv2YUlRoeC/3mFqMn9bTVkqt423Nf/9Kn9RQ9wA267xsSH5fZse+3NQX0brP7iWcTER
D8UN4bAI7Gsw3qxW3kw9Tn4DRXKaev5C/wZpV+rZArZHefnhG0fztN0qrwUoPzgDJ+4if7ZR+V5S
32qaa+JCbFMKJg3TI+F+NsZQYjhTFZcCYqzKOsNoa1ms5EOOvDfqyKV9Ld1TPfDxRBARySg++YST
pHIDb+GymbXEzIBAKCT27xEq4L7w9k3R50ibGSOAQ+b5I+4Jp3eX3Kr/zCF1fhW+YTZEDDKq83RU
K3QkVhI8X+UfXH2twFZ3g51Gvo2YC9J/Pf/jbfLjbV6gezJeZFIPMmRKQOjjsVRXlWxqJmi8BIPe
9PwKhUK8Mw5YL1JbRempHLkBN/lGpTTn6yk78gQeLxH1MlQ239iCximLrM7IvZ1BjEW8euE04Wpx
O1YsCO++UTSQtGC+ZHLUY6dwK4Oqr3i+boHd18vEim0qzmBEwjydeUjlbYIERHY+HxBAn5BotYZE
l4yPJnm84VkTrVa1lWqGhpNSWD9/tMHW0195vbLTCDJsZD+FtVZoRV5J1PUhiuWafVRZSzPLZvmH
qpWtqJLblpRNyQqICyflTa9k2qaM1IhDvNp1Royh1AaFFDU9bZN0PfbJTRVLujq/oyp9wMoPaZi+
I9w+XvMKtmCV22F21QOd4FwU92r4zWl620JXze/Ox8fH6X9lp4q2AZlqGMdZ0cPx6DXLy/S+/XbI
iBFUjkVYQKRoyU2/P/ygHGj0gY6jg4++7nBjt9yapUcRH5MxlkG0QQj9csxMX0P8ly4eKRlZ5+GJ
Nt82cY7zMX8uD6iZjgsN14w1KmJDeRrCO67jUrWAxXyfroe7vwsCOMrfyBifSdhocTcUF8/le3AL
ffxe5FUpFOALpzbvB2M0CKZyh2QTYbYVfbV5g0n10/37NJ2wMcA4TBMfiLUYfPJnmqL919dXKFIN
r5Q9lMcrxXUwLB2Co3ijNNYWjLXsRrp4KwKSPH+gzasRO8GDxYcWYtVv5/o4Glfi0YRHX+06pu97
PCxRGJM8S7tfz+cP80Grnn8V1Etd0g3AwQEwNciR7K6HXuERwRbnxx3zNufXJZavmkgTFYHehTYt
AHj01WDH79vPm5+wDe00uSFgmJ3Q2Pf18euvcdBWDloBD9Zp7JYAamGhLjRew9/kXc/W++VhL6Al
vadEY5WvAJoYxi1DwU5+WxVTSdnVXvqnUungPs9fcskMA1UaAQTOUyiMZHYrvJ0wzHS9H/PUWjLj
oS06AzZ7nFBC37MjgdqAV4iLiMpaMqwQDM759ScEX3bejJ/XcNtg5ffrBn4lL6aYC2Uv4sk9EVSR
MHlScmOBtdpa0Sbu97dg06BOmcyhbUhO8d5Bq/gpRZg88khK2CN9xVZibGj8ONw+YPaevbeyK5S9
OS8gEsQrhrUpiZoniypuTzTWna+X9+3pFoUAdVpCLCpnxrUB8M5TRonkIWQCLDJt99b3QvMPkJYQ
SSjK8xwuCBIIuXRgPKSU8A55wdzEixIZWEhAHE4PMgrsi+4r7aKn74nZdTjhNoGhfW6jzdlxLQed
S6joKUNLOC3hST9rS7Y12+8SzdFXO4kdjNklOvZGoOav7OoIxngxDPWWgxF4q2WT4FH4nXfZz3v2
7we8ymK9cQfftxysQmPKv+XL9oi4uB/bHyRMy6wJPRaKHZ5uv8lvv1AvPsgqitSH8mdUW9mNdMIJ
Q9u7TI6S3UPDEV8xsnG7/+d2hxEg2kreZesF6aGm7DO00+dph/18qYeeGWDIUzBfJHSmhV3MLhJv
MP8anDlJUNye91HmGZEfAQo7y7ZJ9kFIi7mPRQBUAhSHj9HXMeyUKrSX+yMAETStXCIvAXoOcXg8
3dQUQFBVTCZMi7HAtuXHIBfB1wugweONE4hLbbaP+zm7CufCvEwrFZlGqi7/Hg1vpUan1OOkgRkJ
BsqS64ZvyhwOmYhq8N1nj5dPahGPt3Q/20fq6yQ3WGZptM7TKLNbg6ooxEgIsR9twMt0Rd510stf
d5ZeSiF+O6T7DPfmd9QJGYbVwb6i4tv5sA/uKNndVHaVlySDKgy/YBwh2XQzJiqkGBzyYjB+J7Bw
Yw8dsZ0fJ0kPlr9TJlywkMsA8gB3cNtUwXfZ5PMw/MgYfaiavDTLk75ImEv+icTqi+DCn/PcLPiw
JwnfLWmpKi+gWNZLkLdnGZuXVVUzC1p1imAwVIXIumI1iC94PZAliPBCnmxhLYjN5K0XlthVzbMY
qNxwe1u+3KpSkmWeVvP0wUUVssYgsTnytmLP79mh61Yo15dn95otJoxKxOAPcCkyfX4YBrAnP96A
oxN8omBy6uD2fj2cfsmiUSBnjDP9ltwYBRnztgorWBFcTA+eNzVrZkrKcNTzkEJ+13xo6cYYDNTk
GaibGcxlhE6DHsM3hArZXuw4dNsIJsC/tPkdGczMop/GQuS0R/5WOzaYQJE454FbhK6+4u18xDGy
9H2Mp0F2K0aC6D9En9LQeKDtPP4M0S4DET9OB6ohW+HC0TJdXIY5lwTGLQLTkvstnHJjvSGsV0Lp
pONN4dbfHh9OA30aX5fp133xFCyM4SVjlSqeifROEgHFw820xub79PLLAaolfhjL1nFZkXAmaid5
uz2dT58fZ4StJ4Mh2yRLKxZ83J4v6z8xlvfT+afzZXN/yX/e8F0PGNMhuv3z9Hr/6fx3tE/Nz8d4
Hrjsyv86TyQxShFp+y2ToBAlJP/AivS3EGzl83XDCQdj2T4uS0zth08/K9e8D1R1qjUXh6xADi8c
NK8WWd41GLsppHTJBxG4oKpES6PvBTwWOvKBpaCZcUG3Nlx9Jio3Fl3yQTgvFWYXEsnoOXv/edp+
ZLBJqoAtLtVcGg7ZzAbc5G+ynpn7qSUoBUx+L7rC92vk3XJZ0lE8u6P5cGwV+mK9nUchiXlgxqfu
TtC9dDhFzzBvh4pqOywxGRX1nTd76k5919RqMryccXaJZV5h1vlbKa0YTT7ZOwgXVBT44VeZ0Rr4
2aDEprwfUq/xQwYzICH9kLy5zgUvSWzy2UjIv11XzYRSz3Cxb9fDnsZPWDkhtHlEjKPC5ElyjXm/
dFTKtyIHfuRjmxwa9HGtRqHYPP/V8/1q9mre/6v1S4uhj/fz9fCru/ntcfOS5zpRvgnUVA0J7Y15
0uuVgpvnN89vv2Xag6hLOSSWfp//4VZhFcPSNpiVtRGOKvN+lrqWYa/zM4C3WJaFFtWgdhg04vNP
0c+8iIohQqMEAzxzaJbKaxRBlJS0plOdj9NSZKPtReUgpkGrTGQDasfopawiHVEKB4LRGS2ZOKF/
9PzN1LPA7bgmKLbJOzbCS4UUW8hKhCQWFER+P+zP32+LW2s55Mc1AVoMM696mmqWWkkskrxrJUu5
OwzsCspbjEyISlpMclWGh2gEocaZhzgkq9hOKquvhAGl2EdnZFHwC8+9w4FTmZhTXhaLQqkB6zG0
YHTeqKxF8wpWVPi8L2HOTjCH0aNr5N+D+bapnyL7eeoR2gtYvypUqeGL3heFR7me0ZaZTEjGgSWj
z+kik83ir/kXblXjLitJ8rtqxa7g1co6CXbmbRSOyZUg18rRy9UDlhgCzeafiKXNiHU/iarr8qqu
MQyTl2l3/qCQ0OO4vS74CLKYtGD6Js8rLLWgHhqucy9BZpVNEubKCwmRQhzwL62iIvMPNqgRRY5Q
iJj9F2+lrVR/9NmMyZNTO6o24OV6fnP/JczzcntxzuDNUCG9mqOmep8bVerZkrQTcepBoCPNj5EP
mnetqhCDwr85Y/L+Dhy7UJjbCr9QcupTwj3vC41pKXeruOd5dSQCsSBy2jFzE3lR3jGfDy3HjhbT
DoJZIWhf1WVGCeXDI3WpprY0ayJPkI3oORowiJzJiF6NrAU/AcSgK08N2KN/84Eaj3q3qJv5WiCy
HbIxz9eSt3Mq4aViQ+34HPuUmiBPm50qSdIQQf5mu0EVYxg2DYWfWUAplIOis2NkErGSkIZ2ZXuh
pJFKOcGzHM9r9aBgoLjj1ihqEEoBDFLnzD1bgL6x/eNl2lN9gU0zaqvJM8XkbSLR9zILcmKpohOp
+R9nfw69oX7JAMo/UD17oEFKwjav9Wvl9MFoWrKTmMJqRGYYJeOuCKq2TT3Lno5PhZbuMama7n7e
oA439cGgNaNhTo18i7weaFNZ3hUKt+aNjq5/jm7OKvvfV8RI2jAueF7wyKUz1+2vn+b8udZX8j7X
eguCtCuxWl+0TksQdplHAHRWLzDoH9GaOoRmpz/6h/krAvre/nMySmCrijsOGESL7A8fCN/AmlkU
HUyQceGrzAn4CDawLESBr0A08eo4Wpxdtkhr5Iu05n77ArRwBrvPKvEdBqWdQakdfgPAEUJx3WIx
VL7Cs1F6NMia3v443Na0jJTceAI5d++HcKZMZkXsctN6VOgzDOtd1TBSFVzxWvFcqxU5/9YbK09v
tCbj3/qiwlB+3WF600PnQTuRDwD4pIxvPPHjKq0a+nIclApeWWe+nFpBl6tSCvtlutT71V+oDe74
1Rm+gUuWbx/YKwSH934tHhejUXlKqhJq9HbJ3dnr2+v+AD0MJHGdcXABwjQIgWv1RTxLELaQmJkU
autzWU8UQeQEk+kDVLJ9U0OptIrNmpB8W3O+PKP1VqNo7vCtdMyh+M0Kb3QMQbc5StMXStjGEEog
kPAqVuT6k1y2+z0h2Jn54DGEFeZYxquaccbgrzxhzhFp75zs84SX70Mag2c/x0hKagKJWc1Q8RhM
4/lgqa9T8Biiis84Wiu/FgD3PEdgjSAcQyxuPoqDHBQhtCzDZwzmr05i9+vjtLOpYqgVNGcvQC3D
ewxRIp44Oq6NJ48hr/40s+63S/Ex1AvMMei+JsXHUHedIfUF+o60BMlFuJCVt4lWFetU5s/3x1sI
aBOb5VVYp4g/HBEcYEVvso7RDrejaK+Srr8xdrWIaC6CVSw0t5TKMv9O1Vbrg5K+5amFDq/1BTet
96aD7Tmw7RmqkmPeyucFrThn6yv7Q1dSw9CFSU/wKj1YcSMR9l74Y1G/KlTaHKdX41RsYzJAfEAo
xrIqMg7piuyuNK0hSfU+FpvTWu4dBWuzrIt/p/ADL6lnY6HlyHraWBstkDwJtVof91fDIbghQU4i
FRNY5QU8A9DREE6z+h65112YZSuiB7gH0ZUo0rir1EDrY5dPFpjIjUaWMO3fQrPsxVO700dhZhJg
0ypWL+IG4InyMkuYbiLHmXPiDVasO8XHBarH/zgUdh4+Pqb9AY045DCG/rBkEEj6siBQYeBVSAq3
rVYxGq49XyxKaxGMZzUm3QqC3dlN/H6FwblmqpVWrMOKEiwyc2xvKH2aeNX+1G1YF+3RXgxT+6ov
CwuOBC1Zpb3pvvlVlHWsmFhPy8VjlxD+LX38GeK0wL7rvBF/g128QWFG4M5encTMlcjSNiJtSPB+
uH0f9HWEcdxe8qkV2kEVqaKLbf9+pOXHdHWWxfzKl26nS7Y1zEIQ9GCrViIba0ZeEvIC6eor110w
CzAuk0KwkqPW0GukL7CUh07EutDGXZZn/i0i3cvB77+x6Jkeo4wrsoTyBwKbivE74BIWr6+yH4Qm
fd2+9iTlF2SINySIiO42YReRS3Hmbr8oOu0CXVpzNNbM0I+13BClO4zZKYVE9k7I9+sZHPfzbR3L
OBJqlOtE0KsvUOI4jopYEjzsp7sgfEy+lAlXYo7j4W6PC4IppEI3ofPFY0aOwzhn+290UvgFmQw5
3rncSEFnjGybWMLw7Vx2QhglhK9XHHQcmeMEIjYvKu8sxA0XhOqgPK0wSdY7AbTBQZ69KlZJ1BWM
FpUIxJQgX54Lhl/ztjI7AQK1+6uRpNaX0IlIdp36Eqa1WY6V4rELOIkkOgaJA8DMQerNn6tUYo9e
3SSa34BxaZLsRZX6xivy8OhMxoA4xhyb31Kk2vrM9xOo09qTFIOCsrNUQYX+66i4wisitq2vLhZx
lMb05a0soOYL3dztH4+y4yN/huiAgG/XdMvpMds1KjRCTxyjNbhlda+85+vheMfuk0XotV4AuAhc
hhUxw9YnZv2VgF4t06gN3a0FClQKtB358xHhZYOZ7wXftG6Uh/Xlv1Dy5KuC80miuAm0yvvZQ+An
snPtJe9Ejl2fmAT0qO6jn860Qs7DJXXRKQpINr1Zv9xHpYoRODoFfvbTGdbI1gvhL8ePRdZIntn6
uNMMtbRXD8DmstBktP1oS0EE0AcA5SLWDno2PxlOTW4/hx6B22fDEAsonn7Z+rivEpOrUG59UQOP
fbxAlO21DPkj5DWMYrsZr9crZobchHmCfuEEEHT6ngWVpDWGxJd6pnqT9lrFal3R6km/3CpxFrl7
k2U6hWzktq17G5rEKu6eftnk9Grhl61tDxwSGdXndjS3yG9D9BVEZHtFfy5dXDH3nb+afGx9ve2T
NRHtItEy9ra95IV/MdMgg5HxzlsHpQAkFEObvHuIsX4bgbAS4Gwy6RBaUq6TU2Xnh5Et6BQT6WtJ
5dbX7nAUPdTbiKTVm4k9QPF7JdJKaIhnwINzNqYJM1nyTYyYYfL4lNP1TBC1v7PyZpUozZEW9xNE
rWUVdUNiqzVfbLZvPXTJE14hGf7RLkP4xPwmOgUGUPhSa8sWsHe86xNUhOardQu0SMREEKIW7oOi
DPkPewE8ELnja8RJHfBjAsrwhZIH2j9/zp7UV8QOrcKH4fDDmhIB+rpJrqL7jZUOdK1xLWG5rv+8
KxSIi6/63LRShKcQqY8vFT7QeWoFumNVyot2MSjnWZGsp9+ORxAweSv8GPrlCPggrM9/o/iBdlQo
r/u16gdap5X0Whfryh/oXPFBgOg7r6h9RAQPMQvOgr+0lF4XqU0MIIXY9MqWGfSlC6V0MgZ5hPJe
gmAeRqUs99/A6cDNReUhKsgz8ZrNynRwFXUqlBQ05W/ozmk9tIGIGTTJCNa1Tn9VcQVIhSOPRyP2
cDUAuQel1tCKiORjIY2S++fYzBpM7YoLUYX3zLEYGAcMZRuUfMHuSgM5uVViM6go7++H3S9wKrfC
xjJMWz6S7Ar21/PF4uyCwzQ0iKj5TQ09re8KeC4JCCYEsd51uhy3O6Oqu9ZMd72GKG9mapDda+tc
S75eHCFcSYuEhvVsRPmRHQRrhenePkWhZjMEDH5oKgWWPU7YAAoO0uJIyPdBMAH7n9/OMDQSxgOb
M3Rb3xTzdHUIAboi5CdisQ0KkdoWRple3NZDWT0JgMUundZ3hDzJWMbpDEGPIEawWsesdCm1FoHb
+3bv3h+Jymru4M4MkaqWqSPA6raDkEWpKCI+h7civP+U933EKtjmW32l/6f1TXoeUZvLON1bPNxb
YtvN2ooz9TyKF2bwA2urUIuLrwxpKvzPP/7l7I1P56B/Q72Vn8UGtS+tN6fapGXDL3E5H06Y37zd
zh/GEnVcgl1L3M/mX4/p+rlxdtHB7eJXw1CtA94NrcPqwW3ln7eNT7fiotkFCGeIFmAX5PvhBNQK
s7rzX7bxS4ib+fIH99M0/mL7cnNs7H6/qPNL0Hzpso1YCUW6CDQvQGLMWKHjFQT2i7KNxlikzS0i
XxQc06zrUsfKc1qGC+UkZSG0/l/MB2n7Un9Rv438Kcp4mWIkn/uQRiq9bT8yIR/61YF/tWCsTve5
nxPlXGJPmdaDVn28gn7gBltexi9R5ZeoS15CIEm5JSBwhVj+sSL0ftsUnbEbsRTCBFdhKRaH5lb4
QSXKt/vei4jN7dMphR/WlRCold9EgxozR6GlQaGRzf3ci2a+E5Idr9P2/riaa1GbLa0lsVKk8AmL
YqtXfqWWX1v2VcbRUok8+zzt3q/n0zkzu5COOcYFx2h8u0MS9ywy4FhqQvVfzqgBO8CWpARD59+p
SIglHZVl7F4TpcC51+kVlOZ12j+cKesMKnsnZZcy0VDkedGg3kqII9FkzqJk8UKp8ZhOJKbRgBCD
p318+F1sLweDSKJwFRZNlpuN85TigbAfu8lxY2OQiCBZCXX9L6J159VZD1wweaJ5V85vdIWAJzAb
XAWDsZHMtrcLwEpfgU4NQc0HkFMwJKtBBPM//vG7P/0JRw1tXs/Hvck2XZkojkERkobyrAcmM4GQ
Shu6f16m+CyGTOpYA8thBMfD63Q/fFgiKCo9Mb3Pmy/n0+4xkX9tWDHxNQRAdhQ5axT2WCRSp9Y1
nqE0axbIUNwbQH1QdX9ccCzz4iK+WatsZ0mfLKO1huBgMpcNA0DmzoM8LlAoIcjIz7usVjCehS9V
QnjmFZ7F8+3sarwgdMoIVJJFXp2QOQIZUXC8becTtgaRF2eF3ecISmZIO9+6V7YRt3hIPzWYaWDB
T5NFIkmuODKhhntqFD00+Zu3bJ9mZmrUeU1miJhKiBiBifY23f9x317vvwc357+2/2VIifgKGPMk
Jv9e7/A/hkDRz3imn2ErBwMVXsBvQbQYEb9MLuuNQ1U5u5AMdifDJlto9mNqfrWSR6brPYxTvRkP
xEvIoR7fDvvpvAF8N5kcWMW4zaBLQyE6nEF0ON0NCoxLiA6+VB8ZpnLdsuQoEiU9l6aGyBiaGfd5
JARHtIfdIciw3LwHojl2PgjirHn2B5ddSnbvOZb0pFus28iaLFBMs06eC9+jTMSJbthCcgP+ZDsP
NE/GH61PJDzfz0IQpRt1w+XjcFp5NPHMYj7IMwetOxONhXpWfU8PZplTdc74XxmcGkbNZpeyf+UD
Faw2JaTdLCqyKqTR6n7Zqkce4p2KBJ3Cza2xBJ8EbN0wOYKYGPug8wMc6jB1bL7/oA2P0+nt/m7I
WLYwRUaJQnS0g+nHbrrcTTYumI0lqJ5yDZZdwBJJJhdUbWyZh8JJLzkynDcQDCtnZGqnv/S5c1mm
UqXbd8IlwlYY625aVltcS0Er7A831IILRNJ22grPUR7Dw234NiQCpAzk+vM4nsGkiBUPbPpEEBiP
bRBe1aqm10wILEfMGz1inopFg+hqltQEBlmr1pJFJZGFsOuqsN2j0bgSEbQWAxvwSg4fS/F61hAS
+zW7D8NtLIVVXAg0U28oHewgUz3OnM6n6NDSo9L0MpbMOa7rDZ4ZdcUgLD3Lb+717MFz5MEgi47d
HTkO5+kYO2fsZdGnaKVC4zexDqExuoUWesBptXom8Wtp3TCNGDpDSBMxhyJLaoNB8vUslNgkKnB+
WcaDi7SXGEhNPLw/T9REejjtjo/95Ozry7thVohocaJY9eMZNlc5Pru8VEt3vm7fJmrr9/k4mBO7
ux6cvs6bT1iLRPAWVM0/cpsnLbnZT/ft7h0avl6vuSybX6aft3aKq8dPiiI/kYKBYEU2qSjy0xjq
BP/XX2pR5IfC1mLGXuxHL8o8KqVA4ObahI/DDTP8e6rZuG/zswAExKj4wSIPA8zjLTyou6+gjajw
1MCc/b5rlMl7YcNhtz+y29UgSKlQ6r3Ohxp4Vqaocy3K/MM1Y3It6bVu93soiFu+20YZhFSUeWBx
ARPKdbBFmScXRvEV8Vas1cFg9R3qmTbuaW7v54dv898dz+7f7I952YIXJoDdOfvqz//qxO3y4Qfl
pYoiP/SmTsdGDf7w+cmhTTplp0xpwXmrl8P++7T9ZiCnM0q4sKSKMr9JCcMaf7Mo8+wih0hEQirK
/BwVOTRByJg80dSdsqVQh4ocCWL705emmXAp8PDM3iCLqjrwSl4qCmRrrGHzO84fkSc6yjupiv/r
R+aVClWK5oVi3Wp3WOWPIGatshR1/81h/9gejSJ6vDExgAC3R/v75+P0y8a5GtvsqWr1ofP0LuYS
sU9Er5pu1Qalb8ToR75OrwL/8T//2x/PBnkwMn8iSPOjsHgQtPRVgn46LouRp6ekp4F5mzf8gPwE
UP6+rttP41SXhCv0+IyppX2bjoTo7+0T/yfYHzaS+yZsY2nY30jRVqyaa2N8xa8GyMzTD2eQvZ3O
V/iTnxr6DfGzj9lFB0qz1rUHDKvCGFNzWWO5uMcKcvOVN2UDBgmVU4PbQjvLNcvhUmVYCjiorcyF
zCNW8d64W5GQgPcTHTT/MWXr6jqJkiu7KJf3McS7wabROqUNoAMbtB1ooIyXkjhBvAqNPLbpKD65
x9YfVlOS+V4dP32FLdILd2UtNsQ9ijzQfIenTeV3dzNOG18/ydk+rQWOzAoKHykSTbdXcXEDv8Db
9gIhn4MN9YFLjZEwxej4/CGpLTHb54mPEJesINRQDdUzleG6hO0iRlZSHXYWsgeJj6+SorPZFxYF
/VDXe8oVJtOei7hnblCgHUPiBr3x8+O++NTDGJ/mCfKblzNojl9WNBSkz3F/v54fb05wHF5fpyvV
LCN7wC1aVMjMAVZAlWrGsAg/k005w8DLCfBnTZSsfNmCjy4GoDy/rHH5UVA+az6VmJfk5ViULFDQ
xxnWrWnIlbFgWgOTp2qKzJorVXI8tADPXRCkK5i45dcQ4zUEeL37Bej92Bxu6bw0GrD1Pj3VwIv/
0lQww8C/zdaqJsONJViscaP6l/goN8oLr7xlJpcDkT1IKtK8W33aWthNA9B8NNVAqZah6h13Ee43
NNts7xAEyl/dEMVYkYZI/Sht3BU1Fj5OaFXfz5vLw9gdlSji7goCwJLARLFtBu3SvDXaR2t0iC8R
Wr9gN9N+waAdqPy9aGceyAtBDkQpA/L5/Lqh4XcLNvIQLyqpWhIDHm6O4HjthR1S9WSRFu4AzuN+
2p0xrXyixQKJheZjSwDhPplAklnJj5f7dfJj7C2BA89Y8fXRhIxS9ok45/nwyxSYIXtCSnnNKOvb
4XZ4ORyhs96YNw17qHsmdKB0T+rJOUgoZfAb8CBVXCQW1KTAZKTr8Vs5RHjZCEBIRgqWpLnwdLLr
qnU8/G6b+JB+HT+ZcZVhgmtVcS02J9K1/JTHVauVYTVhXeAyfhUhnkl+5S9riEvFsjFc7bp9+wj1
0/72oZjAEcm7E2KRoZwsfo3AXfs8Y0UR5CfaSxF5C8NSfav2+ULIBvn1vLlbzFPjWFUQcA2+MyWJ
3FJEXxZ9Ynn9U7GPhEjOUhBDo8yexDEU304/DmgZLSjFflQs1ARKmxg6vwLbf5TmCWVx0XJ5+Yzn
XnQkm9TqGGKzMfSqiiZ+JyCOltk3tLVi8So3lc174OUMiYdcWUcj7jFOViYXXWc2NH1D+the3c/k
F+s4tAGRx8q7KwTF/jcCYzycpMVg3FTc2AyrPl658W30KwRW2POh5JUt3VPfrHo4uqfTedl16ioO
A0X5m1vQ61G8O8RA3oSbMGq46WfYQ8POCw9MkPkhY52RnfqYQuALpDWu2K+ddMfeAOfo+mKGHmo2
MDmzEgxCv3447+0O9R6L4xVh2ZKX5RK4zJal82E8WtUptnpmyWWvoxoUMs2shjb8YhCnLpObjHNV
pJDXRPuaMfZ4pX1CBaVJtAsedRf3SgFWQ4pVxon5Dnl+R56NyGO5OkN6nymso721ibefU2ig0Rdi
f96UxA0yJn/mkakL3ZniBs30Cq+QgEVUMfpbgAaLoXNvMCwruX49OaYsfn8BLjcJs1NU1grCNC6C
AyiNot/lbo1t9Qr1JGZGLJgIHrlhcYyrrKCcRHdKY7VQ5xA5ijbP6Lnf2j6c72vN0cQ1RZxGTNbN
rrnf+8mUhhXXxhtBdK6cHr65vzULDTDGUSXv3X5JSUTUquBA3KDF3zLUykaRAAt8FgsZnYW7++WT
2Nngty6J33UyHIKEi8EfII0FSdq2SsYkoWJf1Yxmk8EOItLOd5yRANIFs+QV3yO7h1n78ryBSZsG
kQ4rCZ9AgGAOrmHSVYpJZ3kIloBrKsVcfd6Xp1CDzAtFgydv6aNJi7aKTDot2SohOvLN4Ii6kNdl
W4D7ww06ZMDjM8RY1WrZg2ReEtXAGiMdkFcL5aTPd+901eH14P9kkEWvnHONhjWIQ7MBUvfRGrmO
PF4p9nfiWL2c95/rvatiFVsKbjAujAPYXHRmGUve2n5DUWws3PZL9JHgtC08gsilCdyfFbbxOmdD
88lTGewhhoyKHWTbWlE8NtueT8dPg8tG5Rb1p17cXF8nBRH98ymXkJDxrkqFYCxVbizFdmUCWb/6
UY2ltXvLyAFE8xc2nT+MIRHi4gLKcY3bYsuurlP1Y056IU7RBSuOFni8iTwODldTLLmqhhqplICT
f7FZEvuLDkH1VTG0ZFZ1yoIJsS9M1iZ+Hkw1nFgZZk6A3qFIMn3WasYijfIESnDVhKqlw60T/RS7
lzEWakoxBE2Z6Kdu+dassEXNfsgQk8bP2wy1AQvR1269HbToc9fNep87uhd2gKBWDAXTT/q6b1Qr
r27dgBkZ4NA6Q348v00YnrWQS2eyYRBWRayuTEIU8xSCSAgnaW9oyLsdshUfmBnulJSieA/yWMBT
F4UkVpbRl38V8/4zKlq4Tp6kE4l6gBH11wOaS9R8Z0l++JGCc+x8o75Dm0bKEIeDbspa+0MUOgVD
1LRiKSii+CdC53073KDyde0d1OUss909FQH4yX0CJ9IDclvFAHXMnCG4XhHGwp72nNWmP035VDQF
oGGRAd9LPvlTGjeZu5h/85jdFp7EmtS7KSQxu8npZgnoFTqrw3pvjq/3NFcr/yhtsskEqJFqY8yy
yyHmyQpGnCoZPRMKOfyp4OSE+H/LH4yT8bJrnLqMuErIw0XPxpMZjME75OiBzc9YQHDMs8jIO5Xd
w5DpnZd93Nxzn5ZKSUZ+iBK2WxaN3CUJAIo1xskHmUKgIZZePfGalgMnDuP0N0mKpbISFjWQ/AuF
0Qw4jUHSk6y0WlqxTwpVBNK5e97t7bD7LQKRc+rUJdDGUaeBR4wwGxZ2DMxpMcoWYZSpYj0OZQpr
BilxO/w62WZFiQ9Nhlk5Q2xbsa41ysqv3cW1JQqOWNvJh60TFJf3xEE3lvQGWulBpquiW7PdEJu3
9trwXmUtsr3wSTLt8l1XcfMQY6hC5P99mo5ivNYKLqD12pH3XHI/t1jpuLVrvvylDrNLbefrJDvi
VIfpvdIW+Vqpvbhcca3WFfZxq03JaMfP64l/EvXmdvfL2xVcResHxJ1ij3wjfoCm2AAI1xqSqgVr
CUNmvpS1AjOQRAJ9Ou1NlhL7aiXrUcp4ibJ6aM0lWqsWS9yeUpEpOnz5SzmrZ88u9mLurOLFBBDR
b+G4bklazjjFEgetTh9SHPiCS2uRnhlMwO6abxn9w69xhpASBDi0RkLaPjctXPDCAw4c+qroXfMj
TPPUNN89XbZ1y3z2smbJLba4WF7rOZqfS+IBrT+rdUTBM51Hu/N218dEUosNrfyJh5iMI5tVNB1c
J2yewS/QSMe10Bz2xlK0/zNYPmGyIbaQIdR/LS1NXJ5kWPSVAWQpJybLMGoQ10Pg96od1BW/HbYb
Y2ZXGQbI4UoiAkd+TTKKILuAr/4sk0qVf24v29N0myC7zH0g/ipXXVgRVsWBvl06wMSPVEkKLUJj
wYq1q7A23J2/utjCcPJBOchHoOPubo/IB4z4Xf4e6vgk3NDOq8oIS5RFFLTOJsJx2Ug5otYzXGTQ
hCajlGE8Iz0SN8/rmxMnD/vMb65KNldrTURhrwYKUhjASWTIgbk5OQvusKywMozTpJ11GCNtMyyH
ezWwd8KARrq8LoaV6ZrSqzMETBkGq9KeOFoUrofjl48bwHtAtp+9pvze+uTeyuzedi/emd1X+Q22
LAtEMCDQScoIRCKSXfLrRmklgsLh4EyFWG8e7eylgw8KX9gHz++PZWD0KVaGjvKBFY4uSBhW6QnT
IIulBCqGKirFKTbijKzz7udLPujIq0r373C6PCieQJPofPkOBnaza3WFEvDBAA8oc2ped3/yw2Jo
0zIgQPG97fH79jMjuLs4QbAqZ3BCcmUM/ciVHdVmXQNatIyLSrB/sahf7uSMiY/tD6NWDNcj968K
GnXMrHY47dz2nIr8OJwWl4xbFP2V5n1ipImuc82eqWYO9yzRPsVPrCiswZUotoJb5dyUWAe881kg
EMmEwkLYnJjj1C4i+lbscD39QOiRI/A7Y6UqriQx84yHyk8Qpkeq7JNHfYj56jWEFKld5Nhzry4v
M7+kn3pbztrnVrPmGmKlNDv+BiHlP/GTe+OP7XGpmY7ISSwmIBrFYm5H8S5jSVS2A4IWjbeAA4bK
NUuezkuLMo9yCgsWpcipOLNbe4GUBj41jZ99eqbt8bjIiiULIgLYHxZF0QqijHcnpgCKJalgK5+n
oZ21M957ftV4/0sUUrP4pgkA3dPNn8IwOHIR+CmMF1jeYeCE5R3yWjJkGfqvvdiaXp1ziXafzcJj
FDMifyT2hU7pddXGKnHIgWNEUpjSrvyfyI46ne/76e5cOlNO86tI5FyVH8ACyhg/9BYj31/N4Ule
i9qhp7235peOPZSrFLSz/FYr6CaqJeEIZSyISDffjgaLtKke9eRHrcg5tWwwXJERTkGc0MKLy7DO
pBkiiujEJo2tsz2OAKO9aC5EGYVTrm3pTouThPlmUUwdn0P0YD8/B/mp3o8xMEu7OPaZlHGFzf7z
RZcMeVLADT8ERdYMPXE4LekJtoYkMLMqR9fqsbrWCG8m4H06/vv1fHpb4o1SGO0Ju/k0VQz90axV
wPf61bDberaKZEJJ7NA5bFjFGApuYM46lCAa0orNIjnodK2FbdhC4rlrhi0Voisf66YX5p3JYQBP
tAxW/tV41S6uI7B9xCr371A3cLv5cGEobtvk4DHpKaI46HDIs+WMGVtju1lCuy5fPtU2GAsL9SZA
+sXCy419RB5sjsmJG6qJsfyiwiqrGAU6kXn7fTiuwafNbFOGDSUEp7Eg6wieQraCrTYGhZSsuuWk
EU3cGRaPcFoE4vRchPjhTYvyI8pMKBEbk8A59loFlQiNGt8oBiLnqBr7jJKTonJrdZnxJPH6ECqu
XJTuS+sxq42aFJhbPgvqpxmTsIQtNEM5tVH/QVw7LPGHN1Y85gvCPBgUmBp7g26wxBHyJPWWzZZ4
kXAHwoNEggxm2mn3DtEMgVhnWXx9a9uQRIRzF2bZyGf1K+Ft7M0au4yyUICVW8bzskvZ9LbFoRnP
hqHGG+yMDSbBPNuabGt7xWwcZm1QqxN8hE/fmFS6TJ21IslTdxO35/7PO3iGUCttz+EL0dtyWNLH
WWv/3VLPdXxx0SoqPWJIUyfWw8JGq3opNMjhl2BQW+cWy4lUACtBwdmG3cCrSOim+VN8MfBbivia
mA+7HLA1bo91PuF5jguR0BU8PWRiHnR/+d42urkqGyFatH5LQxKWiUldrXddLS1QR2GIFf+2e7gi
ksjSX5YKa26rqZvqGZnofox/2d371rLLeyYQKqYen2NY2PVv0Bgbv3FEhRByXjF6mDwTd8/D8Rbp
+B2Pz8mV3QvYfdxswOAGa/Jz+dycKKAWVpAs3Q+NdTFx6nt/oKQpX1/b8FZBm5VVn6BoceLwkK/F
9pC9dN6CJ0HTiUNC17etrSrG9q0+1AAi4iJPeIVfPm6ltSokHW9Uc0S1LmUeeLBIC+X7RKt6aCuP
s4tr5S9Pxxv0sAi+6GaJQEauBy/BXCy9vbgCCNEu68BuHK7ilpPU5WOE9g6QmMZZGyYUCl8o7Q7S
uXLLbmK742K1ecv9LVLTuCe4ApXsMPe8X1ymi8sIIPNnpEwuzFiqMMaTx/dBN7MP8dvYpIZ8sgbC
nSUBoaf4UofH8XhzNvZEKO7wxw39eUNDONfIrjrAkiF634AdZ3H1dDmUXcZW69Bgi0s1UFPdQE21
XfSQr3ioFYl6e99epo1P6Ht54D8mYZD+B6FS43z8fAuNTfmqsKHiIhCRGtWXZlk05WuQBi7dosFF
vbFikEMEOLuq9xh/o+DSmoDNG3qGOb3naPZwJ5hFUxdyT5Yo1Nlft2++tOlle72BOLEKo4cIlVLw
BKnCQrOlZqMFNFsGf2QfLMgzn/6hcLQX6+Y5uZ0LG8FHdXcepcN96sRJHsdqiBDDsF5TRaONpMYN
5r66XfF403yMZogd0UU7SzxeJvft6Q5TH3xLlzcpr/cjoHUdTtvTfVHSMQBvRRgKja0Oq/xKpdqw
6AevTFDFfVsSkYyUW2JZU5zp9YAxcsTZTnJctzu/H7dJmOQjK2430w8/WTd8tsnOnELc4k5MxRJM
GX4HR7Yd7tMHrNMZ6zRxHY+7X2fXyc2TKbhOvxrjUMAqWedL526tcw/x3KCaqqbKn7u2zt3wucvn
c39pv9a9dPF3qoKSbvn9jtb9Fub9JusM1rlHXkegL4d1To+PFzz47bI9McQPgI9sbmdrTlvRiR0O
PI1Q3aF1Yw1TEiQry6747S9TWfttZy9T6zcR+9wwkL60ahvp08+3HNbtfoGKSl5VlF6EVR+n3LrW
mpESahBbdUBbWz6/KQd681YTeWLxZyv4s+NmC5Waeoua+D1kx7O6H0vu8DDDxXOZ9OFjmuNsrKW6
n8LaD1MEDSXPy4PSpNeaz4XKpPzt3Ga9Z8f3B1cZOj3U+7P0XtOa8tTgL3N3/Cqyc9DgBetKx98q
AkxxVfHBa270VC/QIuSm492JammVcKyHaFsW961vXoOF0JGW7szm1z/hbGIIRjqfcf+P7Gg2MGQ6
mtJRjhqEhoga3pyt/As1U5yyWES0YB0WLLG/SnaIR9/KeYXne/CKc5EAWq7i5RCx33eGzvazGEKh
xbq4GHUAJu0dAQ5l/8BBJwvTlXG9JqxXg4FYQyUchhI+Xpztv70H85ggTW4L7kUT3QERGZYxjxv4
PpvpdATI8OUARduqIA2JwU4d+yuaCTzAGJX998xmPhoPdf+H0+t5oeB/LGulJWH1mIv8iIp+4IVB
4IWapgh0EClvcvv7NtV7rh3Kt/aNDJ4QvUfytPfTBUJZp91n9EfpJvL3x1g1XIwf21YOAumUYnm3
5WBeqUYpvTO1vRB2xLI/xWSC0ynLOkMm+aOJqLMwRRMgweWKQ4zfsG8H6rH0/a0gJaFQafV8iSHi
TRfzEe5JVE7CdeR96173rT1QWcCXYOAyj7vLEKDU+QQ2vkDYuOUCYjSczY/sELrn6QdiDPRlIVg3
1mFBMdVK2S9FVr+4XYJY8YM8eq7Woa6qEBeJGIak1nNhoDoATtHxOWiztNsFG7wOg9Von1IeipW/
XY9pG1j+ieLwEhEKEivRWB233CVOaFixahnnvoh2RuXkl+kK4uewezhV4GN/yxdAQ6f88BaBMBHa
35CxRFCHDIn8M/F1RotE3+56wu+Y8EW1rMpZGMJaXJAH6cDaVSG7MGU0fflxaJgjMRGrZ611MM4Z
sxoI6xBP9AQpomGLgmTNUzMPyRnkfHDG1eRJWvmzj+IeC270EjsNiEULcKx1SJ16KhfWv1jsdjzs
JUKWcc5+trFq3RXOSRKoKf8jNVN6zWbjMxUtJDoGHg8lnb81om2Z1mnenr/WWr3WsPrO98Gvl/A8
qklGLS02qvK3EJkcgg5tmxHCXnCukcV8rfWspxf2FlMkkULzWxNXKGzcjPxZurSRFxOe3yruXiPa
mIuoLOq3aXWL8AkN0RN+Myf8YIk9S8D8/TIjyX7RJ6kU89CLooTHkUl0twxh+oFZSw83sG6P1ffB
IvbglG/T3WNx4iiB7S2f1Co5M8M6PfXqYJrt9/OyPydA90Q9eSidDEMeESyOSuvymSdh0sby1jVu
2AIT4c3p6XWZqUSCuccTh71vj8dPTI5erfVHAXopRhevXT8/wICAa9iVEaJeW9zP0Ft4tV4UCknV
iZXXBJ3vq8dOi2uNgpYYJDaiSa4smelnKbgmlykEKfRFIL9ezHgUA4JjqX2outvYaJd+POqMaZ4r
o/AdbIRUdihlV/GskgQFGaNURvGDG97BH71Zcz0fDf6ML11Dcqbu5G/RT2G1SlKS7SkLJn4sV3X4
4S9EAGJwOkbAqErwcj1fIJozGViJggJ4OO72eguebFLEAgUc/l+qK8IQGppOXmDjHGCUVKNSdoYQ
owvr1GEdyCO0CdRwqNHzAmh5rSasFVDsSYbTYKCVJXoDE6KYKPexvb9/HBe+7CLlQWiwG9J4z/oY
j5igS7BY/+8XhmTmQ1v1TCpVabgsXxs7xCFrNFMz9hzMJmpihHbF+Qq11EvUSq0AlBri7D8q/cF0
T5GvPjMGg2ARFotZ7D1MpdgHgPxvf3iJeHtcLmcD4WSMBISdqo0dgzJKJ4q5JMtX1+UPJmaXFjy7
VK0vWzDnsMYsXjmk95skmD7HnI7xn7zM1+0GE1i3zq/WqEG755qy24czCwSSdT42yfur4qTt5zHK
Bh6PgIqTxZdrLRefn8hbGqIMa+Qw7FPAGtvVTOlQ9or6lXVIUWd+Ox+WSpPKMamaGnKg03mDclTD
yzPLdDXCO69G9Q6lQHiH1r1QWoezf1ZkRnqxoiTcBRT2vIFWzSCgxpRJDwJVdmmxXhRcQXd7WaeR
ytnMwa8jN/MU9ATpMuwLP5khKYp0QDaz1lcxUycaj+NC2X0GV/qYTwL2FM7HJGCFV1Kki4td1sYG
Oc0p4Z+0VUpjlTJmXyWcMCMWYgE20JBQiDfjbJwtlcZ9XE+qVRMJFFcrxe5GRhuNqzlxhLw7JXX2
XyEh+pmGf0ahoWTTVhqQFqtmKd4ZBuTzWO7rOTsOiZK8I6/YMx6O9tLu5J9wI3Rw492paRrXjPij
cs16L/MlVnMl7jBStEjvrGcWuJLD6WHnuvuCc+cSmiX+zOl8/z9GEB3XJIhiy+Ubr4wbL2fbr7Nr
EkFwSNtg3yEuSjBTXX7R6Yjm1YpFWT7J3rq4aIzcZ2e10yXGvVXgmFaZZYwmOFyl56dANLHqibge
pwPx0aJwalg4CT2p3dbrwbqg1mYesY5BEBULitgLltzP/fhbaLcqZhf2VdWVaynGG+Q3leks4zWC
AWmsWdt8vbRhY2UWnFRTOKxc2SBHcbsC9COdDSLGZRgyk1lXRhHzSsd6l7JefBf70S0tXAhyF/ag
Ru7p6MZlScMPJHtX5iLCdt3oAoSO7BgEe8GOIejqgOBj2O10D2yNUKlabYkPc84anZ7FkQTuZoW2
om0ez97aj49wCd5xRTfxqXYtl4IhxcX8Cd5P1Ra6QfPrdA0DqZcMhr4obKkut/wbuLQWojUAxJnd
KMf79QvdKFxIha23VaeFn4DWzteLO0M+EMpNMwKUcHWv7HI3WiMqq4ArvB2zMna3dsJPpXaYYlXe
bPCSUuOxEMPslflqVrjidF6Ay+95wJoYH/QclaFbMUB5MJ4yJumQzu5KqvMUVc0aVz2LPe6Ulz14
33jhJXoRfym4ZyQJES2NDCMcIO+wV9y3+XJNhoP7d/uRDZl0SsxFC6eKVOvxkMd8ltWVokmEgibf
3yce3LY53JIpqAzj7+/hZoQ4SyXs5EcDxsg0rrw7H9f0wA4KurRR/poPYVWzxsQyU5t7e78+Tr8s
Z3K7WaSuVOfC+RKI2y8HnocbWTofP+qSMuJSvj1Wfhj444PAH5dFXdFPTGaELUmPOpEetYRIiPSx
+IpjqaWrMl2XC5WcQyrwgzzD4bUb+Ghl4FttK03zVLdPd1k/cO5nXoC1hfJUgTZjkA8B/S1ghX4c
VNiH38Seee6slEPHInkByC9HllKN//n+7n7artfthfiUqJSB35OO7XAEkAPINdlijr6f1TwWyapc
Hw2l4d/s8qCey1eamlEVtU1d80U1PZcrgdqqEopOVzka5xpmpTlddhUSK2aouA521XNxjrbiS74i
p+cSKjm1R1klX39TqIVs3h4X8j8aHqaXi7sSFdWEif7bTD0ruyOGsUrq0MZrLoHn4NsOaoaWWlQU
WyArhVnmQVo8aYGncgSI3BGv5gWnqLkR7YFEWTwIF6/uQEOUlu0lBmuocFyUNtT0C6gehZo2iQ1W
y50QQ8enhJBZ2Sobur0fXpcbGYa2UVpHZPnuygTOyNmzEnGLqjDAc385bGRdDYY+yK3akDi/ON/q
GKuR8w5ElLuIudul2e4jZPswgQURABL1qFGcygWfcL+Btq7H6X74MIawNlwZEydyi7FBX2wSQJOs
UbSRl3SnWGezSILcclVHxOdZz1D+40IxshUf96s1VGIYKsJpFNFM2V5u0qlbMH/HYpYCb7RL8kbm
/vD6Ol2nFf43Q9QAv6QTklK5hOvvjoBctQCs0SlgWplyL7Ql8pvrVW/Y8Fnz19fPjKpG91XzBQNN
UjCQQFPxGMENKYhcTyUuNKgjhzX1ZSlCVFK1WiWTAR1buGu9vzDHhGvYcVDYUaao8SM08jHpI/5N
HupGjLoSQzHURTZNfhkeciWbnMLUsgQpC+Vxsm5+eNYwPA+Rym6vzi/Ds7JkT4W+TJtfJo60qmrC
/DCWMQ7FY9Swg7ouv3BZ+VXH2RnrBL3P6feX1x2VpNwWCtgG4cChxOkycahlqG9kUJa0bQxE3b75
udPfnL98PvPIMu9wZswtVCdEFJDQBdFTe3/u9vnxcj7OB5WhZA0/Nl9oDAsJ3xk2tD/vuJQSDMAV
m+p4LZHOgdXCyVYu1IeFKh/NT94xRqTssiLp84poW+rsLBUDNaWFOIWkGfyNx4fzcT9eJigfX8B1
5FI9gSwLoVEkKTIm8/VO5Kzw5y07rOCx7w9X8tgdK91DxOO3lO50Yx7NSq+2K/MnrtSiKsrJRXsl
YPXljboiW1e6ud0/j7MC5dC3/8iERsDfqep5GXC6ZLDrpUI+H8/XKl9YPMRiZyrzLmUj/HF6vfvC
L4i1Uo13llpgPW/hlxoCA+0QDmjb8bhOG9eReagVZ80fNW5N6zihJQ8fYOuuXtLXM5fzTsLt9QY+
I2Xt7tOqty3iiUV819eFb55uML9MF7ckZ6WKz0Gu+UJf8EzsEns8ZcM7EwHelJQ3ToYftv96TNfP
/EI9L1RyZC9AVQTB659iRVE78kQh7y2dmoq0lqQ+Fy6PNyhhSZ/p93aZdodXwLAxThtfIgkBUvAy
nu1xA6xSWjo7vgTPybQmZ76k5AtOCwh34zErXgbuq3pSEuFBV04GwkUHZi2BsDzbG+mK1bxV87sK
jyVZc2EFQRloMPjx7xNN9vwimVVMGtSthEYghYcw2m7bCqigh3mjWkxHvF0Pex6vDX8io89Ib3Sc
6RMpCf6emyfzKwyJqdfPVvAxMIukhgiMPUtE8Cp2f0LHGXAxvVecwuiMGeIopFlPC36OQzE2NAVu
2r9NxgEK8yLRwTaQU4c4uCI6/a22xOI9chSIp2eLo4A2XjgJx0cRkebpNpZuU5hRHIiivPFpe1l+
DMYAHWAsyOwWfM4NgkjHx5RfpZw/KdrC4b92Gms33W4bJ0c39+0bDuE5nLDAPc/COOuGOkYQyInJ
HZBXD8dbQOK/PT6cGP7ctFh0sTseMvMIcEGynur5yFiKEl2z2buqjAGHOp1sSnOH75+XWLGycCQK
O9fpwFV3Q29XuKLHDasx9ofXz/wSFGuuy4T6w61s9/t4JWP+MB3fLEeHMjfbGPfZx2VYl2/350vo
sdygvDUuNZ5F5Ac8vsxLHk+LqKML3wpPJZwhbP6+fTkQIpn9LmVvXOpigICWiMQF5kMbMC/eHtfJ
HP2OH1eRLgS+h3xUimeVxlUOCn1+TFDJsoqsmpQyfbP9+XxneHxj+9ZbSJqkY1T5Y/S1wfPOQKcg
hvmYHjIYjwISrvK4p1vUjktn8SPG63Ts3PRxcf5uDFo44fh2xmk0F+NSyrgNhoYIR/FWrvGglPbC
m2DdoN1ptUL0+ZxQXSbd21vIBB7X3Akfhafz/DJ9vmX8aZJ18SeFqtcOMKw5QNcp9B0JIwDxf0zX
RSHsYxyzF2bph0PxUoo1uJ7XAhC+QdaZ7J2vtj9/x8zE7XDzRT8r7GmS83x9nOFBtXl+fQWjeMEV
pIerk1tL5Yr7/NTmvx1TkqENkMcdXb/penCWyq/59g2ihEo5iqSE5B0t8dCWipxGOConn9FDuL1P
033RsmBZ7QREF3sMqXTdvdT18PHGhSoLq1WsBnk4b2T0cyClxuD1USHu1zMoUKBFkj639/PDZ8yX
NtRoQtQJrzcI0RnfRXWM/1+JQh7yvih4fpzud0MzD6yZhaxxN/CvxzRZJZr0NHEPJU17KRV6CcxZ
G5TCj8LTGFTpY8icXjkIWYsLwm9oNBnjzn644CQuKk5ydiPMbzq9PbZvBhePbaXoZu0s5SpVUCky
IRpKaP1tjQfii1XEOlO7pdk6RbPdfCnYoq3R1okwGVXpnU1pktBmW7560szyPvtVmqlJ2D8afgEF
c9l6qhQdErYDwetpaQtDnawwegjMMKAdoIzJFHT/ZOu+NDw6uuNRkY9SbWz+uf22JXI2FIgmBxyh
bRYs+7ZLfp1457//9Jc//wFSIH+g6/wZYl/nx/1n8jR+DkWGP1PN7s8LNkA9GOaE94AWtdHIbhTX
DGMe7/UwYfo5uIcWcw+G6zHzxZZ25CFuZ1cuH86QmGOVnKa0NtKtcbfLQnF2KSkGA1Cw7cIwGgpD
6BntX2TiCQeX5oZlebxdxeOF8tJ5B8cQfn1lWGQJ4RmLjIP2VFQU5VX1otQp4xXh1L7Keu7SiAGU
ipUoKc46RqHED1JDYfsBmPOGucA/L6P279N2v8pxHUxlklxCbVxCa1wCu++GKOFYl6JVkThtDCii
rbgNUNI+BPGA4rm3CUkDHAYPsAbl0DDqI38opnmRvczdzarwW7NS7RpOSVdmBBxMY8Lg/nd31V5h
+iFGNCeYMurZBgR6hV5hznfw1y4raGk0aCmxWldZaZa/m9h8hUEQpWKahEXMpC7xZ59EMNoZUZ5N
CdwpEhMKYq0H8Bjc0XPxU0/3/9xCXWPI21Dj4mLQoh4NfSZvsFulASrFyXucfjmBg3/fGmdikhXl
uOo+jF+39Po8YLuKFzvFJY+zL9aKTw6Kl+hlla21McNuKWpFEzw7FYYAHTRfzRkJvyD6AYcGDNpr
Dc0cIh4+HRzQKxYCTYOh3xYvl+kXC5fzXvC4in4Hg5fn1p1hNZSKTadtqlkl5AaF3YWFaFxOaehL
D9d/y04fIYop5euUpu5vDdIdEzWZFzO98TitEawAI8pyQkpDNCyiBdJNVIkLQpSP/Z0xwmc4i0Iy
Pt9jqqnW0ERfGGHzX6bPl/P2uodgGBbYWe9bKObGx/awwiOveyNgyeLIcKaGQbEIMcXo9O7Bt6rh
HyEfygXw+/PuAXuzHMbSkJVALEagcbSCJ+Gdwh4WY9+dLt5+WXHBw0Jc2tCFY5uEj2yVs0oXrnDJ
vhJh8+OSV1gexktxCEZ55YSrjDVqIzCthhYMR6/UwgPRWZuggeYx3S7TZFAM59YS3PAwUQRzC2Ek
wBZmt1q3LIx1LtjEoPl3QqJ4ObsTAXu94KPd7jBr1bDf25WqzcpPtGpo844BSS6fNZg7LtBg15yW
NLSsoFYRnqfttxWmXLNw+jRHY1FdMVfNmEGF/tbb+XHdUSOF+DPmxxz17O6ZfFgBOXVEW6eCxkh+
chGwFw4vAFJ4xFzbdL3lFyvCYiG2hH4GDuWFa8Jv+I8xbHrY5d7OrUddEPVs2p9YxacFqRU+R9ng
hYaFxBuKZUK5SPb7MnyPs8H7+ffH7YuziN8dixyBTbLLFHEZjimLZV4dd4ElbF3JEK+kxq6fp71A
4/fhnrPSwDKKKwhUBvEwuQgi9HTbn5Iln/VGaba4X4CdZ/nboQlxcaWeTyG8WmUl6zitTRXhJi3c
EjhUXAbly9ODYC1TZKXsKvywCZYvr7M15Byg9PD3I+MJi+8f90P2x0f+WIz5zDNaKIzEOhj/77a5
HCQEDuJNs2shVgeKpzrbV4g0OcE+ufWNw/J+EfOzemIlmwWe6Ni3emJP7MmLU/FnZ6B+30BL7O2+
/bhY0yvLOL1S4EPPV6L8L0xk3H47vCE44ffDaZ9pG/YLx0msYOgF3FexsNf4bztjkSoOGQ4CyCPa
bLC5mPqbAoRE+qfN2/Zyg+bg1+vW96v4qgnjOspWzJuOLjKveaWpZ5u4g809n06nBeP9Bp5NB47f
Nu/bbzh7JXbO6A1oNYC4E8xZiofkwbzd1g5ZEsSvKZWN4gfS84FpwqBOdJWpZ9hYo4o7YDsZQQqc
7HOc5kgZ7yi2fy8tSDHOMp0EQkfCYC0VA/u+8l/PGeFIe0tvR2mep4aqhR1R+VnJjfy+oAcwyc6v
WIeO69ibIc+znONQuBc/XG6Hm0E3dBbehJwbIQbVE9SasYEhriD7057vwwNDGBfSxHtlYYhdw1cq
0vwhq5uunhiMJ4/v5HuAQ2XEFvSfqI5CZ8DY1zC74rgz1D4AwEZVUgtc1fYJTZfipq8A5eacfZAl
+QVGZgrZzclCYrtz3vTj6ATnLY6cNdYbaoXJxNPzFRlrMLPLvl5xLCl3loiJAkwkOoSyjtS8wJgN
EzMaQK3gcgLIQO1srMBSYow3Aj8KPUgfVp0wbV/wgpgjxQ/km0J258snglfkC5ToctuwHrgkHqYD
J+pMNsQV0S3Tv+ypousQIFdfkFld3JCIc/HxsP3XGHSMZ+qY6MTQTyGKvRCWoJnGjuKVCyc24s5Q
a8PHYb8/LmCQ0PtFYhZFaTNYlFgY9/26vRiXX/Hlix6lIN1hPBmdluNxIUlmcWzkD2Hs+Ktz21ng
j565C/RrAMqIIPmkA/HObmEm0OID9EKxCsy4YGfg6BCvo1GoZD0GegHWAWXJiJ2+MdepgOm2Riv2
kU5rCJDVEeMJS7a4n/Bl62yuLLhvHZuIyhTH0Yt+VEvv25sAoVm2jlqWERAHKT3JSkiYL0qJMb4A
lNt5KeGFFsW5AFTN0its0KDx+MTXYLoBkdAQL1unNEyhWGHmO+ugR+g0vREakGMlA4Udl2H2kYjj
gtRT0spVx9MbFjODtI8GKZK+k4F0rPWAQiR7mJ/KGnOSvh3Ba7/7cdnoGdkAk52I8GL7zW57+raN
CUHrBVkui9kj1My/rCg6vh8aBtf8v3PnQVpwm/15hQAci0RVEFWSEHVc4kTeNcwEusW39ORmNNQR
C7WKe4K4ULRlLy28rKbZLRgUhR3bV9Gy/BHTtCj256dfXx4XUgZwFeD7XjNQnyUPoMJ4L0oSehlq
7cVlAcn85AgNM1/77EIthaCr1OugFUIQMswlsBM7sFpHOXlYbcD6hdBlgRkvWnWXxSjhjsRqDkBE
ZYh0XwJ0EYY0Yg/CZr+9b/OrtvGQqFb65zUvW3fWpVXaeLgeAkgeUO5xm9zTYTTl5XG/n0/5Z/OD
K2AJsCS9IQnTsGLx8qu7ZOOCx7gAlZZ7njyfHG3vPewvJ7+O59tEyb4XtxAGmfN76+Lx0Pgpni8J
6u/RMYG2kPweqRAMFhoxKUE7hJJbirrQXW1PBGuZ768reRwmHlgGYB2hXzZ4ZgTtx797d1s7YrMY
jbTA37rdja368qAqRVaj4Z+blD4I3XLlFTRjZE/gr0aQio/n0bL5Y1OfJ1LsEPnbH8lv6eXx4qRS
nth8NUiVWnX+VDPgVxgCCTcJxztO4Fnl8+30xnF/2CrYcfuJtzLuztqGtne6S3wfXLLOr1nFxwAN
2AUkD7RtHQXbhDKwIBPT1IRYnTyywON0vz4wCSVegmvs8j9QMq1wh2BIQb5v4WXez7f7ws35mi5c
hnMbIKp/h9L7D7gdz8judbb3nfUMUVxCxMUb3qCyyLiDJz3Y99b0g8pgRKz78wM03/16uISKROmr
+Eg0IuwiZh2kKmWMOjtcFIm8jFwCDrKHvgiHhkgDcTQ9UV6FtfFGRW5irsK2EO55hzjwAmUXmhjE
ggcoJyPWMxQza0CcW0lM9x/7Pb7rn/12/nrxI4IhkOxU2ON6c/Zr/o26KAQR2K0NrTjwxDCxg6pD
D6dVwE24zS7qETEqdH/+gFcMI4QBQiDqkvAsNBh6KfeE79LFqxD5//OJpLUh8QtFzbqb8mhK+Fea
cJ9fo9Xk78X5LFBvg5U3fznvt8ffO/PonD9Bz+oBB3wUhVS2J3KmjkfDM0O9OihyAxvzaNYaFPht
r1cYmUHpCXO1mulrjORJ3HZzMhclGf0xlx8qeQpElQZFSVh7bbp1qtRgurJVHlcRt6/bX6YFo2Yo
y4Rn+LWwRCo+GwBCwVDU3XZHgz/vvmDaWLrQiEnayYZlzIKRS09ejo8rHScaGCQOxb+wChXo7qLA
wnG/8u5CYx3enbuA+wMtETDkQWXZWx7YakjmuXtJ4S2Y83RD4U32Q36xltkXiC4oBrSAYG60z6Xl
jzlE5SSr16bbbYslZNd7LITeT1DZ8mn4KT0/ZFlSsa4vX15BrL7wZ0ZgqclND2jxjG8GIloasTov
gqO6+yXl6IxtJ6qytRFEWI1CWE5ROhlwpVexxGrfxcOIuAxmH6hGiB7bSHDS69aJGdLNLQenucVE
IAalFv9wf/iWV1lD3GVSS6JICLQ0wIoyBEQkRREtA7kAU0EPLweE8vN73E8IgAYIxIaOGaWS7wKm
6eRecD95Lv7Gs08QsdkZQW9vWFv+8rnY04gPXbHkhwR1oXjDIWRFBURb07lmmS18gigdL+4uL8aR
R3bNO6Bgab7SiVn9bFCVgBdFlZ5LJm08Jybhu0UviiyMGP+zFF4zRm4RTV5e9gammX7sJupUPRhV
18jErUZK7jEOkNK/HuJcIfvILbOPCEOluxrym2jiJuQgDSd8APhwh1hDyBqpEWsQWs1yX6YApXxz
9tPhZAi3qIMrMJmqZniyLBzZg/A3jAq2ukTln/SYof1+Iica/pIdPYGn6gvFRvGM5yxmsHgxDH2b
DLIvOBgxShMOd4PKBz41pG28F5AZHojQB8Twc6///cHconRWt7HTftHNZxcdpHpXa3fuYaVJv1BI
E0D0jWeIHCOaseneInD+It/5AZioZrrUww+2uOHJ86UX8dK8QPAaO5mi4p37/EW17JVhtqlSSAsN
aUJOA4LnMQ/OkzHKFZDSorISfYJatMUItmhyBbIlm/3L0dYTY+qMBW8ljQiHMrAlf36oyiQyPDwL
4yCFXw4PQ+x2in1A38XaupuPU0Txm79hXk7UBNwOVFWwh6YI0DmGNembRJBVWgTOb0PODOZcoIhb
iOC0da28kftpr5TIfgjYoAthgoH9HwQgK2M546yEF6rroIQrOkTwK0cQ8QAi7S1gIzzTKaQZjGjg
w9N0zBWhUcSYzXhKDLZzU08GdCCs6rSfu5RLtkCX7Ds2Ygscj1D46JO/Rl8ed7ad/Y7ZpkRjuByU
eIvh8PRJPN0j3r9P7oK/xQFlecZjXhG2xcv57XFDkfKH11c4w4T/8x/H/IwXUsKlEtj7ik3phJSx
OvuMnIqLURGnAvN4GBQRYfMPEacZmH7yXce2k95WXRKdrZNoDhIPDsfbf+b3wKFGiI8HjH3vAzrP
ybmBqPoMDo63AH0YjeZSHq2Qoy+lmWkm9CR8/ZYM0h+WchNMfVCSXypGYKa1mazAIYnqzW4UQx04
+AgYHUIexsXGtwHRGNJKcBJIWO6n7X45gN6L8DtEY6XEBwFmXCrHcbFpf5xzYXQbMYtoeI0j76EC
26XyxgsRKHYNbD8+cArQQp6sZvcTLMCyLHIWw+v2JubpYdExx0gWvICejWZKG3eeBJxUBSW7PSJ6
KnCGeey6lAEhBqcLxgeWLSEQi6UrOra/hYOIF+Uu/n8gWU37P5pU0FWcUWgiFSQc5hgVE95W/JXN
NQ+mnribPjcEJiBlT42sTq1aZun9xlgcWybGXTdKViwTS6DdmpEETsiCRvSVeZbvCxnrNW5vm9gq
jRI7cH8yaIHtkx6753zVGcas4++DjxIDxjTSzLbsm3hc8MvHLm9d7h6GVcOBdYmMsyq32vbC0ga5
WcW7QaTCENKwyZzNl64VZL4/bGNulFS2pZQ7tkmrFtGLy4x5tjHSnhzg8CbQ+OQF7h+QadmwzWY4
f/zu1IxdKdLYvpyRZYAvCG6FFPZGI8b1SVmasbtOGN1y3kN4LoCYpgJB908Mgc7xRCwqqPOE93Ci
wHAkIwGLWkxxO7HBESDoMQ1GZjuFiIw7qxMfbpTyjvoNQ0DViKNpPqQz7X7vGONPGOqAFH3IyMV5
OHZwbqiVEgew8//muGwb4n2Pl4+DEVIY2e4a4+kUXwetL83R0Wctk4dTJ65hqSc3Y+3t8qwjnkX4
JP58NcGSW8HxuQoSBlUXEPGuoAMv6Kku5GI6Lhfo6C+d5tZToVdjuPOsByAuVzfrsmOGy8TxAWxj
exI2gY/WZBG5JELA0GKCCOvisNb3OG0Nn3zQAqkf59tjwnVAJVG1YuKlwj6j0jLMkD6JYflI2HR6
bIL4cet7sI6lrJ1vk5hFAmmTjzt25y3kXFrObMv5bCx7UJzinzfo/m7t441cTVaCtVwG7F6Z7ru8
b29Wkm9QtqTor8a4l3aW6al0CjVIslaCe7vrBFzGxWyhiY+6Dhezt1rAaX4wlluH6+5x3F43jiYc
P74fjPI2URQAJlCrGOsh4ohDCHKzqkqePEB+So/OilLCM6vqsCPWTc/lMHKQLpEDijCj3QRjdQM7
YWyc+foPqk9a8Is4oCmKSjV/hgomjevhwCysWXnjwcct4r3IsWcLFmwrXEzOSj97FAhTvcqfqLRE
6hdU44oYYKXEfnxDvz12m3JVooQyQvOArsDp6jGRf9tkwSoo4sdFtKBc2y/o6djwYeilTuSwxAhG
lIkUjvFuI3gIwX8xE+WlluSlM0sRaVg9WlogIBk+LOkjiAL837oItRPny69QalkUtcF/lZJGA6BD
PyCJUld4GYCBspsgoYON3Kbj1LOhJTzf/AMer2ttrXIWYe7mh62Mw5aKig4FbZTewx061vmx+TRK
5HrFdtYqIe0YZcMmTaJTk9KohVR7y6afhCjyaSBAIkmKAQ3GLRRBDOjDq9IdHqxyXjVx3N4xi/db
4nMDL1mBEKj6kIRxNh6lde0sTssmi4Aau+3Ol4mGUYHmxHTX+ePDMXqm172KHVQUOQVybnxTBSZH
/V5iWAMmcUOwz8fbfSn7yWYYj4A1S6T+U0B4+UgHWCqWoeZbu2eFrjEtbw/doahcpeSJfXUATBin
bIvVmFHpafCYP8ByXXROjBxCq9SzqA5NZzg0zGBFi1WVXZnrx7genKEHTRnUxmbwSieq1ajjvPzN
itgo723YXpNjYtwON2GLKIlvAsvHmb6ne25sH9mqo1Lei4oPfRSP/QEk6z0fMUZhi+kKk3r6qlDK
3yJzeBJYyitzGasoNUdzMvE3Ft0oritIHioVR2JuMK3+ssX65uvdqM9jV7mCMGXlG/NzxdeOxBaq
rmuF/SlSAhA10z2gWS3VBrDLLRZ6gwnC0/Sr72Zdi/1EMTU+KbWqVTzZBCrdT2cP8rkgVrhwq4SY
X8AYp2pkiMct5vQaJgth6kdjfKn+hcOwomljVv/CuzECEaWUTKGBeUU7iiFytUxh5BaCyIcfQJx8
Q2aKSDfkdpoxNnx4jlnd6xHPCCn9UWZUEvreqNQOoxweV6t/plWIlIIRPjJKRbq3hYb3IQKzz/Rd
kkSiKs19dO+NGM68AazTC17XWHcDu0KYKO2UjG1nJGwbJdwVkZpWafKh00JmFAAXpSzGM41KZ0OW
Y7hvjbxFg4OKpIazWWwrDM21KxoLO6UiKb300bj0XtlYjHrahd8951bQ+Wm0DH1rFIvWSblBJS/F
l+URiDJNdTNcL+77FIgb010R+5tZbetSeL9Q2FZYvzcLhgaDkpWSH6AzYqr4d7ZtwbGJdohzVtLS
uSXR47Fq52U4UI/vEyh+FONC1InNHBEmAXcp6EVDQ/fJQ9datZvhw7ZaMzYjQt7CFFGakRn6oG3E
SCwnYjBMcTNz92PNQjxQEEtVKlET+pXtRFxMVEGjuCZ5XGMbEaJT1Gs9Dl/aQ0SVFV2i4OjH2ee+
Jnz9kjNgcS8lppc3AdW/fjUeCSKsealI160SgW+xViqiecSO1XWXxZDyFF4eNApyltFfYLbmYbr+
I+u+0/sNCqo0Fk+g+0N4L1/ZX62s9xuXGhJWCYgq569ROEN3C8T6BFdh3TKVMm3SUdQvh/tvvCke
bSTCzH7F7enwsf3ygmVCpo2ISXzloK0y9VVa2V9hw1GZ1hKsxq/siUd/cTVc6pKsJCltjqqonvnS
pvi6hxg7cWR1/eLhePIcWILeeYbD0dcYZP+6BORBAmJV6pYmq/YrJ+2USW6X82Uj0uYrd6VNJv3y
2XgeL1rMo8BewXRYsG+tsYGk5kelUMFEGFjTJTZwQKQusB10XEjJ+4CmcBoMs35QSlSV/G5l5Ds5
Qw9XWfXNk0YLCXDT+RrZPhNGFlWpfkOUGapXNeJYo5J5PZwoK1IUpRGAjX6AmAZ4OlPT5/lERbYI
fJH/dfb+xFVCz95+i/M0KVsR2mMXm04G0djGjs0MtsDHrY24bq8EBfhKjLIz4ZUhLo6Q3NSg49HC
bJubS3+loksdLAOipC2Uqqn0c8M94+JQAULi/fGlOOQg0AmkaRTwfAJJLwcoONcnRpZx1snXlSOF
oc+8GqOBcS1EqZpf2FcEYoPRQsZ74LC9ILTZG9XGG2nFycE7dTy0JIQpBtAohfsQBPsi3kmrBKHn
9f83q/6fiyOAAAI6rjfzsTQo5hv5yezQeNtUSqLtcdk7dfdnxAz74/n63w/3n6xC4pF7nMUrcbLP
d7f5aijDk9VqCJM6STlgNsRFEVXDar8rlbRdSkK9waetQsgzSYejek7nU5yQ9vowYTU6LhoSIh3e
8XB6OB7e/FuJzlbUnYO9VgX0JN/cdFpuWu84qgFu8yDGPfiH8O2Jf1jSFB3fvogexUYR/wx+lrrV
fpMUcbaFJgeM6GfbKNUQEa3H91tNdLMBK8bIbTdKblvNJZZGLrHSwFDmkeGFkHChN+lj6u30+Lhs
90ulybWGEpNebGNwR6WV4EHYK1T4ogwiewuOdT8/4oUvJ4t6LsBuh9idk6lXez1OP+x6tWIpsn84
QdnitzWak1nYj0EYecw7lZ2E8nJDNHFZUtXF2YTesQrcdrj/g/4BaZvTgxAsDClaqJH+EAcClIFV
8HUDw9eJgFdalgJyeHudtkbllVZOl2lZuYiq7oXOlTKpKRDdeDg3CzTCPtgZdkeGwH/g0Is45OPy
fXvd3+TejMNyOSlYyOWY+u9hYz4pLjpXAJbkspwMHzpFb2CU+EaqFhmBRnAbBDIoRpGvuCVBfJhu
Zl8uo8mUA8G0qml5RFOLAECGOTsqNbRwLCACLBVAWjlOa6Lho5oLSmqgQo/9Uo9kk67VMnrj4QP7
be7TKroYREOU6GN43C7Qw0SawjgRl9Th4Jgx262NicllAJCmT71BEVCfsHMZ/9ZDKS7kP/pKgyda
k702vPZKI/MUgsH9/QsVFK8AHmuLFFVilLkwH4f0y7s/7c7WeTlbLzzpdG8hu7iEC8GwJYLsffng
9HFxctHOpzbCDeTZkwiT4Yib7t1o2NESwhLA8PVxIumE51kJZ5hWVFTK7fxz63yA3fVwua97ul7x
suM2g/Z2ThyKegsDt+Uyq2aAkhH319aEfkP55YHMjBhYNUP38vz08Gg8Xg0F1yU/1ZFkTqEo3Zgy
/vF+xfmMhmYU+GxgnAaQfdJm5KtSsh6ULKgOwNkxTMxGscD25LkjNAThF0OZLSRh9tEkWKyz1+gv
YDdsZIGhYb0mwAAeJzwlN5+FBduThggutJK3rB2xVaZQ13QUcfqfJmhByzpSpD9ZyJJ4pfa1peb2
RqkFp/kq/9vPWfm/DYIaFD8DI31Ydr3UJa6VSCn8EjwGizaHclTaDYgYV0FjtqJ2jKckprsB1AHA
+Hw5bo3Y41Bpr5N22CeW7mnRXG65mqxpcYBkFXgFnQowFmACFvR4uuf/ZGAcn6u/eRlrOJ6dSNbj
jD3dnAYfwf15+m6IiUrRPVwHhPuCvzeKw1LHvop18z7sBMTlhPS75f6MWif14dsSnAejCAoySGHW
LzBXAwFMgl5YUYabckqphXpwZE4Q7UbUo0k66xUkAkRtMNxL5vlC4EnrEAQek85sgRm4BE8Esggv
ZnZGH4JfUMxs+In5jEmwzqMZkimDF7cuYteI2nVOzFKdPnj764r1S4W2voh9trHQ8FOsiTZVXwGI
6WQODOBzCib0cNzeH3MMZCE2SyQjaDwq6ueOj7WIwW2pGW9pBPIe0LKNTNmggT5J5LvTeQVuZi9A
/WrsrlUB5hSQb6vUtlJsjpWNEO2YNuQyouxbQBTdULGFbYVyjABjPsMs69UaWa9BgUHykIsIQjYd
X6nS9WHgEDWivRwKV8JATK5V93e6kJ1lXVQWOEKmaJTZFB4tE+EXrbkLbGZKbKNnO+MQgRwORhfT
UGq12es6oMZSs3hDzujw8eaNaCM+0nP1PZ6mkj+/lh1HRqlGE6VMEKd8FB8DvUvdxFqV5XPT6NqY
7Mgx2bnplExkWESS7nul5NFD96N5GptcDCHRaomU0G2NenpaFwcUeZ55SZEsjraiFqLYe8ABiyun
fcTiZGhZtJLunXLxztLZOULafBlxaRjrNdrH0D2tUhKRMP/987LolXecKUaC6BV/y23pco+OEpj4
PsNteHGVwsTmcJQwY5yUnN0Z0UjwnBi4n5vholhuIZpdK/B0vj8nAC+h5YdzKhZixGzn4RijSnTF
rIi3NByLFSfTLo6H9JEyRrPJnMqFF1ckDFtm+zppEOB0vG83v07X81IpOYN2Jd6IEyMBMsjwJzi5
KIztXFCI2v4XC6PU0vY04QiogUt5ppYLIGjaapY94MIOp1V4tLUyq8bQtdedcc5WSdkDQjHY0XcL
Zo1xFhDFqlfQ/kluf4CydORmasuBe5VEKCgDjmgkWDTUcyL7LzR0d9xVTrPnn9w/w/HjGggI09d9
O++5WvbuO07LiipS5AbfjWCa8O1QJvntJiXe2+fp/j4BjiFFsxYiwr2y1m4bZsOHNHGoY6N+QkrC
Xpxvu3ecf9zebpQTdx7g7n2ha62ttMCiGhQ83MFkNhhlTBpmu5iXIgsD90pkYaekUhSrbmbxG/A0
3HAlIn9pct4ofmq04idUIT7iRKkGYHlDnfRKzC7Go6HW5XD9MFSb8BKwkp+kTVu0jklGQw0VCiw/
MMFffOzli7VXXdJL1Wp4gkGxmcWYDOJaFogc3KrBfoCYdAS7EOsXvUNc1OJJdOlmR65efCrBvFED
LZcgGCDGpQDxafhANM71f//fGz/6XdSkGDGXLhfyFkWJC7A5PQduRJNgqGmJOSm7qkUodEZI9LNN
fAhve/3FHMLEqd8OdiIBZQm9xLjSSil5UuH+ECnAMJYGVblSAvRwhYnm3w9m92KfexAiiwRwcsmw
LHulfOYcBKqz/+5Xo4CrGxVvYW58+z/fJISYT6eG6IQR3alGFS3cn3HlPIqh7pX4jCi3phT5EhU3
2jiJXN/v4rybSrFKMHDJQYDv7xhwh+gjlx8tQVRx3aYoSs+BkPi5yV9DIemVYCDXIsEopocF0jdU
SoGUDCYa5FppIfiZnA7hKWROQyZpEy0BS5hUsT0TjnXPk00ZqB2h+9dA63bc1asEfE3P1hAzlQrd
+a8HYH8403thwo4Rbh0VM1Sk1ebYcMfz6e09i5xDqQE+P2y2rJPpNaQ5F1t2B2U2y/nk0TGWh1gx
TK3QDQnANyHnQ3256EAyRE6pPIBv8gkK737+x90cWdgVhRK+XzWZDX3vJRhVNoaBKYcmzRgCIMn3
83W/hChR6VkTFGFfTf4XySwxLsufzWxeGAbba8Nqk6RHRBX7ApyLiKJA8qKtZ0a/EUcUSV62VQXa
EfhAS9eshbBjziVYzQj/Cd1L8VxGDUKr4CCcT6LR3dhNoZi5aZmSL8lbYBNt7Jvo+qG6RzOHw0rh
qZwBZ1r4BpylrhTOcQlTKPXLjMYhNSBPSo0of7HKsS+1BigYlu0Fq4wArwGbbQQOaoclzZzOD8Hq
+aiVFUMUB6XpcFa0bxSXt6ny7+wcuG0KD40GFaHW7LfGu4u+qwHd2aHW1fk6ZS7mDBaMPqvmQDDq
vWboOKevhjbOyuNpReQDOY8ZkpZGTS4HanHMW6lCb6Oes2ruh3FQ9XUeAtrpuyUQ6EoNKSQpZqyu
wIty/8C4q0Kp+FAioe8HKMr/3JCgMaKhtQIoIrAkSyO7zNobozXV+O/MZDJh4NKOpnq5WtGsgxgV
R0fYeOi9QW+UGL5JQUjDyOvUsd7IZD9hBcL0DcHqoAGaggFoQOy2p910NDQrZ7zG2NVErOtt3LM7
/8VxSGz2Ntx8EcDmfr5o0kKAFgt9CM0sVGdbY2IHLZk5E5dGp1qrdar5LJIEtTG0gOYIhCrul8Wx
NQJfE501TS1i9Hj7w3f5L0+87JW0jmx4jIRlhgZaDoWKsbWvx+0blOOBP4oaM4TYjRwvT0ypoxGc
qiQ/5RDTqDDywJw62aSjPAa/HqblsWsSrRLfr2AsoyGhx3mJVCLq/mczUwOGqdUqcLt8QQYVcOCj
BE1Ulp0y0MlMP/RiWlcR+WCuwXZn520YwSBRWwh3EsqH1C4HYyu1gl3qhNh0XOIGMaVXjByjQa/W
XJaeQx6iAPzJRfLO/e8XfPuOUzmi+le4N2saoEcu9ZPAobLY43wKTttC0XepuN4zEVcalvOo0Hk0
IcB8MzEY2BhpwJttyuIJOICs5sMK8ABRRQW2W1UqJcSxZAFKIH5aKkBte63ZPT65j1WZQ3043iYC
31mTeT9N1viqYhGVekWlxCCqYhpU6H5PO0Dy30fdveT7VUnMZdQue/JRS+xHcId92LUIbd8oBUg+
FL4CzrBjPGjsLC2zFbBf6FZvWG5gtFD1mYzQlga7EIPEPx9OP6/x9UsFmsIdZfvp3ut2/3QWXDQX
18RYWuHnSHh8Of7UD6I3ckuNwvqJ2wX3vjsfz9elgqNScd7pHGC0rYi0CRerjnPTfB8ZzeES1Vir
JCznVoSE/XE7hhmkP/IWUvriZd6vrQ2/ljkBRGwVDC2KpFKnkNlN1gr8Yh5ZkkMvPp92FnRxpVQg
BTFhpGZFq8qA/DxkxiYaEqFWm0d93cFCQYsYXc1v6MX/dEenNgpfOIshWEqlGDaNSUK1sl9zaSAa
O1Mj2r7KUIClZHNbahNpngC0DY7h1BwIg7JVsZbXzWzoOQcg0gpec0fMka+5cpUyVyoNI3OmbSGg
zGWtIjQXAS+wiwE4QN6/QVNadDqlaGlaQMUlTv9cMsO0xpuvjkOx+hI60RwCWr/vlGp55wXYlfKd
IvJFNKUxoilaqNhPE7VMxK4S9SpY1C7nHYRsufvDdFvs7mDfQfQLMIEuICiNRauIE+7SDyE4cDGD
dLlfJwuJZVSSAtATyQWX6KAtlSQ2ovK/i50/qSrGyAxNicYaYEMbFwoImJNt0DUUwvHbEEf6fj0T
GSLepxHiYnyCMQaeE/zzpQTKoJRw7M9QQHAGVM4jDN5dqHzrerUDaQ4ZZ8TWKgFxD5MvfP48JnY9
XNtiIH6oNZwYFdN8IbgsYq9gKIQBCNiW7MtrbNEztoPWghPGQeIKiMtlevft2ChVhSrg+4J2LDWM
QbUCAhTKqpKHLouuEUO4t/ftQi530PMxs/mZf7yeP/5m5uBbEfNk1ZZWQx5Oa9qiu6Sjxhieu8Dx
zTgq8Wf38pevAEOTT9ArUSpsPKUd+bICmEJ3stuPRB9JS7IaN3Uj9GvqYJTlqPpKOCIWTweyVmBD
YShve3Tm4wnbgMGHujlqvW/a7Eot9fbhSqI7dnLXvKOs/XH6sXk5/6D6+O+HPVSjnsB1uUFt7vYH
/bP8VinIhz/AxTW+zHmC4rTrjWpkMGmd32jBR+bCg4/Dye+JAqIXgOt09g/05b4efkz59fz0Chx9
ztL7FYTvK6QkwAgjeF5whrPLNCT0YBlBHZAjdbbNHZKavoD3FMG3F+pPYG9N3JsY+XmCUaGYKMFu
nNfDDto/6vwq5GfgCSWSHwUuYsaHXG0vK4zlanFhLZrYCcLyx/bmpfLm8AEWca7Ko0DwinhrGL5t
Z6jWP8fb+9nTR36touV9Ye6PeSHkH43wfxEtQHxCxm15wRGQm+t2f3hQVOyObOBj7iHxcpxObwb1
lyOvjbvzBhqez62KsxHwBbJL+JkaeD68uzic8O16fohJf2659+lqXTtFyXAlUBrFfKXrdHEOH5X+
f1oqFherkyf0ZevYNRj8LZn0+pbHscBXbOLeEM3d44kgbQa97QxS7EK1NzZ2jUJbHqAc+fvH+wTA
wAalx6MJo3i3vU1IB0ijUN/CLITqG9JObr/ARYjQmGelqmahC7ZO5evriOScL7TzSQj70vyc1ZkI
Y9Hq/v9usY6HBsJtsBERSmWcFYK3/pGveceHK5mVeXYmKGmAGoVAWf6lqngNSTcNKYTdTY4Ie7p9
vJqcc1jEpAqRwYCjtHzhu/v6enP+5jsayP96HK6/GMfr+XhtJPOY9Aq8ByOuIA4WhD3yte+C2X+e
th9OV/pu/fx1FE0i9ekmfyXonPVUUZasccWWCb3w+kgnrzF2a5nf1zgqAjbldKdvD5fb4YYQSTtD
BBVM+gJNyhs9C2VrRZzGHJm7yQrDmxOFbrlfjYuiHFggf+/24MuRgFgY41TEXMpsCTQ8nkwl+vP0
Y3d8OLdhMZ+M5TBNwt8Fjzk9v2IQZp212I1MWDxt8/r24oy78/Zu8GenaB4KPf/rMV0h+OxIcXu3
Z/CgsaVZmZLTbw9nZr0h1N32YNyJb5nAxBpXDHllTaLvFZrOF5TXWCuslqxCqmdRvbdSo/qM//l6
cabLtP/ZyZr77eeFqxHcxY/Mth4Uwh08lP3H+ZZ/LV/RSWxfo5HG9EJrraSWOvEtmjjT4QHCh25H
2NyX6boDMed5BuXpLR9aLfygavGGHgLE3T4Y8DskiQD7dduQ3fzDaDMni5J1Ic7MDM3YLBrYIg8F
so/r0ZAODVtu0YE8Qc8rzEcml43/uJluu+1luv1fP/RhrB6QA4sEuEqxKLr8B2X4QOhVwKvPfeAn
z9Sp08A79CO4jC3W6har/C/GAbNC0UD9WfaDTv2FNr+lIv4C23Ly1sFnzn/dqPvr8x9UcX+cFBI/
FwjHCc3sEnxEdnchipy9kzFu0ivERSetNbxtNld6lEo8ksVZIwFQe8HlqFjLCjBzKa7RKHQXMuQF
dR3XaAgdxVdzP+6oYn250JJ717PbL94Qm+v8SnnlPJaJqTE86XeUC6aF3LMG5IquLHwOuaOKRbDD
doPTHSMLYIMt6KdqHBTh87t//OMf8G6/n5wEv1Jg3t2fI8/7ZKjMsqyU11wr0A0pLrzJCgWmrz7a
YmDCti06oTkZ2EsjMcPEr+PBOthB58GKfDUiVBI4/UG4omDKGfEW9hUoBF76MA52IZ32EDEMVcib
m2VU+rz/zPvEINrt/QpBidWGfFN2invnxIg7GQTM3mCGLcZVYQXr+UfF+NKIyTHk3zxGvi9YPHxA
kGN7sjRvo8SqXp0NB4O371ACBwuZ2rthz0eYUXBR9Hr37+AbOHv+BbyXBdZhv08IYMRYpcD6+WSF
IQTDy0py1XsylikiFYA+8OXxwhYJTOcO9+I8W9MQ6XsOFkQyOIKXDuD7Lxbrt2xpYZHjsyA/bi3h
y9oEUcEK6axBFs+5Idd8Dwv4a02n0F62RL3w1fZPggEC91TgxPNistMpcLJ1r/wuHJgo2hIr1ahF
mue6WMIXbqDi8uPwK/3B5kaO3Mt4saMDTPZ9Kb47CL9cQKxlPPOto/xPSAdSpMLQFwULDIzF0eW9
347bhYBOM34xRm84jJpXBHi47hwwVJbQ4yw1rAUtZKDAMcF0XQxyFooJkYaGYwn+N3fQPFEVUVch
+FHlo4pKSHlhIdbmNRa59M+qE3zGMc/VzTDTdr4OC6p9pp99tPVnR91vp0xJWIGFT8pbe9VL4hKf
Owwd2G/o2qysR686sAgMcQZUs1CMZCkj1katAG29Xx9g6JFRsqRC2pp5lGtSIdXl7UbwIZczXx0n
OZSgB7UmQC2h49TP/GOxlYVhmFl0wN3J9RNyoq+HH0YiSLMmE4IJCxpxl1rhp+fcD1Y8gMI/TgBx
arxUOSSGfSsC/jAw+/gNQ+HuuZ2gv/rseF4Yjj3HktvYiL+jGnwk5c32xa0KAlwkTNAbeMlj06Aq
ES4V6uMkVfhxOCIG2wED/y8wftad/u1xyq/YtIMi3K7QRHbDsTBQBLuh6VgmGkoR8fVS+uAsJnao
AWYp/MmINNacpuJKJukqnaY3jHgbrlJ8gKQofAu9U0doaoOZBQA9CFUT7j2wzMsZP4ddfl8DpzBF
VmjnBDh4PPiF/4OzzV4+yULA4reMkAAXGR1u7NwQIiIs414S0gOTF2FZJQULYbwEFxJiIi6E1dhY
MXfO1DziGmXcDBt3UDFvoUXgh238cZGjmp/i/PJP7DTOyjtcqgpLiZA8SPKcawwfYSchbZzN7PgY
E4iAnJmHj9Aq5w6fH05OF2HyCRANkTzUNeLdjTgEWtnC7fEC5Wqhq8G+h36IV8pjqd+m++9oyTwS
P14if8zt1tFInEiUQQ0sbS9b1IdrMYUynsnz5Vj3i2VhOSIPz1Plr6KLn3N9yfzzIv95Ez/nxGLC
GTeQdofMLDa8A6YvNi/CEhGvgjLM+XN0cSMiehTyyX6craeKH9md9MZrpDvJ7yOSu3DlqWcT6ynd
Xs7XtwX6HMs8zyBx/vF8/QOd7T8//5QXgANfCvBu6Zm38r1Wt+yHbWMQFdOlmTZD8iiUV3leR9Qz
qHcauSSZPU2rEPgEmRP2rXZxM6K1OCzjS89ign9hqSp5oACn7/PAXqOAmeX+HKxjUmVLL18pzLDd
o0kLksR4MlYTDEigiRKDh6JkEwEegBS7HsDs82t5c4Xu/YgzPRcO1Ua+SqsPqaYyLrygu7qVojIv
rLpOOV/89dvtp1zoCj+uDTVI4ZkF0dBXhiYkUesZYfPyeNuMTdcYcpvvFLNgYugnXkOV1xjtqGg/
3odOxAsKNV6OiJ6HfN6CfdNGqhM5whlbhmNRjtS/tWH5dVGACrx2P6yIxqLmYYtxTymlNJSqie5E
sJE3gFvysb2+GW58z+4z2+0+sgbpXiwhlyE28IBjPZtvQ7kevh22hm8gcqJo2YVqCyXK3hpBwBip
F3Mykr7cUDD8BwuMHb4VHj7Y86FFL+SEnEkARGYHmfxMzFnBEVHEP7yc/uvpd04qLm2nHNLgZJc+
AqX6okObpODyd863JTyW2ONCniiEfPHA1/N3CIdtIA+saDmKZHEiugSLt+yr31aPZkQ8a1EOgQqm
TsQGBIkfW6RB58l9f3dOHCZE8wv2Wl0EhV43lIFHexxTYaezVx5GoRoXfTDjLl/qYFwqPz1o7apr
2HO+fTrl9vFH97d/+v1igrLptDiYJ6LrBOUQ0M/6nnVJqayJoxc9VMNpUWFAVkAa9KpWBp2NIHGj
VHNQJ/NT2HGbjyHVnNfCtqfKN/gx0b2er1Egh0nL6YbtwHgrSKbE+tJEWHlP9tWob+35KUR96+0O
cJieexM7bmPUvLW9JmQo8BuR6I1obyQv0VtJBf7WUJFoHM+DQ3HYhKgj98G37SkfPayGXgujq6WA
EBe/3BanuWNBYKvUheVrIiM6TK400ohu9XnmorpiD0gfht0STe/PH4ZWjBcMZvUoE5bEaEG3+UYu
pwkglpJ/MVEJzRkremx/XBlJ86lRX7mgd3cMWsYPmtIiAWMFxEIYW6bYUXGEQDZYJpuX850qoq8f
scLaLoZtRy2RHMoFfL3jxxtA+ZvYdkXEH5lljSEn/bhgfu7vD0JwWi5u6BT5htopWonvkOoxyhxb
jZy1JQAUC5prjsZarKzhyqsng8tXYRl1y71S8BIspBOO2PizVfbSs+wRW/A8eH1EYKwNtgYZ2Rjt
YuVJnKPmHn6/xT6qj5fDCQtBKTG3D5lMxGEyDhspnRLvIglwn436MUL/o3LguXWAksieHIKGwSjq
vUtsJM/KnKXgdSn2BYIh5LJ92p2ZmfKiNFw2IorYJRN1odI93hzL9CRJHfp5AdD77JMqGxh47X72
ZrRTFEriJ9sWXXiE9yc1PM9PGmU93ArSgFPdBOxKbEL+dtjB7PELbB7LVoz8G3MSYI6VTZ0GZRFZ
BNJwVjVA25ZKwbpIJEMVDrbNLKSS+1Gp5okJgs35egCpvKLdqVYKjN64cgcjgZuYmbv+6zEZNUbC
POTaMM4vnvf7p9YLowK500yXL/gpP7yjks86c6Kq7LDtqEuUEI8L3i61HPWiroZVEAxUgJ2I5kmI
fRwsid3r5hBCG8ZpRbErzq4fG0XRF7ObktAjhB+0uh+nww6SaXYpTsNZbYTpr1c6UaPhRAnrjHzH
mPRDTzFXv2r0d3CqWhjOsCClDkkM06yWfFiNTEetEM9Jnxqz3ffzL44gl4zxik0oCd6E/R1kRYdI
JzScXigim7uvphSF9QMmlrPhmMYIx0SObWCVxuPH/IU4/c+4n5+mm1WxNyY1Er3wfGOJPIJ+Lneq
NqwdMHHcP1f/sb27UIVZ84uJpoxkrVkN04LIrYWTL0oTIy/BGGnoosmfTmginhKC+StiF6+zFyR/
UdZqi9yaHjLAGr3drSY6EQ5j68fRkns/jyTCrxr88vyVla3yngAnYkstfjoRv3gKH33AwBocnu3V
kzvu1qpD7yvFEZpbEqVhSRRa5fNXA2elETgTG8SuhhS1UBaYLOGfY3y0Vdxd4kx3/c76P/1ft29v
OiO2xlUhyVK60Sy270ulJgcr5TZJc5RsFLaJ389zmddDs0zAre0Bp88OZDWiWZVB1WOZ4yJl9+J7
Tl5im/iCHe9bd8iPRhOwDzbXX1Bc753f6q2vg5Pd6GPZw7vhPH2nQDgsq+Myr46FhVkQtNATv9il
Tn2VtjskzZkR2DH1HDZWMe8gXOtmFqv3qcJVPWmleAIor4hTT8Goikp4sV1zbAvFUlML4SDaaijh
ljsP+jgyTdiM0wmtg5ujayd2GZPjfKLpIXmAONjmoNmAPmwT6ilFkokqnkBTeE/yYIwWQaxbVhkj
ohd1M81IdXcvDyPsXfGLUBHBsI6AS6v0exDdvT02bnuPDfOfU1RgwGbTjwWUiZar14X65+kaCzAC
nBORXdR6bbUwCa5m00xZcFuUcCcBeuqX6RNbILHxIr+AcIAohdbOHVLf90KDV4624i7Z3hYpMB+7
oeIJ92hw4CuEV2Hs7D3AcxoVk1oAIOnvBJp4cWb9L1bbCt+UrxidF+LHaP5aD7XkykuBexp8PtRt
S8XBfd+o3h4q6MVyO2qrLp5TvyG1IHpU8flg1WUzvGKOFhAmy7xYWbzI2kRC6mIb1BR7icMbGMQQ
ReWIxy1yr7jCmihFhKEh2KqZ5AL4RK9ZrtP9YCXdGhHZqdB0rry08Rpuu//ndhe7JdNgmhEwYsko
W0/mtjAhza1JpXZKP9NcZ6VpwtpQXKKlv+CxFs9r3LdvJysJ1AmVLEHaNG+2N7zZaB42LZZf9dzv
A4X/lh6rmjRP4p9vDwPFgOyP5zf8X594cUbm0YCXalTVwwG6OD0wJCWsAKjWfGL4HaS2vxlHrcVR
IRJRDKtQPSwGLwrFcfSVCJlPOiXR9Wz1kHXPRs+CsVMl2yhjjFzo+tUCvi56xUuYCUICdXCW1OXT
tHHKQkQkBO9JsJJYHpLtB8sbx12lXGdMxwcMkoUuZ7fJYSFRkxi1lmwoU0ktOw2p4/rVk9pC4pG1
bANtT42HN5JWjldvhp3TqHbO3Pk3RAsnsBoI3jUe2tVn4Z0CNHLw/DJyZNJTlJ20tuHjaThu2M8U
QEJpziWaROjEWLA+Y2K7FHPuc5banmrNsSTUKmsmxtOQjZ701NEqzKn6Ujng1hHvGXQJBqEWNHoz
KB12mo1HgMARTel0jtk80xgt21Er8uKYW7TmFzpt+rHQGpaiOxE25s1mO/891lrBD0nztL2QeoRj
l6ARgquUluMYipeBc6Dgre23D1pKg1rCPQdbPdTMPTQ9tMl3JX0cjgezMalXABiSmDDhEhtR5UIB
OQuWycpO21J4kj2PzUrj3NBa6E1PG/ug5qciAFcvZ6P5tSom0nLETw5UXZ8BnkdyrBxwmgNNCiVh
fvI3b3Mk40mNuRZAYtznLczkWEK73JHY1b0CQMhEBsHvuxXbr5QSRfj8LxNgmIUQtefG6RQQvVa4
Kc0sjtplW32XMDaY8JoSYfFFizfgwp1kPdHGzspXWodkQsI+XE3S8HI8xHJvO83CBoiY5JFSR5r/
6wyqKFbCghhR/7pMCpbL54Mi0PKJ1jqISgxDEImNMbkkpuDjtL24S7PKPDsNzCZTcGyUGHezvv8h
rRF8A9URwNY3EPP/hp1nVlV1NbSKL/WVcotaRLZkRJDxKB8nalQ2bqgtK2UbMCGEZrQDAz4lznIR
8UoEAIt59aC/bPDsMN8Z7Piloh6WuqJ6cNkHCoFfu+hqFLXe7DiiwfgM0/rDshU7ZZdRuB6dVWAG
iPnzeR6KsJEBnOpxPSyCNjdVl3Sex8r13XY/4QdCKCJWchC68Z/6/3iTt7QJRYuhvgDtUAmLYkhB
/sbsX639oQjLhiiuEcdB4MxBzE7/IfxXa3+o5hPpgV5fMqT/lP+Xa38sAp8h3EwJlXgLwCSVERoa
1ChdiHGegfNAoAO27/4NLgtDnVsrwKmh8SUy3cOrbrb7vRX040gpVsFUMgL8j8jGUPz/Dytw3gug
IJHXpAEeOMUEbFxUp36uCfa7h0iEkeYclYoTnIYs7r4x8KfYKhpQg3ocxMf9Dtg0S/ZGr8THEZ8z
+GHQm+78CaonNeIwAv0N7rmpc45dqAH/kQv5aorXRyeR9iM+H4WJQpAI7gnAshwToA+c94TLohDu
ToPpUx2l3tBbGqRlvsTDtqgGUbktY++UiYfQEkCZhM7jhXxFVar5CgWXgbrKFiEZGhUOYwbha+WE
e8Xjp5Fqdv15xVlXYT4ZIqo0RFSv2lAikXCafoDVAxV8RqdHI1rapNUjwPoT0/e8NzyaXji7KIpb
meXmUMj7dkWl6Chui6uO8Ka+hB7sJ8zMysXmjgxC3RoY9mVi11S/GUXbqINqjTBoMK5p+RWoO71i
hy0XZzRGraSaBltA4TMsvFZRYxGTyC6Y76pKyUGrIgEcTXf/22WpwGYxDLzxY58C4g5xggYX7Pt2
mBSMod04ALVRgGpSFpNTFRbM7b5X4hqJurOL8AX2PWE7VApAWIp4amBJD0qfbWwujndpx5b6oc+7
mKozbhTij51CJ+nXztckMDUCbAhwJ8aVp7UtAdEngIRxRjQOH0TIP48LBZiQhn7QALek8xo66bcn
I+NachWeKGOXgIsEHAvB+4uRBFHr/SlwA3qWEsBJkIkIxgrhaGLJ0Wvle1YRZNawojkWKkKGv6Fx
z7BctF4cgozHurjb7jpNp99Pl/v736br784fF/d7xoJdpfUUUMKN2XyJMka16iZp0SuKeoZdrrfm
aSXF0vxY1SXedl0eVxDGZB4Puzh+K4Bz6EKjULPwiWe0214cyUMpibNl9oc48G6penrQgFR9rwHB
nQNrDi+w4v1qd62IyJfMCcTY1x4y6h8HjJUAG5w35LHcFjWPQLymUfDtc3Xm31dkLZte6zX1hT27
8/VEuFp+1m0oCwAwhoVuWbUCVmlCMkSJ1mCqpnaguxAWXEA+GGbg9tU8QB1DRSvnHFWFSE5WPP+V
UA4dlSCLmBUYdZ8CAvbzVqQVNSmid1p2vM7d585wn4XUbrg0ch6jhbDhb8j4N8Wa0iBv6m6P0EJj
RjMqtlPFO+bnwNVGkXOlzDxatnh7w+IVahRFVak1mnz3ZQ6Oko0uE60WE8Oih1jOsUInOwHBDR08
ejkEE3LhAxu3oOBQB3DV0D5hJ+J72FnqloEOhZOFRRcH0Oue/syRu/iK4wzIw0dcCVjld+hk0+Qk
icxgGLhsk3YR1S61JiGyvX2ZsOeXxqvHIa/UcWAUSPSMXingqRKeR7lmc71w1joco9Cur+MrjTq+
RonE7Y7OXvkv0ICU6aWJpn9fAenfaOUb/iqDphdCymgrrpUWOSWwNv1wL/T1egnmNdFIkjKtwaiN
oqn0Z1gxcVCkaOGN4wDDONbvcX/3zTpGDUHdpD2uBQtJMkwXpgNyhWIVRYbWQ2wI17ZSqhhUEJaF
YZqtEBMVQ/ctdlwa4Tg2e2SqSJ01aYT8Rc0HecJ617dRfSbz8R2rC/jyl+mTJtwveB91oZUj6fV6
K+GcmBtEXANQScN0PSi7+ra9LaRXy4Lbj+SY8cO3ny/Hx+3n0/bbzy+Pt6Yf+9IgZM2l5AokClcv
tTW0SrklgpzSPBAMR3lkXT8hhK5qGYshpOGw9VZ4a/PV1/V8QdnNEFZD1qvTwSW0rQucGVsJfCwp
v7cxrCYKwfS92Z1EsDNeqxcAp8nOJBxcflPxiMLpeNpUyJxR90R2sZEX45ay3GI+OrUg1GHVLr5C
IwAyk7NiiAAMsuwqBDKMlAEkWNa9vjuIRuQLIcMQZSax0jykc2ny54o7EsLiaSEKWiZqOru1Kq6I
UKB1V4s4gwfBWmcbhUFStL1OKxL74npdFe9NmwJ0k7eGgiRPsvGUYgJf5gH+TkRWZXeFEpt2JSFl
k10JpPX8prqEIQd9U75fbpHmqeCPXpLTzU/LCbT6hy3I+nhljDH7tJzHD1izvShmoci5ybCSMhYz
T23jGjlk45mXYeYBXRz3jz+tsyYkDscs13BoWGzFtTHlctIkJzp88vd42OVZYYzvIJT604K//gkn
uDpr9Zy/tzoR3Y3GBz5st6ScaHLgIi+gcxmsoKWbKyJ7iZK6Z6yU/PGYPYtFNWeLn7FdQxQ+KABp
yfyh4ko4HCmzKQwzQKRiVseTP2skCuiD6DI2kI/8O7Px8XFaoYa7il9VjJoVQyhet2AGYnrTYKp2
GBS9YskO67A0Y49fo3kC0/uy2usVSlOsjXWL1YrpkrWu1vECoeAtEqDUf3kKrNawhddaPnNq8EZX
jMpreNDkP0Uw7HB9/l/kb69dYzAHrRV06+PlcvgxHc3RuSCLa8VWnb2z82xgcOLWMurjMuAPtxkJ
TFyGGaj83dUJ4dlvYcryok/uzTbDV9BbnxBxa25s4daLQfFbclszYhGwVKEwam4pKu9ZcVZ+BJ6i
kVJFnlxTZZy5J6sCDk7VKHo4TKBa4wIT6tz89fMW7ebjfDobLcBhyPiiPvdDk/xUybzMKaMqTlAJ
TQ2w/G6RGCCz2Q2qpx77OfNPWKy7u/xVxcuHSFkbENqfJxYqcOpLiUaBajD2nOICTCOJvpH6ioDD
4PPKG3ModiniXxK6f/3cwaUqR06OJaMgMPmEH/zrcb77+NHm+/t0olKTbMABPBlqtSjTvDrD8ufY
BD6t4qfJ9KTw6fUjVyWLH1fh42TsAn2M5zDTvbj1Ii4hdWWyRK6MEbdQx6O3T0cP3/fG92P8/edc
YPi+Nb7v4+8LsMXZ97XxfZucv1a/r4zvmxXfd8b3Q/xeev7p943xfTf/fZEUxKIys++8FAxXgVqs
PBJHQNuIqCe3BEANGljM0g4umhIwixkJFOP2KyVQO6vtznbLonP39dSPVkIJYemhK7gAzVcwE1T2
ebr58Rs0ogQTxWbtQSUQmzkQhfWoueyFCUkgSrcHbIdXxeYqCHrRtifv19xbb+1NgG30vDdyW27e
T936ctd1WMc8bflp3B9aE5eDe/+36/ZiFLq0GkbCIsqXAdopQEW40tg7uK+HI9UgGeVZZVlqILuh
2gILx2ww17YtNMj0bCGEAd8ylEolP4VwRavlQu0U50HFdoCElgF+21LJFSJuKZVFOnsCsnNbRHqy
0FFG7Zk1rMPpt4gKrTjM+ZdUCI6y7Xw2Km9LBQPJ2UeH18/NY+tRJhCD9J/bb9sFlNau1kZGB+qR
Re5GlrhtRqX8CJHVfGv3EqxaxYATJWQ7wgSLpNN0lgRfqL/omKxFAMOXZc4qqVGdEOawAereKFU+
2ztyGEohX9fHOMpL8A32rGz3dIfDE3zLoqkqMa47BuNZAbC3gDXTalip8/orxwT+nxnAF9rU+6Rq
3F+lkYnts2XGVKLjmN4sP2+5LT9NK6QgJYvBD8QBL5R+gsV3XJjoIlBUGm4DfG7AlQVvNIV6v9yH
2ytzlrJ98RYOEndDiPotbgSKuN0IVmu4nwhXUSXskBSLbISniEAJEwByOvFio0m1jVa0Da3mU6j6
xuiKUTfeaNpIDtvC+l2n7U0PtRbzDGg+ty9ieD1FcCyqEzJVR11ro91loQiT3RPBEWMYvf+itYUw
3ZrnKpJQOADH/7vFFbXoOuWYIKxFo6yMmqOi0LSJM4JEGHeDgdK8jBGde5TuroWIYFTgJTCmPtHU
Q9YfWfQ+RGEYRqxrWbVOfUe4N6NKuFcqsb45QxqE+c1/AkWnIIMXezVA5rUcCCjwF3zZ9oMDTp8b
sGjh1QwbEteKHm3Z46N1qRk6vU6OZMzdxJhCCamH0gsTqhd6HO5UWFM0GacBwlZUKI/qiaJMZACW
OREWY+n0DdSTlH6OSlEZv0NmJn7TIpxR578ZjW+q+I30j4pmyH9DUSf8psO90aOXjXGeRtyBGBNY
GHfQVvyNVDZlb/wOKXG6NwHsXFbGNzWfB8vUwh30xr1RSAD+Fud914PH2qsb4647fh8xh6asB+Pe
Wr7rjusli87YG5U34jfQJFP6wtRiMH6nKGa/E+6tyH/jwz3lDF+xaGuDduJ5KELj/eeiNuig5Tdt
8Dyef4zf8UX/9KYD98yXdWnQwaDTW2vcQct3LSviy3o03pTpQGI1l6VBoxXztmwKKsvG+IZlCLWc
+9+pjG9qlgddy8NYytagnY7fB6zx0gOVFaPxO0WbyhCPt10asspDmNAdlAzhV+RCqpgyqJjehDLJ
Tc3FbxqmA4TP8EUgZWe8T8d7o2LZ0tN1Z9B1/J0KxH3l+4iKxpAh/DsV5Zf974wGjRb8pkCuZet5
rjfubeRvJDp7YdC1913od9CYbD0vGHzasNxBLAhvOxaloecaIeMFXEExGu9TMC8Qfomn0aYwzlPp
PFcZvFAzXYO4dxfudaMlq4T+wSCDp7fS4IWqn72Pl72F8T6Cf6ihy/9OYcjEUvBPL+S1oU9boesb
DB56OjDuumv4PD3NC/Vyx5AhXTGjA8/bnUHXQ63LnbY1fofpWmI4lIaN1LWtetdFaehGwQuJzjK+
8X3/RG8F2xSFYVO04t4kLzh9Z5wn3lsF9fNhuG7ZGW/aCRkvmngKQ45Suvj5rovCuLe60OVBbdCB
0NvUh+LpujTurRG2S8OTYYrB4NMi0g6O261bP2yvNPRCU890sJdVpSGraj6PHLVb9MY3w6Dao9l5
Dvg7Q0qjvimkKAx5XbO8lk5vadjKXVPOaNT7Mo2xt07IeBFidDLYoFGma8zZVoG3DZko7APp/xSd
obeHauabeZ4z5DV1JDzb8aXha3bCVh5wyor3MQqDt0thVyGAg+ft2vKZ5r6Zv7fO+B3hB4NqLb0M
KYz3oSJwz9ui/TcLi4n0VqY+Rhnex/idgWWV7GUoS8v/KXQ/azTkddHo5zFspFbokhr/EvxGQ2c1
gt4wBRf8BUNnVXzXkL8vfQK/6Aye6+ObIlRHFWSIYe+0Qi9Ie7TsDXnAdFCBORsiVY7uDF5g26XF
eozgy1g0Wum2iyGvu6rRbT7Dvva4UM/6pzP0zzCPH/g7qIzfqWvdR+8tHcx82jYcRyoLgxfKUvUB
S0P/+AbDJ7lTjMZdF70qr4vWotFatykGQzeO8/fxuqSz7MRhFucLsTTDJu/53iQ4QWnQQSe+kW9a
GrHBTuhg+abFaMWEmLdxuGXwAQuDRoX/I7EKS+N9unbQY4OtdW/ifcjA9PLAkCEiPprEBo336UTM
TtpVpRFzoHY2ujcg8aoP3xh7K4WNhHExr+s7y//pVb+xMHQwVdQ++wtlZeisek6jXiYadEB9nopu
NPwFapyUcdggQ4y99a3uB4/G+xSdbl8buqTlu0ZY5SrszYjvdMKOl8m10og9dSLmTbokyBBDXov4
WyJHjfhBK2KQ0ncuDTueWt7EmwZ5YMQgW2HHEwqtP48R62yFbZnkJEZjb8Wg2r1Fa/xOP7eVvd/Y
G3bi2Ojx+NKgHWmLSdlrxKLbVtCOKB0uBsOuGgc13lsYdhU1+3jaEWNRit76nUL3s2pD1wv/NJE7
Rpyvq5i3JQ5nMVo+UzGLIxX2DCSkN/YBZRbUCRSDtxtd9vaGbhzbWSw6xCmsnN6oxqsKI1bTsh1S
NTSuzcfsLB+jmNFB4AXjd8Z65mMEGrXobdRjDq2lF4QdX6Ex73Wj8T4iR0k+hqcdI5/VyhiktBM7
496GUs1nvW4Px8fV57+LqsvDdNOFYJ4hFXZl9hsflMVvpMNRZBI79Dt9BDkHHycE8Iqhzf9OwXtL
Er2dtTdxHlExVwy98U3JuOgVB4iK1tpbxFKvQJ9XRbiDwfim4L3JRFVrfdPy72DQLyTVW+OuBz6P
SPgXg3FvRc97k4G1tjG+YTpIkk699Tsdw8LDXfeBDjrjfQq+AxlQyQh8+h1+0ySpPlTGN0NKbyE4
n0l24zcV/049CkOzNc5T8GQBsIdDTUdZWnTN39BfghFcG98IvH9M9IakunXX/D5JoLA17qDke0sC
ha1x1yXTG9hBMalRGjxXtvw+MjncGXdQMc/F5D1Z9YYVLDz2eAnp1ODQGZ0v3GlG7mMSltpTGZFR
+tOqhUhURg/tWfsJ+uWhMjEUPC12xOHOBi4pEraqL5OKS60pTuKGJTlQYve43c8ffEqPNr773B2N
xRruPpLlQ/PFZr17291uulmH5Z4iahWpvjIeuY1TnZ6eYb6vUO9u1V/jch2XhAkL0d/+ugo1bpGT
gR5Cw3WfAzCrAYOES/AuKCfir+Xb+bD3A5H24s5heLdxJCYDCqw/D2ek4xlLlOozLTx+gGRYuvLI
SKFNMQeUziSLOLfWOJykr6lN+wNEPeYS7Hor0P7riOXq6/FDt+TzgCLxGzejNl8bBzqfUuNRm6we
38KbpKJmuFlohzFQELkwXEyWBmBM8bkfvWIU9JdimjojV0uciND+tDA4sRYTkrh6mKf0SlRoo+Zb
lKbzUAxfFHudoF8XJkPi1Kntcc1kr7ZWh2l6BsCnw/4KAA4AtGqjtUBA0HIvlKyPpsaCm1EEPSZd
Ht0M0g+HpiRTMwxsTdFXJeSpxo5uaz9B/T0MyLNavZSGEYAtBs34MrlHpO4T6EpyqwGtGiXSrQbV
voTnujwOJt4fWNc+Kk0l31u3y3/eYm+ogR5aK1h9Gozwl6aPcc+InCLxlUEaxgCNXjl1ChYHrUwB
1s4YZNArgsxRzN+uhw8s46e+lKRtMfyrnz6NlplSzuGc9xz//vDNaNfpFeDltJGTWvxQLWMj2mFn
gzmPfZsDSk2HnNIgys3t/HBKwJgwKMChGQIYaXgBdgtH3Y1pG2xZSPhyP2wLyYBajU9nRw8Hixy4
kwJsDm9y8EQk6sSA1t8weGuhD4E7VwX08gJ4gtHSUqtoCXDC7ZUnIMomFwN8WRvL+D79ILzkw+33
hzdobb7dslYRtlCNSkvkfJz3wsToshBdm0xVfsDz+Xj0zoTd5tZUSpsbti/9DPT589LYvnbUMICD
1CJBSJwCvTlXk03aRuuhyapac3JUowmWBLDTUY5TtbfDbfMKY1rv18dphyMF7haCNxsnELH3ftH2
dPjwA3nu0+WGHcyPI/am2b3I5YyRk0GrwIEz+NONcFSh43VBTjfqqDEh+Q8nxQL1OmBhVtigtWbh
drGv34K37RSDKtuOV1rteKXSjvfU1Oi7yz3qUZgfYzBnnYB5k3J7B7LZbF9fHVfdFiyhhoc2C4VO
K9weL6H10/i+08Zo+fb65QG0o+hPrqMFnU2vF14RPE0+J6U3nR4f0xU4YykGgeOfW5Ms+DGcJxpm
AeGsOotgckAGt4/z+f5uNVo3AvB94JkwEaTj7EyJOzLCAeZKelWlwHkYl91lJs2RBR2hfbdwzu2H
YT83yhtgN//OQifE/v3ICAhPmMV5d97EwzkH3yLIBc0Q+4/wXxpN/Nr0iC91Yhp43pWAgu84dELw
QgEu5NvcEjQGFNcKOImKob4w5LJuRUNtx6WFSNA3uEwLfr8sGq2JfHlSRmVMyigUkPGbRPW6UlRn
w+HE0jBM2XLr4I9EOLvD3uiCZpdRWGdAV+dlyIqaRbaINnhE4YfjFxwt/grsuITjMXaa6cJG9ffz
66sBbFIr856T+V+BuKEj07IuO2XabBh99HLYHzi2tWALFAyUIWwWOWaSFr2aUQ8fBZ5FsHAMcw6X
pjKeS4yIE6nY/QMa3an5nvzwNbDXyFC92uhv7q8x9jfOGo2rtegPa6ds9wqRYeSTgOQfzqjdeDSS
7dGZlQuoemjxVK06VBF8ozUap9RM7pmliLgqwpACZQfer3Pk4ErR5bcsq0IxcwWieBqCgyjFZOnw
tqs0WIHnTvuPx317X4TM4cHMQqlHsZqx8oUR8s/H7e4ezHKtGkWDzGdD1QYYi5j9Bh5eNawbvtEb
c7hqLZ4T7ambnxTsHv3tcbUCI6U2dw/PNh1fV82V6UQIU3ZeyFFnsCMrqtrk/DOCvILLuFwP5yUF
q8VSUX8tICaUFY9i6uF2nwwaSpbcDESxvu4SYJF2NolphTfU8lA+Ia2zU5PC8B94rR2EQuAfvnxu
cJi4MTqJ/eoeEyUhYISutMdjeHX3xejvHm89DKTQQSf6ZE5Jq8YtQ7jyN4xAqzUaQYPYCVxHrJuq
MkziSrlYc34ayTJrgpo2dfV3R4ge/R0B0JZTdIXvR33yL2mS7D2dJrskB1UoNCWs+HG4IVm/HT8v
70ZYUYy+JESUMCuYOEHKvjYvHEqBTioqDfQ5QcZ4ejE9vEMXhHZzfvknXHYgVPw08O3s3xkQELGU
TaDxz77eTB8vOXLANbh8DOz8ypsy81W+OUfyDH/M5h1xsX7W06hv6fDxZqzRqL1gT2tgVNdAzse1
WrWuUtnP5vbN2lOt1tPP16E/G8uIsuJQXaQNRYtAdXHSEYZdjAlp7AC14FPMSBURnTAtPV0Mz71S
YJeEDYqOPyA3GYGTQU3l+bEJclxTNhnVcyYXKuQGZaRVtr0N85JaaNs7zEGUGGGQNN/SZOxwMkmf
zfAFMLY6CRkWz4Nrb78cLgGjKD/xAoQcD39PihyXrUZIy5vxeDEvi7EtxRXQtKIw25xediGzwoN1
BXQZUQPFQ+5WEqzl0e8iz8ApRU6qHU4b1hsL2RkBhsuZtTuVFiEYIxu3UI5wMYieA53CCBPRc18H
sr1FBMOFyYliECMDWarjbyGUubUZgi8fp/E2TwY3TME15ChZ22IONwJRjNHSnIIjgpa3ER4rFCTG
gDUHhss84MYPgLSWFdBIIuKQommfEF2J+e+Ho1XPMGpxmGSaX1JAABxqDJIXaXooKQ1AuN5yCPI9
Iu3dX857IxLI/oFIgISKrnlE3YhajIr7CmSFw2gRm3nzHfIyIb4twgLGOMVOcTLBNBWDOTHTHN8z
L/zbtlOrSsje9Sc2TFvN36Ufd07GMQYpDRhbgeAoGj68+gmgf2bOTkhmnn6Nrs0G/cE1o6CKiPg+
m59oE6QBE9iKq0GZEnJ+u+kGT+S+RhtDuGehyCkrFdjQhmhdm+Ia4phCE4KzlyPSYwqNUaEhiPR9
824VndQibSGBuYBiDqcHujC/s2XtrNxrUKd4Gt6zCI4D+YVC2mDSIfGtQroeSi3MjuVTHzBmJjuU
qPDmpD/FEIvWbvdtnNkWeZHCK3nRNbaDQr90Dp9TlaOeRXCOhj4ERE2dvXrbvPKBOErr3FYXR4wM
YV0C+5W+DUFUOvrt4nXCVe43IHL9no38cFrF96wVvl+3F4PCC4XCvx2cyD4cwW98B9nvGNAqAOqV
5yC9S0imzvLaQM5ilWnRl9rrZuvHnM5dVz/WK/4HvZ6vg3ak//lxfpApaiiTUrkwJQX4/nmBeR1f
R/FuFAJMI0jPpQRrgkijjOWWmnUEwTSD0jieKYYepcVoa/N9FWOx4tCLyht9yym72kjZiZehfLbP
EU0/IN3kGArzCcAPF2AOtNlOGH8A0QE/cLOyRikFkRhH+0OKBxuau+iFlYrR0YCK/w2xpdGuN4KY
lcIai7HuzrC8Rc1thXHetEJKiCefXUNb3J6IXZb8ujKEPqtQpkHfl+sZ+g8gl2mVKleKx6cHukoj
0CXqXEWNPDhkWJIHuX+wKW4Lz9iIiBlvJ+WEWAi/kIwcR4XdYzA3qOWr4WjXbB+IQsp19afRuApi
asmiGsU4bzZg2aXF/OLjejCMxl5xstDLC9HTNTOzOwFbXAtU71C1xSU07kGuky3TWzGsgGWjFo0d
jWgsOxklSrReCwsZeSehiZ/nbYS0f+zjWAgdlIp7fvuAhhKnSpboe+S0k5gjR5VAsaJHmFhGVVCp
lN2BBJnXh9gSpeJMbD2OovO6qK0wUfyGx97u3blfzltsqHnD9C1OAFmI/1eaTr796wGU5QTu3ekQ
rpo1rrVTGi48JwaXBv+AKW+DXGtlHMnerXAnf2bpOCLfM8hxJuXPr+frd3c5P4Owd+Lj5Tj9vFRp
UnFAVWRrfJHz7nw9OZl4v253v2CNBycujbT7oFhYOEQqAqxbI6S0ku3g0Xpkfci/YkAQW4NItqom
TyH0Y4Ome9Q8qV8LF3acfiyHOLpBsLkAjorpvDCJSsLAO73+7WD0XAycZE0aO19hS6uLZBt270SJ
zXTCA748Xl8XR4/Uav29mnIzkm0LNsk38DWXarYF9wtTSTHT4Xhft9ErJbM498gbwyMXaf1h3pg6
n0ezonqIxT0O+AhANb/NBjB0f6X0CWUqp2mkBhK1VXHKXT01FBf7i6TptTiawSbZvqyVMtjwnnLM
kBFzHJRhDJryN1KoIkEskanSXAfmA60ai0rZyC3MU8fxee/O1jeKDJMBTqVvhPRlsXybRr8jZ1ZQ
Z3aJ8MTIhG/Jgers/KuISRtcF01mnU9IUpG2p5W8phORygRx0h4eoyQJnyfwHA8Xw8DX4tB/AYfl
z1B1siLPWIoCTBamLIBeIdDlo8bcNCvn4i0OZGJrgkZjEM39P9P1/NfLFij2z9tPt0WrwrTSuEeE
ApPezRD7WtABoi6SpYSZGmoNB3VUxLgtJ0tja4U6w4rdF2zIwTQdRCatbExTayk/JYhuW7ZNVSu2
mHcl1zhC5agJZWUubeg2WRhgNXZpdrqdd8r4XgL6hf3hFTEODBdAdDwwK2nitTfEq2gwFjgc0SSg
AXdL+ssZBaVSz+gvhhQjzFz65TMGnoxYjBgrBVIq4NdoJ+uMk9UzzV2LYPbbdMKGkP3i7LO6a9UW
Ne+s3Zy4eVyXpP/YDFqZEz99GPZ8DcXI21ccR7ewuaYQLUwFYyU8l1Te91Yxb635x3uILJM48ZsS
ISYaoWWoF3ZPhzj7KISp7+cLR1p9Sa87rQ/TP07+hQ0Z0bMa4YYa4L7fbS/OQjo6R+YP+7fpd1tr
CKKzCwZtQp7v7DaQJdCYrhXpoFVfGl0j7G5i8rEOo8QpJOFNSQpTPK5Hw4uuFC/62Xx0f7q5B9hv
zWbTQuT7wdYPbkLaH7GJzbHGtgotiymIgApA8JxPFrWRl4nLQv9Ixm1ca+F3Issji2m45e5fjwkE
/u5KYYSX7WIbRCmyeZzJfjm/OQ3m/eTL1iivFKpZdFHIWiGnpb3vad1UU1RKOCOoz/fDfj85snDK
+C30jRmGZ6OEDnx7nQ+wJEpxIQ7W1XlICvbUvzy1XrQlIKSSz0sf9kvz5A1JVitGrxVuFFm7pIIH
QXSohdPQFHwCwGEbOrttwWhXSGX6MI/rJ+xBhdMHp2zeDNe/64VdPHCTm9HebIxRFrKXQ3aZnNe3
j+0PI+PFg0Eb7FRoZkgJ/8sJmN/BsZ09ZaAmDEp4K7Tuhe5KjtIuqPxW9PVwgNYH7/zEUwgFXq14
HStm1nIpyMH2x8EiplK5Y9kihl8RBpYxe57n/Mlnp0mrBr5VyTPvJXhoVPjWpyNjLkEcCOiXngM6
8GGMJRf7GYaklsl4dQIP6hiXQ26c9RRa9RnZY/qxm5DiLZ06KuYQmqIILPPT1ug3lEXkPFyTiPtP
Zule1etFX1iuesJe/0/Zk7EgswuNY5/6EfBUxpY0myAOYFcHRq8U1GovB3EaNrT4uO8LwEvdltPJ
WiejFuVEf2LBIBDJmmIOj+MtfXM7Q6EhOMXmiPv2xYo8idQ2DW/g8aweiugWGv+MslR28CUq9qx6
fUWOZSgLJcULRcC/obuzLPhqwV0fY0zqj4BPhgz6x/P1f1it540IrXOWd2b/OZk57SmN7cyTtNop
ZwR2ivG1lP9fSPs5QTLOSjEqq/bbhoJx5n2ltZClBY9LNpfwQdHaFfgBz5kcxHZbkcop1cYZYjYs
3jIrp+pOSzujxogRwcXWvKZNI2SdpAsy4524etgFXKNC618BsNr8MgEci501GYvuK8BgvrDLHmde
8Jqirx5b1+BlnQNjaN5KNJ9yGicgB0pHBk+MWIJLZQmNJkPnCE0Bb2EDWh6V4z8MB7VVfXiOWf46
Xc+bd1jxl8miEy3pK+sk9xDQ/jicqNMR0L+21097tnrLFTU4or6WU8wJqcnp7yRYtLZgshaCSea0
ECwpsMfPp/P1w8iLNn2loCCEkozD7UBT7RnOMWzZTtUMItGCCesY4qbadBnjnvYHbNkwyvq1uo8Z
iM6mKGvnuuwfO9O66ESAU2LmetOEwlhXEHd2N0U3ikqFnpH7SbI9xe0Mq1ArJElKYkKpk1EXw4Qr
p1opVs7LBHf25WwuQyWITc4fAAJB4Z8dlyo9OhGHkAjBfoGX8/2O1QzXD+6os0OVXaHB7CVC6vDm
uGG6Rd97ETm1Fq8sMSJIHhwnR72xx9pAcWL3pcdEyCA1EFEMY4Fe3OfT9dtUL2HTlRJYkF1Tan8S
zWIL9+Y0RK0W3UCc5ubecfe+oTXJUVwqrKrTmJlnVrzxHcTpCSXTMHMLRQeS8HEHuSyG6LnQA4pH
AnvLBC2ksOzIZKFVMH9s3e//gA6w18dptyI41pVaYudxPThW+WU6LSLUOOdFwxTAOh+EtEQ1TP2l
i7TSaMieETyFzSkI2iFGXgAONcoCtE6deXPLmr6WRlR4Fhz44Sg3mJwvh9MWazDODwwk+vjXp7O9
f6BdZYL91AI9RgzlmBXccjPoyqJbrevd6IHjpuAV0BaVWJ3w6zuliua0ve0OByM1kUJsWC2SmM4m
Qw6S90avJANWoIIXktY9NLqAqwpLGi5kEgWIM9gGs0+r1sq930ug4puHnFq0o5ohCvkOZ/J4W8UL
rBgVR+WBWo60k1Gep6UNnFyn8OzjFP8WgfA5VcywxAaABtuTPezdo2S+YU9A5GIE4HrYcRZh23Ms
K9GXJGEM7Tgm3sGworvNKPliIwPyN226mleWK7H2+l6rhv8OEUOKt+NH4s9OfE7YrXS7+zpMjIfl
qgDCFLNhLGfJ7TVres8wv/QQlvZlKx0FTR/XI7EnBoycC3JnJC5C17ZUSava0D8c1X07OB9JRpMN
jcbShOZV9U9472uwa0vRbypsteiwUXjY7sRvuEYXx2O3oQhbUvAuppENMhbluSyF9ECMFYLRogwK
rtQSoFSlAW5S/1WU1En6C5h++4aU5oybnXsFNAuoo9gwlFqtcChIXSjPVLCNjXp6jb4E9qQBWSGS
57F5M9YxLyN3N12n3Hw0WdE52ftyWAsAoNGUGmzjO3n/pbGDUenYeC6kd/zhBP9JogksARHXIhPK
BTmzBKuRR9WSV1RZGJwgG3+tGVsleYImKEfgluzYstFR5nLhM2/ZKlG0tU04w6g1tH9sT58U8brN
QPsNLdkr0V9isqVof8XRT2z5941skLL6f/4K1Gh3Nbed2ppNTy9qjnyu1a6iG0TLgChknC5QgUBz
QKYfELhe16tc152GFp32v3w4b2mpfrXptOK86/24wVNZZDXWGmCZDyCwmbZY9NZxhFSg3YbyFuon
BXAhp5SgwBiDieHf0hiEH9Oey5+MepdSCdJ7Wt8SNLk1aKVQtBQmf8Azun5SregKt7RiJW7XQ1J4
zhsza0qORgHNyzUWoQ5rGU6y5ipGURE88wdOZ7/FaQF2vTQbIr/UkSLgUOXEv7Q3K9SzWmkEzTHA
QONPh+Pka5KNMHen1J4/wVoYMDKF1jiuVOvEWuSV1TrdrGjYW4UAORsArGF9biBfAP0cNAxwUTm8
n+5Q1GfUHpe9Aqqb9ohvX9BHSivV9JxppzWzJMiIa2Fi+zGNCfnw1tvLduMHUdm1x5UKAquUiVrJ
VlnVzt0HT4RUG4TUKyFDx0qUwUA94H1bI/I9KpZuiH4SbE0sIN2gxXGcvk1Hok8ofTAuuVLsDTM1
3Vip6VrB1mQ1t5iAHBsN/iH9fdrcaR9Zz+hhUYtdUVb/1uK4ig20eoyWihyuFiG8DSQZEYuhONtC
jNGILLZLhZM4cyL0ZVE3GUy7ivAmy9kztveTEsOYGbUHK1Ri2AgXG2CpsQdyhhjMHU3MBW08KJbq
MgTccXq1Yvp1yqCN8Im8vQh2sGlejXUe0hOR2gAl/W4VQTZtq0nhZODewU8QfhpaiQEkox4Hystq
HjEop/d+cX5jLWYLUpXPV8do1jxXkjpWB1l0aE9arJvZt6PsuaATrNxFy/V9iExZK+ewpVUboVfL
eYVQuow5zrLmuaRyCPFXhkc2xWyEZZl/WR5FY2ypmk3+9BMaLeDhvD2gsex85uHisMPWSsjs1WIA
Q2KyCVajRm6Eq28Nr0Qfv5/lj9PpfYTTAxL8CAWTG7vtpxdzVzh55k2UEAu7bZxVaA2OKcX4SwFH
xGnSmIODercr5lwWRl0561tDchKoydE4QHCS+/luj3Xrlfa2jOB+md4PJz9s0wwicktEB27ic7VI
UlB5dUrArJ8SLSA0I358muTwr8cZ8S2hr88Y5TBysLWBv8xLDDAN9Yz/6IcX2jVKsvAGh1V3s11e
p8uETGF1zzSNqPCvEJPCBzl8/RtOwHDiwna0a27mAbugkXNNEAxqv7bXWHNAvzAaYBHkddRKR0wr
18IC4UCMmLNgOTlGQndsc5D6aR+TH4VBBsnKpqZBmfeYAvX5GKFdwDyUGtSI0QJhtOC2pWbfizjY
LYw7xmqRhfLsRsPupXT8zxAS/RlaLy1GaCtt6NcsWLEMD9GoJY8LSFqGzyha/RhAGHgcfDmAQNm+
4Ni1H0axGpukNWazq1lUZzHWJyq4xxS3BwUNlFQCiSK6AqooQ9y0amPIwgVZndzlDNZDKWFCDWI4
NfGCQAtHIE1tTq0xnrbThh1gXIFaXfBy/vWwRtwO2lho3/ICztqCyYZZ9FFJyNjz2yy50S6Mcl4H
hTG0Wj8sferOZYQjtdbO35ICid0CojwGv1lu7x7GQeloe5x+OZ2/n2amJt3rQnmSwK5CwvkNs9iM
UBmnvtbqt9bSbyzPvIGpYtK0RpnSl+qdLGBptkMxhBPh8Z5Rv+yOuVIkmMTMqadeHpAAW6dtAZXj
7tWQgcDcKSXBcRRaHBhv98q0lVb8lk4icHvEtql/2IOvRPkvq1e8rMOvOEGK7Af4JxHXxgPk+H+1
4ABVM3D6ITv2OhnSciWbdHH6tTaXG0ht4cNOjHuXPvCsqGYl/o68RATFLhcNPIMVRm3kaiiyxBFc
9xXJ7b5oc/Of1sFVigpEj1kZavZ/EbV8gujyF9Sqkxqf8kUr+14ERAhY02VwXy3hZY2XZeRDYTs9
g9zGojXIgGKwL7YZ231pciwTCJPlSXgGhoxIB9HAFh9ODvmWgKoFWhxVjYW/086m/uVH0i/y4aC0
JMgY91Kuuqx1iIFlSN7WgOQVxddgZ1fNcwfAol4XbVKibyjGSpJYIpVOWFGSUi0Hp62gB3wNhWz0
z8L9EY05E1ovEOoUKU7AdxFojiACgH0NE4x7sUTnaa4jfvpmtIp3vQ6eRV0SE88p/GKb6NBrKHDw
HMSmkJGBbn0fwrLeIk33lXqizujOFx1l7MURrjCGYx1p5a+nalU/kpqCUMhCbYDlQ4pAKVQveUx7
KO/gB0sL9mzfuNKqmZV6JhulvxG5H+aXZ6sptVjNWm0OemKpeV2Pc5j42CdDwgoxUa34Z6HFJ2a6
n+BDjPZL8fqQH/G7omBCEko07LhS8eRyjd5J6rE2FtUy6tRbdpy2v5jN8CyfJAggYh8wn34pej7y
ksJEU6c0A7SmEYVnJ2/AQogmZi0ACHd7OnzQ1Tid+mZBdFTM+KICIpnZcMaRAVYMp+0r6az6W86O
t7ecJxXNxDvgBJp23H5c1gOpOr9Hnai4pnWCWj0I/M/R2I98/0Sfwpz0o+g1jbM9DcQYzVtGA+v9
jOOhYbbJacnu6CUT1pyakZYHgcoYhocoAsXW1CKLYbf/WsGW5qTFqDTIae9BIT8ZIKNauCcCa0qS
O0ScPbsGqBP11C0aDK1AK/FBzNX0VrWNwgqMSE2Y36g5QLTttpZ1X3JpGaRF4swccjlv9+0VZswZ
5SmijosDGzG1SUeDyA8gXRCdWqJCjPwrI7o0qXiMYIKWgCc1hugyPo1o5HgHZGQQyVbrzJAUPndS
vaB9cZ3ertBHBbPfnQVfGCpB6/vDsh/ECaA2N0Og1Bo033R5vIhKA6MYqVfKOU6Pj5eJkdKWpu50
3Jsj3FkeneEL6n0l8+Eb1vukzoOxQZFN6lGfS6ClJbiJUZ1JIA0vezhlPcvosB13P0flaFTqai6F
CXhqmLRCnor6J2+8hcrsoiyy6fuunk1qT3I/VGYIT3U4rcYvGTjlIlAW/Bx1qiqg4PeihVtqnUsh
SnMy8lmFVpA003Uwqfnb1gC7YqNTYO8kdELmNdqw2Cp/Pt4W8ZdYD4MiK0PuOFpD/ngSQtfQhQIL
CSLpRbOmtnPV/J9WaUqK4/1kbx3UdRllulrt6Sy6Di070/7HYmCm1ERKWAt7vvZeorxPVn/SUGpD
RQK0CAgi+BvsjXgGGlmVxC84YShH2szj64MRXxdb7NCanmfnPuGYTlw6lQATcaGza2ck6Dp9kpAz
S3ZQLo/V1j46aHRhjIqrolTcmhAWZam6UXMIBUe2jmCh5Yn+TY5UO4EjBZNIAvSHI1Bs48NZ7c7F
QGOLAO+Wglv90Cr6d0a1YaZbmAhlkFuj5jKfQMb9RaKFeHPS5BfDax9aJfDji8q8cxBMV0MVVeqw
wUTG4W5er9u3FWhqDYtMSPE19TyVA7yVwCEaAIgazr6YHOQDPibgTFMNWlNuvq7BGsNcqFMww35k
LSh4G9fDxTKbm7pU5CtZeFw7R6U+m0/L0uMxYwAcOy9pul13iy1pTdMosJroUdK0m5kINDSmaMtp
sRDvqQ94uT9uNj2nnvc7TD8Ot/sNcaU9IgeCwhjtDxolfaH26LqEXtYpfuMTc1+n++N6uvmgqRMa
YX7VIvBKw/UDsrxadtOKoXWWs1UXap3lvw1TWIt5vsz32I+FZv4WYT3dQo5PgO2m084IH7L5KBZz
EhyQ5agXC0kJJS88k9P4W7JUDW9EwDzi3Mv6qYLbKwejgFvr0w6ertde0c1fKCnqhU5oao6OaXjw
Rs5P9DBRas0uvDzsD1a9pVaj9/UoVGlFoYTnhFXZzbL3Y1RRSWN6PljPl/TH2EFk+IXgSNEqrYUU
VfeJ4f3VQDZtOLcs2vbM7GFvlF+K4jUxyEykTyhOvAZeviy4A0F2Zoep27O2eselRpSk5iSsEHqY
BllVENrOutqWKywNxPlZW/KgDzYx8qq1El+eJTKpSd1Ew6203pU5ABWibFqOQ6VEB0SW43A6TVfT
+Wg7LaGjCpbCALfoVVjs58E4FmAyKq9SUTngX+0JVc4CedUOIuP+aC9he0zSCmEkAXoFXkFLmVmo
JMjlWoAhmcNyejijZ91IlkaJM0RFcr5enLpbiit09aDNl4E6+xMQHzbaG1EJrSAv8VYp+gc1G0Z0
X0zarp+z5c7W9ogPNiBKK0YCsaKFTKTTshdw8u/n4Cthpf6U1zht2yqNlYmDc4HM82Np6IAWMww1
PouoHH2hSagZ3tb9cD+uxtpqFGfEz8p6PdzxI/7j5puTx2cI/+TyFnDPLdmxQIMemq+fLYud/7dv
b5WxRhHWSDxKscbkCGmfX4BUOjICSI7ad5fLTWAbdh6RkvZRx33ImqP0LMbnVfxcSj/xOf2tsUIT
L7NFCfG0Aefjfd9AqPi6PRgLESAP3Wir3ujt/ZrDBqKttHErQC1VqW/lCJN/ssBJtJch7oV6U9oM
hRibKeMSFKxpqffM28/LCaOODTQoOm+63CQtW8g0VamNupnDrRlRblEAVc8nX3mITcrtoRHulMth
KXxSsyEDPoEfme5tz9dXGKIX23wN1VQqMbolkLudcxJWwAL1SkeWx6fC2BNnS7Gexlm9BjZmdKeg
oNMPczQHNBmBh0oBg/Bl4xhKQaVzPVmn60Tftyz1pXpzHhC9DAbZ1lpA5YvjNbGbPgH6MaCyCw20
Re9YNHoVu3y2BZu5gTstaGIR9J51KZKvsp+w+nJ1XUTRGm1JkEInBGo4Go1b2u4P51BNpBThGLys
1QyyfzuJdkgjmqrl4rKFnoY7IuIMFSOAhopFt943RHODF4lQBEY+buROoec2sYh0sohrUqugodPp
9rhOETEpTIKmMi9P2BR0X+gBrvtOG6wViNjtEYNlK4y1vmvU9MJlc9++xcCxt/cNsCuRQ8elSr0y
TpbBL0FxVQIcbYy1xWtmo7fq7A5KFVBsfcX827JoNBoF5EPvUZmlgl2lBa2NcLoRumlGBf0nW45l
9WoyYQokKQzsrR9lzTFnUYRCKpfw7YMSBrW+MjVbqiMW8an2zm297c4XS5gkTQXlOG/4WopWlgUn
z+NEuRDAEiNbjQMUSnfXF8LmC6Aco+aYBXaXoDmOBpx75YSM1WZfL9eHPs3PM+KqomNPVtrL9BMW
lMEyAXXURh9sBPpgLYP4BLCCINhLIzEqFcjvFBKQ9gC+rtHmJonZU1glZdg02iSx/ePj8h+IaIbf
zDzay8G3N4L5dDw7jzbjFPTRQ8F64dHPxZrVayyljloxo477WZWh2r6sRVQvWhKzUGbx3O4w99V/
4NtM6J+pK6Ftj0C2w5yk6Ku4wdz5MAbRxBVk4ePhRA7Gws/X8eOu5ur+2ECJAaKbX8XwUyJaEK4l
a0E968Yik6UNtcoi/udhLgYmVYCv3s/Xw6/QeuAclHv2cko+X49ueysXBATESAM8nNXMkOOqRVyV
RtGW2W1GyXi85pfjF0SInm5cXi7T247LtbycsFB8pdW6p+zjK3Dgjy8t/9MVXwzWwI3z67aGQsYp
v/JqK7nC4tfiuQW8j//ag13GF/dJuvxq4plFtMivhtmMxQ0xOcvu03Ah5H67rViXWvS8jQr3ItcA
fSombOVXKflJYSfN+LyTOyRn7L2wuBoRa7dIrmQNMngsCOFlZnSyvUVxERbLw4ZGkHUvAkvGnhQ3
lN9JpcpfzyyxK2wNz4gziWbeJ0GTZ57y+Z0ZVgCSeoQKFkYmO/d9A7gQlvKrhkYpSpWNwe7Fvm+v
MCUQfbQNAe8bfcCNgl+K2nS5XcCpzUabqxgOeDgR3ijGoIzua1HeylOo/gKGyp8BPARNFsRThWyL
4VEXSgUIHoX7Asnbt07UKx7LkzcYFKoxLLJOrJRCkuEsRWxUxpb5WI1oA/06+uHQacmXeRtya7Qh
i0YRnHJKj/Z+Oy5FZMch1+bjkTRDs/3+8M3wkwvFwzbz752Rfy/VrnMrFxWjdUZOqlEOOodMM6FP
S56fKgKe2D5DZavu4+vWKrKKjAXCsKvUkFAIg9vO81BpyajtHULAPx/PUKlz/xnTzwboVaHwljJs
EeLCJ2scSyeAVJHXq3Tmka98DsbqAkpar06HFek6A7ioVgIt4UJjN4mRA60199gjbQMkOWNxQ43f
QjSi7wdFXigtUwKi5CudU12St1gJj2QUWw6FEkkOj4aC23m871uryLvvtYJNMaH0hHrIng7eC60q
ptf4mq/TebkjqRdwGpxn2h4j6s9yJIdLPNE77tO+tJf7fW1fWqEoU6rEWGht6jjXBeK9K55GlGy4
jdqoea2VaWjEgnEmLWgaZPqlPtWy6fPzh7VgZGfU9lbKXIlMhGsboAuBAiic8H64m8iDZTEDydSV
qtFMJaoY4NhVM9jx0s7aS6dAPyQYOyvw0DRM6SdYy8WRfToulvNMUG7g39GITG9mhemYi8kKbvYV
VdFaCZRx52LMLQ1ljA5DRNa5OYVvwgaLNQTQFueq0Vq0K40qbZKjB/dbE8etRWyUIiNNtp/PqJ+t
8vjHuylMhVmEyWoEp9UFg9ZlR885EUuK1iqGKbTyaASM9KFoFd0+A/5dZkZxPtPOYFTPiR5l4afC
0Cqwy7d3P6l+wYnqG5V8GK/0AQict/PDKTX0EK0pAG2x1PbIAA1GIVSfn0phdAsasyk4qSSxNj1Z
Tj8u17Wdu70Yn8I1cDuPFGvO/azaWhFFgmwOAaUT2jyX8PWqXjGHlhMmMHb78PppVWh3GXr4ywTn
S1trqAJxoWGnL/LteV+AE2IDMMAT4jruyh9Xmi9HwXz/TzalHneoSEEhQVTBNylE82b43hjGV4mk
YJWSQlRy1H5qfd7ELfSwDWUL3my2FqniHryBkqYA8asZiPeiSB+53rlPgrY7R5R377jhQABHtAQx
4H/xfp2MJYuwpJg36D90+4ECenLC7+e3tyM54bTT2/F8tzgCaKKOGy4RCmRg8wWbN/wPfWxPhwsk
bHMSGuuEeC0u1SDJc9p+g1Qh+jG76xnglNzmbtmlirgUgvM3vkYPT5Tnm5Hn6fQYGOW6fNoGCIr8
0NCRG1l7P/EgxEjwhzEStD2aDfYjY2j2SZcMBbECNZEyXUcBob6jx9ws2niSBq7nMAOPnPHvzub1
HbIowezr8snsPvGByHaOE0XDLvOX1sQNdjjaro1QEWdQg3A6ElR5Ko9nTHOwmIzHMpPz7S5c3vxC
I+9FFGU+LQXOArzq3Q/FInt9oSJp5Mk4vSyTzHCkc6+3u/el26tLZhuZsEGCIc9/I9/aftCK3wJq
3UpftE5O4Fe4uYznhDft8qckpqTGr/whWz6kzOPQev5FfKN9/mxxEQTurQahv/0ugAOyAG/InB3L
h+ib3s9niA1jgF8SbZ7FB4VtQmhOMs9Xbrxi2SNmanoanbU4Az1n45C4w3hXYlSO5AK8MCoD2+fl
cMXqoWSb+0moXyBWcENcamf4mhECpK2o0xJzUIoLUz/0Y3xFURX0ejj+O9dftIoIopN6nQXzvA7H
2+Lxirg7yLU07ROpJ5okTw99ckhf1fcNznXZeuwd95eTJVyKKA6gSqSWCGa/+abC3Kr0+Z5VZJ42
a+X1/AbI2EKW/njcFwyOgoUK9hM83zTXuOavmVXgQOMwn9Srr86KzGer1CgbEIRMtiniXxKtYzEJ
q30waspgSIjTYWbqfnYW3+vrRAXJjl5N2qw65mjqFlAlwx3RWZfVYcBz6WcxDHo7xJn6qrlTsgZv
sRSj0GUXFLbmt8WyFEMPPpWzOx52vwSgL6wegMbIiUyBPL2XCr3jAySudP5ELEUltFpyIk/9cLB8
ghFPxkQvG3WfRDIoaCisMw4WBi32yWwAbBV9Mv4W3oxFVYsNrJoFGM74eLEdHtZcDBSmruSRVJfW
axK53mQNGaq4w0aVK0myaC3mp6whx/Mv0F9IzP7e8+Jfr//AX/s7iJI4sSdc8R+dR/g3cAizBxji
5WJMoLQtsdft8QgZy2WTjCUBDnEfAwDsA5szSNFgLSyE1bdv+ZWayLEQbfBTxcSZoWwqf7pBMci0
0/FDLB+NhZIskUExjtAJX5DD/TAmi0X7XMhh1MS+KSaf6sGdCZXV4YrZ8+ZxE3Ah1sHgs1ZJBFux
zHi3eWkwJsGLWvYQ0b07VeOWO7xBg8zJeNShZHNfjlqVd7YI64raip0tmnlXRVvDZ0GJTF8eLy9H
SwQ3kUVFmswT98p2lJHx0/oEn/GX6fNtOn3NuWIvhOthGYhy+4ITZsAfWfNwVTG3pzDpI4oW8asX
wC0C7M3p/HbdXpxj+gHonoApmZ1I57VxySjplYiZCuSPvHuPy7RxfKCIiUynt+Ph9r65Ho2aijY6
teUsU4sjwKn4L1joL1Cl4ZTxlD+Rj9GVaTmWyD5bJYm4myYuIAds8AK+YQPmKp3fMMUpn+JGQAPG
lTdx0KMwj30ZHHcVifK8/FI8tVGOAASgyqSkFXrotm/2rENvLJRpQSol/dIp5AaQApJCPJ6wpsw9
UTOeMTfRxwvLNElwPL9hna5/D5Kqu+O0vRoXxuQuzVk582Sh/Je4Jt4VmO4BKMd9GrqlME+9OU5v
CN+ezwS0MZ5YplWNoihpuQyb6D4eTSBuvR4PWCvlR/O8I8jZTaRDLEDTNkro2eZExTUPe4gBrfxi
NCCgTJv9tLs/Gk9YRloQ9uM/t5ftabpBoy32DK25sYHntoq+t9yNwTan/ZshebzvVaYoL4GP/3i+
5s1AogNmQM6mIsLWbbpbP9sq0jO9kFVEzRNXxTq566Dxxgv3wYKU3Y/MxqwX57m2oq8a1YOvsBWi
GIjaUg4aOYeEihmQoBOVyk4Eq66654IX4cyfVeVO1CF4R5SoJ8gn62RXmVBpt0pOGFfCEpXrE/iR
fb8aWdBkoOSBA9sYSS55GEadYEthuGHlQaNyFLGx+KWE/7briFByFYlyrJ/vfqXMKUZFy+qPaArB
IpEV9Ij/v8dtu/nL9pfHdSuxDC203TYGW0ssMSsRSeSLFo9BtI1iC8zgRo2vC0V+aNxm3VRRJPQ5
JJbp8bpkmda2LRjt01CwENShcSoW19zd6ZTna7gR7BnIo9K3cdTnTJFiKNOdaMlULxRbKlzIy33p
QiqF3WfSw7MW9H1jZTb4lXaHCXG+2Biu7bHFI9Tz9n5f6nyhJ08tUAlRbnlCLHgoctrq4BHYahcp
wCJ+MX+c+0LwNEfn1h5NFK42Bvdnlg5a0sJNWGXad8qTzx6NQvJffbJSE4tAf4I5s0V2bcxAlSkE
lxDvX7MvmTiVWcdxItYCEgQySacwaVyJmqQ/7j+gBfl+A3LYTB/GakwJIK7LiFqWe8oVHlGrPGm6
wRApNPY12Pb4Sp1WdolDW2kofrF6dLLpoW0ViqKPg1FifFwpBnhyiC+RU50K/wRqzld6QcMIBvjX
ae24PxEWylg25jq14n7SVHeI6HsZg8FG43SVYu7PY0iOkW1zrYpCGycODEsK0hCXTEV9RAhkikaH
mvHIMwTAcYJYHYEWvq/5uk3Xg6NHnP4Lhote24p8SpMuqjRu/X7Y76dQZAQlsgb4LYKOU09Xleb8
f3wc3+/3C+LxQsz7fLrdrw8EvDmcMAuNU7rNXJ8/Yx+Wh9trJCzUtP/T6X4OOQojw4EredCMuNIQ
AQ5O7nuocCQQmfhHmOH6ATBAxun9vI+q921TTq37AmhCpb5ic5gRHaFFurhIExtBrogocJos+43E
7Ri/5gaDcLOP62ETmmWya4yUDsclBNwYUoDvDd18O2zjc1HhvEETFLTDqx7i3B63hTOU319ygwJp
fkAkJ2R8P6mUswGYeHIWy3lrvXXHVFPEVbDJWaA1bI73q7FGw0/LZvXuCLBmwFqbX60h6lit2ir8
hZ+627vC5CPPCW69TLc07YRGVxKRJRjqYE571Rqq8/6KTSk3nDKx/9N9+liivoIfX3gwQDPYis3d
Wgvr+Kkes+MCGo1jovczM7vZT4bUGNlBOJBuIcD4djv6uGwOATTUOFYRVxFwrHEPBLT2X/AYTuDi
P8uz+TiUksW8nStIAQmb8jj2LQ1jfEoRXqkbJzfy35SRmKsGL8QngAEuF1DXnOn+P/NdlPg2Q6tQ
EJKvk8JvWKF/8yjyVPKQbx6gYdpF3BLbDW+7TVkaL9I0yibci1AuGW8P5mVPJ3t4DyriMeHNPpDI
T6DboX37T57DLAKJTyFsujiZgJoKDUxaXKNnwQnLlX5GjrvRP1Bu/Pafnz9t3/6LJKnT8vh3divL
yHOIqz6xzv/7T3/5M/G3X91XeQshgL0W9KBZnMyuivihwuuC1lXqaCO5llc7tEbPwJ/RivXfL3zZ
MehofDv/ZawtMD5nxFEfQ06sKIr2v2w9tIHzPZbkTVlXbMJwWDqKCpq3YUmHSpEOPkJAZB0JCkbf
nX95XAKYGzr9Fp9FGm36aLN4SNTL8QFBJmewuWWXRq+Rbm0UwUoFRV5Gn2n4kN0giVh/UaBA5LHh
Aqf9hMgL7vbyF9ZUbIkhzGoXdQWOPd5EI9Zi30KRJsAhwSCUQMUYnL0B7x32cQiTvjj0eSOGBph2
6GQ1KT1sc8mkAFBAX3LiE62l4wkg4/Jf9vFL2UALZqSj3n2+ExAqVuKnElWBUNDBAIg4TEajPCzT
xWXYDoCuMidObjmA1DDbmb5jLwuA070P4YEasRnavnfsJqSVOL9HTZrxDHCJt/xeeuUW48uB6em1
nIU7AO84xncsubohXmn+BPH3hSQh8O036wrjwUWUgko2/2BxYujexU+hQCFWrbG/dVuc9wyr8L5Z
n4NGiF0n1LA1LewG9SHT0MzowgZHJ6OXhBVcZMk0jX+p5zYX1SDkK7PwWEzSHF6n5zApukluo2F3
6DjdcHqpD2E93n49HI9bGC7f548S7wTeKowt8jJhLV2PCou/b29/xOfhrdmv3PG52EL3TdCmbIrX
KNB6wq/nfy1SpvDcIy2Q9jK+LhSpMqtiplbw/OvH45bUepSoz5dPFEabx+mXE0wXpvqwRQKP2xJa
Z7YiBDn2+YPFpwTfuPF4hH/DJjfyRy6XLEY5V3uj6u2FY/MhoyyGtTJGIwAIs4sQ+LvNy+Et2AF5
MU2GBHsxbPyx1Tyz5bHFNr+joWNbgmOaoMn/E9GWpa27TiG2qTj1nSPkxWaNS/yQFX8X0TBQU+B/
bShCHHVWzVEHo32V/8VqrjBikOD1cKSaXvdXaMm2AgSlYsBi8AiucXN6uVnhBXbchUGOtpwjKgRK
qAxbrk5sylqLTbh7cxwWZpGd8kyLhh2blsIOiQWFHmLZMnNHzZyHuLxw7ALeZzY8OrBrl1b1XrGv
wCO64VgjrMrCJ/PNI5YjHn157D8uQ0fM9RMa298gKbXkfIfe3z4Rx/BWTp7eAeP9/Gqwf6tEC90D
ecF3e/n0s0pPTrfiPN04r9SMAjeKDwTE9x+OgCQHY0/u4YYl+r7UF3j6cr/ayHhNzfB8PVFp+Ik/
Oh9K/gT2lHiH8mW6f5/AD/R6J5+LbEUaHQiv9JRHVl8cSku+NcHBw5uDlDPWLJXketSB+8nXc+Ow
rVj1btbSNWOn1laKhnpjZCEuMKrnhP8ePue+CRkdMpYblAKI7e12dqYeVuF7wootCsDFBMwDx37d
Ho6VsXpMlgkjIi7pEYDtNAIu0yeb7NZ6V22c/zArRPnaAUtjZ42SDdzuHfnyGsbX9fxrMRdezuLY
W+pDqHOmUu+9+d6C/4VNesuxZE30zrQBxHhw3AiIZGut6OCDkmzrKFL+BG1/kuGpDxDDiNhBeZt2
j2sWaWSISCPoFPCtA27D0iyGIeDT0sfsVdAe1i5BciEu0Ysl0NzAsRB53MkhgKjSEqKlC6h5+k/s
4wDsyj/5RNkflmLTQ5wQAytiE4zclJPXkME1eh1oT3XcUy3skKcVSHPujYXiFQst5Z+ZUEKz/tsQ
0Kz5eZMSNIFCt3AdcQ8iE0UPbKcfhgDDSjuQgOiE6IUZViMAMQQ02vkRxHgqwDEyMoNDQB7m1/DK
5wFj1uENgqA37LEhINLSKtwwsnufoHgjDpT300yMVSJliAiH4NtgnZ+Rg40zdcqZMCqw9+3AYWuY
uzI21MbXbSKODoUXknWMFSKRCTNshU4ZAvY3fcsR+HT/NonX4yA5JAadYQUfcCOLwIJbGwJUNq3T
YAJ6nD/NGnEWLzOUmUcHxPPr/WhFucfE1A79klFjOMnhNJpTQ4YTNIyjzJh4Op2pHpjqswNXIo9D
RS4IJ1xFPI7VabSIcUBk9p3QueXkHRfEgHOFeBY4yuoV5s5A0jZvtbdlsqFy5uCBKxN6zhd0fRXT
ogIUA75ZlzUrB+2a3XXcsPEIzA7KAOBkk+0O5g2a6zWDEsanEB0eJxre1LaHuF00kGLBTaqZqsQj
xuAf+mzT9zV3VnMCVtSTc6HNLj+LjOpsClkN4Rns93/9yx9+7Cb0UqhwB2DPodt/l68g8tO6Z8Y2
N+QagwPpc62Y8X//bXt/j3sxPi7mpXTw9Z9AGf2e0+o4tQgoILsWY7xU8w7pyKhcvQB1J/mQOwKC
VUowKi2zuE4ILrCbhJs+WfUjQ5esWWWpsrLIJiVt9on/+7TdS/v1jpYa/NPMLCKM9dFqdUrO8cvS
+LKLX/I+EKQfvXCKYry7OyLdYyzUhoVkZCZuoc1/SbSDW2C8XP6yMn6zj7/JugE3v7TZJv4kUIhz
cmY/2hjfjvFbj8wLn/5XaEN1ntEbkrvdTgPMXpea9URlxzcfbc1/XUXlLOKRh9sf/vXYHv8rK7Pw
d5vEOwgFH8vT0vBjtnx5VOQJytNR3hFUV17o4RLRThPFFWE8WtSfXpSHChxjOTZly1ljNzk7UKkI
g0H8g5xf3L/6Ztk9NbsqrJd96ezvMBVwOt//CE0Yf4DwtbHQqPg8TrrD+/ydBA16X8Yr94ozGK/b
+GX1O2eAUkfrQvkirjAoVEL5h3AHX7vValD8tvD55uX4sC4yGpHB318MJVsmnKZh1LrR2yHfeO8r
RxtFgQs/coslC4jS880ZlpURVea6HrEtroyjYMtP6BFdJ+fA/H6pQnbsOyXkQhkYigYIl9eK4Fa8
M1A1tR9LvDt/kJd4ZmiePyxUh4xFNJgEGHdq9JKViMPBrKgCGr+FVn13u/3k5Ma0VHE3tmwGArmX
vlZle70CwKTPSAdDFWAmzg9H+M7UBKkCloeRuWrb5JydCN6dqAMcH8IwNQau3hXZ4Z37bSdCoovO
tPZPipfnKWysaiVv4QTbRGhGUER5jQuL0WBhEsL3E83r2tzfnV15t1mjqsek0Lb0vZHftlQ1hU16
t6Nd/lz3Wv4JyX+R0uo6Y2P9BELw7+fvaZwQ2P93MI44qKJl1VM1iQ4ehCCBlYwP2yTk4T2/KZvm
x29qzZGmu/jpOk3/a3v8hYC1l0rTx3pIKk0HqeAC7hBJPiuX1lRKuigMpuFkvlm2R2RZKYWvVKy3
AS7BhqyF+UY+Z9Epfp0vO/M7M66l6xRvQa3XBCry/9ScZ4TSsx0UFQG1ZpFz0Wpiy2cxks4V7Izz
/HFwF3bf3n6BG/843KaomjdBN2+MeA9yW6vliv/3X/78j+DPXjeAmB53aoiuWuHbOK/Rj49FaQrK
430rZxDdssa3B6UHThAJLgKC5QKH/OdltN1xeo2H7YEJ6T9lo6X4XfSvBNzkbbr/Hjo4UjvIWIS9
lVbU0oMVaHwU/bMQXrAKSJeaScpyuVnAyZPdOwhIiwDjOhgJr/10yiv1SYsuCjO2V4n4DqvIf4DL
+Q+A1KO6ih05oYix9/0KBuhV13BAGx6apEp74EJBrUDrE3ZGHHeev72K8eKrNEAS25XE2sDNAHQV
dpvfLAN1l5kVN5eDddoinpZB8XkB3I1T2r4EIb8Rb5OlzWfu5pNaBmdVGc4h7SfCl4vsl1tnP+2O
Ti15yC687OzEFloowqiLMVNuIXw2VFBukXDB1obiwUTa6umGN5Vxxz4InkIWvO1WnqONHwt0PiaV
2+fHy/lopFmI8ioFVD6azFBlkA+D0RkaZYEsnWDox1isixj1DDY2u9PK+HxQ7jP93LhP5kG2FPgx
+GaNJeL2RWoGQ/X8LC+f2SI3WmO07lNQxnpZULTKyYLg4iFHX5VZxZz+MFgFEVSIQfxle6Fwaihd
2W3t5pOBUwQidhMc0T/62Bd+GQ3AGBFbUtE1l9e3CWoJm2D/+fmnff7bKnwbBhxSsMS7GwQEAlqJ
bOY9tTMs95mWo9acNIWoON4d5h6kY21501pJxW3aXiOaukeDXGiq4/SRhMGYjpt83RE14wmvt0TU
1oX0ByBfW7FszWyet2X6P1vppy6lrWROKoEFPHCmC/6991bsl6tEX+8Ym01TckKyxHLUnRUzauPm
cDKH7/jcXu60p7Ss1QgL9KPy+M6f/xOMJf0IgIPUvIVkKttWeKyYMQUQ8zF90mpfCLc5roVOBw7y
8X12xnKMbwhBqsbXJs4WFKHbq1EUNnD7PmiAJiTqk8UwzGUv0yqAb4fkFiE5fLpn07lYJFUoICPK
Vpa8atyRhjMi+9kXLnlUEnAKDSw9/ROOmUgrTNf/stKZY1UqIgUrH7D8/GXCyX/Af+y8fkyASmDo
jDGNQnbcjXX4lpR/AlTGqmLqOimmhiOKqjQqLcBiHHNOGpW3FUqMCsotN9sEmcApjm1Mxhvc3Ssh
3HmAjUpncejVbPIO1wuuCrA1acC49p3spzfH2OJ9tojRYeXZa6XGIo2/JP3xlk7SSoi5oRpe3XqN
XtEkpJdCXOmGUOvuhXH8MjRO/TA0U5OUi89ANbgddMlTrSuOuGBTYpDaf4OWxKuvP9h8214Ppuc8
VFrhuP/6fhbw2SHovJGNryFkAsTx3Yg8a5ARc32M5cSv5yuM5rZ0cqtALvyHoy3SUFSZBaN6DzTn
mOyFfP0aGqRdNJ9FQAweNq1KpXFSxkgjXKyPvo2AUKLr81W3IaC9n4idcxxMexuUCVze2ObovbEd
HgDGwm7nE2bQjev5Eyxta5kyCQ1U3G2CAbOQyTMWiP5EEpr2KNB0weg5xmE+2A648HJ99ESFiSZP
t3SsYv49xgVj9Jqig9et49EbAGBN2ZoVmFVcxrJ/geQBeZXD+XEDcfPn7e2Oycq/LyzUR4XC5pLv
sckzG37ZxS85YgrUd6GGLVok/3kbPhcYrHz+2y+HS/Zb1NX0Lbti6bebjxywNi5QKHsP1/cPiv/H
G/yHtRWMutFWWO2JnMTucQ0tbPk1mvkbZEwxDFQs5z7Zy5HBNf/Zz9jZ+DNadVb3/qhkF2NYnWx+
76CE9PFSjV2r1TOiI8ox2FvilFsQEwwBwKN4fnwcbxyv51K02D60meyCLsJWGhTb4r9N59DgSj7+
4eb08olGv5H1tT0iPEzWSR/G4KSXRUOelQ+nX3fudTbfoQ/9b9a41DqMlMZVhNkGVSf/4+9/XrdE
NzQxWtCKKU3n6/4AE2Bv3Fy3lJnA1WLsQWYW7tvr/X9ABtvd+l9Px8//9T6d/rZ9m/4n2X7548Uo
CKw7hBgZ5F73ALf3cXAmA9asng4EFMHNwh5Xy9hqH18AzJEydDg8UGfm9xTvKzFtHQtct44Npmwl
DHxctPGyhajxT2SVa+LH/FIJCunsFm738+VGj59/qL7gh5IJgnCMpVso+iTGVMqrI/R12kH+Guu4
ABd9gV+QQ6vDj/hXOWb6sf1x+Hh8bLZvWULqxlZ5tNhN9v9n7U+b5LiRPHH4Az1WNNzHS7W6Z0a2
6mOlnp1987eyZFWSzFGxsjqzShTbbL/7EzgCR4Tjh6SmzbopHuUBwOHu8Ntfz1F6rbHR317HNMOI
7xAEuXz5/OU4dtE5U2nPxprHwWVmMXILSo33xJ08ZF/sSmNAjZS1jL0XKJCmja9kWR+YQIQrx//b
+fIfsZ7jb+CKLK8E2VRs7gTreBtFVnTevAkVVpRV50lQLI/P57ePnyZ9r+KylSSbvPyGslZH9Yy0
cnMTnWdnDLh7zJCyu4XcTvxmYejLvTcWYkN0pVbihAYZRNLmnZTSWGaPP+MqhzTNUrOEuE3E6E7E
mf5q8OMva6OUXkQen4O9Md63F8Txv+TKwKfz9YjRZ0VBX6Cs3EmT0C9ux6QvMosHylonzJVOcWP8
uY4m1pzL5LxJ5tLb87DJYFy6XqJMyWUTMTd9dninXuRkssykoBOZrD14dBev63Sk0Mf3H29jESUY
IS3G0v9b9RFdKZ5XfWSMrImqwbq3Unaq4aJRf59skbl+KCn9cPh0ijH+i6yNVTWm1XZv349l5TNx
UnabPrLZSnBnpdH1N9SNx08Xcm2i5KvEWYyI85hVTIekrTb1DWLcbGN36/t7mwogt5eeXUrfrar7
X37OCeXz5KVFK6Hc4LF8r0Q1S6OfkjY3idZVT3M7X2SNjTbF/rHzwWJ/vMYUVtRJte4yKC1crYnM
q90SO87M86G51ETaV5bdsX3l5GyyZmna2JRy63FMLdZOj8fjhw+hvBs5HF3XwEIRqM87ix27pljn
hAf448OdRHjty/JY0/F2VWqaxgKTprWsZqE2OTF/yUV1qXHN6orDqVexw2FsgxYzW5uU4PKB2NKt
JBOOv6JLg8ZG243ezei0ykkgIQQ9dueF76jynabTn7ZCM+3yIPkw0vxwOZ1HKSHxM6VtY+NmGXxG
gs+U5pHdhL/O5RmPdU39H9c+L2M08YKmpt/wiuwa7pwO10tXJ7rmlLk1QLix91+Depnu7YwTEtK+
6pea+XoNEVwwEaWEVCn7GTihPcjT4f3xafVRgw+w8oFqs0Q38F+iFzgEjUKvxlRkB7GSctxln9FZ
zpLSX0LldxaUAL1lT5uOyhvOGDdmTkcz2xaicD+IrLXvdiSIHaVI4xVHFtPHNPGxAY9wgG7VXb3e
31yIw8zYvtBPpyA3fLHmE026+aWL4wTbLnww9YEmvMiOFxiB5BRfm7CU2h5pzbHLI0Jz35Rhul9q
eEX5i5fXZnnQX0MD02kqPGe1p31jB4Ww6Y+n51/aaHmszzw/j5VhHnPDU05C3wogg8anPc91fQm1
uePG6fFTrv1UVopqlWjKnEuZauMzxppBUT7k+w+lPQmwB7uCNsG+Ba0fl9f58yGGdZ++3h0ec/lq
ZPiMI5yYFfdVcNX2xDhdo+E7a3Ug17yEtLsqFtt72mYJh6D/YpDHrKGVxMDnddlfZZRQfXAMjoo1
0QScr8A3+SlT5EUqmePOEt9OPrjlR89vlwfYMFuuLfLS8SonQ+wVzMWuvd+ESrWu1bzsLVtsl5p+
0Hd3o7YfBJhjBbLaBSF75Zpz8QCoJwg2HyCMFE+V9mBqTPxIIdrGIR2qPDfz7R/Ob8/oMwWjTbwo
XP3TYp+GTsGxdzhsWhU/U4SM1JHDFSlmVq9cFDfga7zbVM6FCs4A1JfD14Z1jZSJhnbJ5kox75A3
gvuHc626EF1Nfgr5K9sGeOn1DTZ8aIUHSsHMtrp3/+qVjDWU2ErZpLWYu6ks2QQ9p1NLJPHh2tvu
dMnGeK1uxYWa1lF5aTGh9/vsf3kEFZHjfC2qEC7kfZ2fwnMYGCC4T6aJT742Y28qhGpJVqIblILl
u86rqm/egarwaruMRmHdXFdptxpl2YL+BfV9bcfkPmsJW+Pdjd9OXoq7w8vppqE4rGYYNqUmQc9a
+0T9HU208bWqtpGzXYUaqElTg7kJf15up2sSufw5lPUFQTr6YPX48658KcLOStlqRG3tRu7KpKYm
Yn+Dq4o1Do5GaQmZTuevZfBLakl59z72zJ3Oz7BEP6Fv5y3O6iCQ6NRh4zJ7EJzLHipBzOypeXPZ
IxTaer2hkmxLTTpJiv2uXAGlKapBGV1SnAquqk/v/fHT4ddTSuf7fH4L0ZBx69+U2qGJ2VYV+8tx
nx8OwWcUau5AiykJBkB9w216S+WIlmLqbubI8ekpT5m/RWk2jFAcEpX8tNzpbcXY8UOWUKSOh0vQ
aR9Oj/LO6Bj8urygj8jOwGhT078/vGDdxRQFtk2OOz/9/HJAULxTe3nfqWMmSeIX3FbLCe77P5wf
TwjKMkLvy8buML00LmeIDXd4NjfgmVIXF53gax6VGIgoj01uRvmen5Cta6p91DWHfjre3vYuYoYT
dtZlOFg7Ll008fj8s7VMl5B1z+fpayupmV6b4WDr55JHavbF2vEkhLVc7+FfNNi3xfzPybzHX/HQ
PWmIsTPNyKxZOTyvw7caR93D6fLw9nS4xL7ir5fjTCVxzWAd27paBHLFG8I9UwI56TlBOpoe9LH+
a2yt1srA4EzNle7XV+COE7KblJQV8AUmj/+BMwfSF8R2YlIzdeBmso+9jGvv50DEXDXZvaHaNtHH
I/hAKTpq3B/RoAlpm8sznSYfwhbWmpNTr6OTKhnm2UDK3/ltvJtSjRM74ykn23kMhytIq0nwpY6m
GZ7ya3L4f0r/mfR6jcfZTbtvml39n9MRmBRNKUXVw7K6erxs9NUmzR3P+XBlmkvj+UgfaKeaD+F9
nQYT1CDBTPOFUJ72+e3zWOv1kpiB1G1/DCqIASX9yccDs2piTT80JMHnga2xZmi8viLGByX4WCA1
XrhOSNFNh8jgK73BRc5rOgnvXtwEnefmRt6Mo7lj093xlzQxgyh9KdQnLwbc80PM4l/oe1g3V9Nd
eVfBkb4T6mnC6fAQJVfHzQS5JfIj1x5qfAjTDWCSBCWkNnTRR4PZwfMhQtZvXY4vh1OI8z6vHarx
0Xyx7FJSIfHJz4fLL28vY+TUiT5tH9WI3aAIHS5fYZ++mlTTDxbaX/Ql1aUtsvX462FYAFuzYXgt
J0luypDmc3g+LibN09efjh+vQUE5Pv49pEr92+ly/CtuOCMclWUeox0hENmFO8JfxAyXy/kJSG1N
vEFplkT8AoCkmu2nAXgzyGZQdvTF1oDqRAdIrmO+VcT/35p/EyrTgvERmvmcnlNG+q+hJdlz7gEd
fC6vsNFonZm7GOQu/rrRez5h1VGZzmGTgP95Do6KVCEYQ0djH3PcRW3TFt/lRVVYHTf/8fr68lM7
CvqAWjQ5qYgBMH2Holjyi4Ydulo32c46PH9+Obz+OaiwPy821wNwQnE+eJmjLfz9+Wnj043VF9kO
eYxF17Gn2vkp/Rn4eQXR6L374O2fqs1Gu2FCz7nffpFNp7k1UacCB3PZ1AmvDAU2i1FjokeozV/r
xHaMH79+Oix/PFxrXc2y075zJir716OW2El3ZIyjLkmWmKGzYcfXOED0SDAnapTQTISN2jrLjbG+
XwPwazbZf51ege3T+FBrk4xAv2+vpQNLFA6z1C/f7Kg2Yww3iawoTXgck4jNRbrHx9PrpIOUZIRD
/8vx/YLmQNA3JlfJ+pnG7b5aymh4ajUfoxosCTmSC/YFEEaGEEY5uvQtaRBJ3eeEg+39Ypz/clea
uaORVNTYtZgiFx6LlIH9/mtgIZQtVxtO2phk6nYjI0PIa51PC522vrYFaVxpm2Zja7F6mo4Dr4zV
8VhNDKJ6MJ+OHw8PX5OPCA2UK7sKuodnGc1vl5uJ11lF1bg/BFEaBPMNDWi9JI6S3TGP588hXDpN
uWyCGWEXLkmBSCA1OymnuNWk/ysql1eSaMDStpc7P384fXy7TNBDsfbm3p/zMGF03Z7IwsytfCpD
jGmZLLSsTXuez3dru4gUB8tNgiatF4Umbm6FjRNCLsfL2zPalySERonXhUDh6emakoBRQM4SlZ/t
kMcYs7ycHlHnB1/7+jY4Ch64kASSes3Mpj17TzkrlyfEIl2gyrqo80q2neD6GDpwnR5AP7DUWoQR
nUPD+4XcgNWP18zZ63rKZvvx/PT2+Rl0UaW6KdZmDftBuyiKy4keKcTQ67VdCLgPR6Bk0Vuiehs7
jgTxdMBDRTivT0ETGQ/v2j4DPjSrSkrb+e7tORW/hwYnwEJNsy+qHDXxl7pIYs3r5eHuy6cwtWth
qTjeo/D/5PFZPl4u2UVZP2DUECL9gLiVEy0qS0McQJiWMDH6eRhfzpenx+XZOvwCNL1GkY0jS+Vm
UNPpEQXbG+PP1MZlfdfQu8Ovi8SZz72pI1NiTfJapxg6fsSOQECzcZTD/+mUGC0YRJ+OOIrZPP2V
GKvSnNzDAIus65er9zhsFE7ssWBN+/Ku4XjozXJ5/Y9F2UKjeiyhOfz1ciLafuXMjXP9x+R/H7ud
/HZAetPFZzWwYtnSw8IBQdG5QBvKCEIi1fdzYcEwdXUyjVQRyR4pr/fz4aUokonHc3ZYcGLOehvm
UhGBbAikO9UnK5AGF00f4ec6ZvkuqPJrf4eZPlbzMJoOQU2795SiDYyJmvjbzu4scbX/i7T/RVw7
Kg2kxPkXEki5ICDAz4lhvfXdqZH83wDNUM3tCu2V1iTn5xu6LrKmeVN12Ne5ViUVb9VQAHZqx8XG
zE1jKyOAMcYZP/bwCU/MVX1Znr0/5+FW6UWJiSQgITuWYLLOzahWor3Llu/yy+nzgqPljQ4OxEMa
TPRl/ME6BZXHw3HTFwyvJYDXhzPoPqe9IBrhLRLidCmBxOgCASeTXeM52VeRbarlJnPNQikiL99r
5gItBvWfY4eHx+9//jlMiLimveVhg6V/Wkp//W28W1MDczUZ7OPT+X2gz5eYLIfbvcWPKGKEbz5y
II919lkcKAGOKsodxtrOogf9PV9i7tuCc2DiHbj2VFn5yxtKKRrVFXH326fxbZoaPm1iTm3lXRbS
y+uffgcu0nUhXdthaR2WlRqfhlM+o7CskWZMZeuFZfWxOF+OD8fH8YDAuEVeWzdGfd61380e1+BI
iW8B7o4QP6hqX8maQtyiLyaHHfPo3BgYx/Fow0t0vVFiMoElXSGn2TeEJwDpUqOiFzn0y+n1+/Nz
6JH3t/PpOXWvOf54+DpqT5KEh932nNzQ7/H1hzV2AWrNEwlbIgFgbSSwqaOZJBOYGg0iKK/hzyS+
4wUgLrV1yF1UOjr2WsfFzHx9ulQqplF98ZBmRx9ju0SXrA/et+7Kcy5m5l1AsqoPWg3qjBADtlFT
RsKRuIJsc317PyNyVfgwGF5a7D8HYCXBIMFcDu8FGLMV8KHZmOiyIp7cKcdJ/lakOkreHR7TqK8f
11Ts0Kr29HBa9KJPJ3BTUhOdfP9wuPzw/OGc/aZJ2sHBhfFL5YxN0W+ktTVD6O0Copy2vHXB6eJ5
/7yff3l7uU3SqqqusJjsNnrXb8kW0n47d7IRFo3/5SVES+G+mknuFc/9I3WKM11LBzTwRvEuCK1u
EdXL/Z0+nND9mfoA1EY5PavhETeRSQShfoZt3BWWxxi3jpAcP7ZN4YquV1jm9fxzUmDWZqY5bPl4
/HB6Pv478I25Eh/fjHXeLxLdTX/9sF3jywlFRZUjvh0cUDUr8EPO8LmCaXu6jGaKzqb+XUgd3csH
07b++3rX5uitGAJLlJIfzYpkBKi+6fR6GxNGmAV7E8RA8/74+U/k4cuKC/0/gYmXulxWk0h1O7VN
cCFuorL5RSlDDN+O2TZBEJ0vp4+nZzDlS9Xp3760VLiZ2m/kqH44pJms8S2f1ozIWICccJ0Rvu0Q
wm9ECDi9v+n0OzICX5QE/c/wiclRc4LWV/1w/WDHVDfej+6Gy8vbxMiNZKWImaPbPW9u/8Zdq+3E
2Nax1Ie9njNagNKgOldH9nSFzvZvXbVz3HRIin0NuR7D2RXRAOLEMIKoW8WS5OjUPL/cLTrS+wUB
vwwJPr6wVY+tMyuCy+vfgp73cxlecdfqp0WtnBWMRE1QEElyqxIYaf0B5diZfvJCknCLTXf5+nOu
4ftuLd7YuGWA1Se6POlcVHLV4i75ZACo1pQluzGlUi/x8+unVV8GRk3V3tSW9VKaC7bNWDPHIVrD
cuLwOD+DYrCoT1rC2ksJSVFJzmGt42/Hh7fIW6jnYqJX2Z2xHZN2VzyHWBGsM0EaB9peYW79mLUT
APDQxwMXaki9CNeo2/XtsrbGz4pZ02TqNEnor/ZhW3kam4uh/qsJVhC2ZYgNPC32YHIXAnarlpMM
TUJaTKVIw6J35+6xyADwfozxAVLAx1znoFI51+P8/u796/kADlM20dQPXD+dv/z5/Hh4+uPpEKqm
l+t+DGVKX2dV6HEnjKDulX+TmvhwOV9zwUZ0aCOvcRVOTRFY5JXwo8sHQvJHpZrgGwd7q9ZqHBBc
B1K1CXbI16N1Yd5QCOAcKQzi3WOWqCN4asJHTNVINx/l28oi0xewsEI4oE8fC/d+9/L88emIGIGD
y4pu4dw5AvkSjChXHkd+cOZ27UIfp14WRrwYyUG4mMKPjaB9u/x6+jXY7g/gXIUdQmDAiPqAh/6H
KbHrcF2rUcHjrYnbXhsKvF4OD0hAUfODOtv8LQ4bmQQlrKdiADvPLiD6so/Yi0C204HHqV/xTdBd
PASHbIrCcauOYChBseJ2HlDSShOhgzj4Yjo8NoJXoq2pIMX/kvKYu24LgJn9OIjRx40+In+0IkJ2
e+cXYKEq3Wo6wufzP09PT4es6oTMSHAj1Y0c4prS5cL8y/Hmt9FR/DJ56WfiTdUHN/TQKjL7r1+e
/5alwh+PSWkKJnlUCmffNFV7MKXBf0b2b19v8/pXB54plbPDaMSCw9CO6fF4fEnxQ0AItVTRlw6/
OVbSGkcAY1RwaRA3BPRUnzpZxhZsY3PP3xqaoxyzTWzp+XxDPE7X2WyNuvO3p7ePdyckMqQkMPtc
Gk5kt2uTz5BeCpSqE0V0ORMXqRd+5yd5CB10byMpNY735tSfW4KVmhD4+1gvuCNPmKztB17PL4B8
JVF5RTjxQxIlfH9MrcRqRHQYZdnsBUkjW8PAMUC6/GqhojWzOTTvpEbt5veH8+PX/7kdX6NlbBst
S8HMZPuGFnHhAk8HoJM1hddNKXqe2vl4t7PsABZr7Lt2hb0xcQMIYDEO0e2l501i07TMnUd9Lcbq
+1OYidxZNOCGTaeXG2zrA5XAdcqNGQRmQETfUoHzw1Po5/H2nPxsKDpoCNa55sm2jT0fvAtJP5+9
mHWeZfCOeTFwEMyLCiJ6GOGzW7n6+d/G2fKRtE2r5/CiD3yfS6biyPm72Kk8ZR/OTFbtKFQ/n5+/
huY+d9encylBDg8BYmFLOCWK7NvWydwQe+aEMwybiWmnyDjS9blisYTUk1S+KvTLoRdDJ/QBuzt9
fD4jn4ap4e3c/F/cEiwFUqLcTOxO4tec/LTDjIRAwyl3cPWefEsc3RUUx+dCzB1f4PiSaDJxvrws
ZFMnao1HQyS+N9u4fiO5Q6uYNVHyhs4ztpkoGt3DbJ7CeUPHLMapkdcp4fe7x/8+hHTkmNS5nSQO
NY+U2kmV+eRp6yjnMRU8CSIxPDmLUkp6ZuCAulsmskpmiGZ8OatwrolHVJm++zzf5LpHUh1nEdcs
/aauMdaQPN41/RenSTGJIRVRRksM5M4TWkPeOhwqJ2obt25W0afz5fTPMKB4P5N12fTxGmjsdAl6
dvpnhD1P1BqMB36jMQC1UKvhzf++/vH46+nh+LfTb8enn8J5Uel8rYSLA2jWUPCnEggGveoEUXjy
2+enVBCUq9yDzG0qOUBfikTumqiWLbULn2Kh6Pnz5/Pz5Eu+toNsHtSalVfkbZootRAdLhlcpL4g
ymVuGP0uELHVngMivLRtBdD17f06KWUNnkAFNGW3c6LlVEBf7EIbOoNncfUTbBKu+4EQycB4fz4/
HQ/tZS5Ke379QallHUrf5A2nA611C6lRbSy4QGdjVFevUNMailGDhhBs7c+LaJz0L2+GfVczYsyA
GjGgJkoqUkv2pnVpKpE4oBJFZVFxRFuCFFoILarGE8h3jXNBLcGc5w8fckeO+HDleT6hc/jzY94y
Kr2mmov1tDnU0ZIfQXXiqjYa7kasB29nKNo6vL2eUy+E2GYs91VJ1DKcu67rwNjqbYifXHXnkufy
4fB0PY4/VOftNmOww4dSW2CQE8LWdICyj+oSSmJr0e2ux6BbPIcb+HW8C1cH6NaZnWvhaSoDj0Vx
yJ3D1saT8TshMm7sHi3r/OgVO/nvxwcsg42bWU/93WXFZBjmZWueT/pMnLCbnauHhYVin+h/vJ0u
v1zH5yrDiZuEwzJ//W7hkLXl1+mf45c/fMnW+cDVI3Bt+niP35sIXtARY3p1XviiToHrrdRa35Tr
y/HpadGGB0E/lrvF7cgiTiePjRRCvDjeAmxtGrddyLQLOK/oH+O9zJRuZDFFT/D4hhM89n7QG4yt
rU8jQFMsuiW61AtwTHHlopsQVveNMc0XtDfKZqwFhqLEFiLddIUotDUTJtQE74ZJBkKXrU1MC1nn
2HAcWdg2kghz58P8kUV7D/mkWQaMDySoieIU7+fRHaVscXwriuCE+MlAQTMEmbqh6uxIzPvpeDm9
3kSNtkp8qpgvFSeeYHNqtra6TUTSvJL7vUxoxozwsUVxHW0/Ri5FgDMieHrKGx7vkY/IYCME8FEN
6/AuiaPutIAxq9Q91Sw3fNTx+eStZH77/pTprmLoZYglmuDd81PyyMp1aJMxl4n95zZXkFUWrGFo
SXwijFi8Ph3AA+QKWJu1FFaORDOVjLp7QQRQ9yDva/fNZNNwSLDVxlEWtnayTsfMcdVWv1+jLLi9
eW1E2Nh21RjLpBi6t4dOLaDXQFOUXl/Rv4SS9+C++fPhJYSx4p9/iAPAcJdj4cj+VjdYq9xaog9I
etdCOfiXT6fXyXAB5yRhk6wuuqZXwYri9cV9HtfRhXfSlHTpZi7A94s0e/0pYPnfLufPMUMlrbD/
+2C1xwaEQSEDHqGYZZTR4DsvwFqFDLsrR2i/QjfB5/eH6+kBwJgVpknL+BSyiOOIx4VjT7/GXim/
no5fhlOF0qfc+qloWZg8lay0yRnjWNck9zr3sk5bie3AUvASTP2Kl1WKLpoKq2ZU5JCr4i5Ml7fN
N7v4FFxZr2BtSxQTpAtfpM9KdcmKAV2Lw6ecIco76jHWb5yun4NjVIAj2W0qenekNMw3O5XGX7Gl
2qQdoBiZqZ1YW+J2s1EgEVtUFU6cmHwdi6yIG0mUnITpxDF0n5pzoFmZafWC4MZZswqEx/Pnw+m5
POifQjP9ySDytDOq9KsgO7mdPyIKsqXcofHhDm7r7nD9+vwAvlU3U70OWZJ8n/TEkIx9fnr8fuhF
SafSHVlLijdzD/jbWNR3tSK2uIprhCbGR38bwPtaa9LMvKjtUHHBY9wBa1EjPM2oobfr4+HyOOVV
S+Cnf2lue2dK1UgzNKa6/RbdInhZFyK4wsPZsp1mNFOivRrgD+2814nnccI8OJ4n+DQlWdWGLSDm
F/dUpbKLY3M3rDFN/4sfYV35n9lOcsCy3RXoxtQvw7AnHKAIeimbvxzHXT/jvou8Wkce7C8kkcs1
ywjYxC5uyBGH6UhukcZ14O9iQACyK+y9Ptrhfh9Pr11yAbrcQiBN7+4N3ebmpOAj9cHz+6c3Os8i
ap7Ps8uyihAP6WmICTw54RvLKCcIfWT4/oLn1xHHSieJuylMCM2yJPYKATdutv0bfOutFyGa5EVS
1T6cLtfXGKz4cPptPqeFkdHsGsp/OJ9/OR3/9Jwmkt4QzzdUFz+i9RpyBSdTwBD2USGnT8fDI7Ct
alJBTYI7Xf/0j7fDU41pZ5v6OzwxKs3HMUSrqlb2Bbvy7yES+ce//vlvMV4K+l5RHT27ksKcK7Lm
woGOt8VaC1Ewbzt7KewnQjUnJz8VWmon74jvRxklBI1hVIHJBt+mH+WnwwkF5wWjI3dZeL7/+pza
pU5mnec4vCBSB5pRTk3E+Xp9RSP/nKXCrpt+suHLX6JqESK7YXwQHj2ec5moEycJ8MdZfzIvLNlj
PDib/pAcs5fjh+9nIygSPfeRapV9Bpnrv0/0/J+vp6drhH97vhw/hvjppRRrwgG9aWa37KZsrxH2
b/9OnT2fVfJ1XhnVGXRBwd3L2w3zQh3RFPfDchFvlyOcJmnpLqVDAQ5zb4Sj0hBSPlAK/JQJDKdn
PBM5ZQPVRrO2JJg2ivX38bdAnjCC8p+OH2NvwtQHdhpY5jXHKbZRM+2ctwUtsXH9ebmykMcTPK3v
3z7eLYhQGiVdUbSfBn8Fo+VznAhx+IhaBXI7bqRc4wK/oU80Q0mrb3vBymmht9C6kTR4IqRnRJZQ
qIwKM7D/pzlIUphuqElvd7xdTjEt5vDhQxrN+f7rIr2uCV/jpr5kG9qYCjHrhO2Vo3r8l4yM6x++
/v3w8S8p9XHZ3vPdJMOjaVRfVbmqo/y6UOf58vPbe+SbVARhd07SG2bJuob5a2Cq7/ozbNsQ2csS
4v8/f/rxG5NwajfRpmfVPnd3efHeYixpYbHj2g/hEUw38IwTQjEkaMUcvpuzL30VQ+2FBQGU6r3P
d6FEoh/FfPcZKgu8+su7Htq1TPc5zQLMygdool001MZ50XRifQ3Jq3DYWxK1lNv99fA+snDUcBet
5eMzTlMVTddmKntwYZXvgwM9UGr8AGNmFJXQwhLxbMb0GMB0WQ4JE4yrIYBURLB9NNokriCIUCUb
9Epna6OIbfTw8e3zS5A43xcSH8NToS/G5RhAEkkLIZ/nbprOk1Lpt6f77ufvf/ghZgTd3ZASlKog
trFuxtwYpVSscD9VZwivGHHpMznM1kLsBFgjE4yNqUVo8i7G9Cg1EaFlzI8BGEVebExeQnYssp5h
TB5CUSzC7BiAyheIZUGZf+m1AoLyiDu5Ob4aA8gVoJFkI3aMAIxcQYwBeAHIV5hfvA9Pp4fXoEGM
m6eytdh2Gx9nnFGKElvry7r7KS/Hw5qQvqggj8fPL+fXcRVnevId8QjF4alvr4uF0CYpho+c49/W
EXzBYTWeTBuD3YV1m1jT/lM408w5ImJOfuT0OGqXH79jCWbbf6fMVkVFJ/F7VCg+DYtPNZHLK/7L
8h2YV+YK98QQjaU3NQb3W+r5prHn5cyzweeqq2AQRJZ1ng4efpsmMoJka2pMcAqgrs0S79hdMKhS
+i7wgHnC6ZRmpNwy32mxeBjxgaxg3r09h+SH5cEIhhhy0hgieXwtd1k4MVYFoBKAolN2/SmKsgpn
MHlGjdtaB15F7Wyso/k6ir65WDDlEA1SY7tBak2qYcoLfz0vVu3hn19BiYUjinXSdIKAhlygmjKS
n+G0EV7T5xvJSo4TA3aE7ZDLtlcTfSxPp1+m/afjTSlqTMUmoFGPhhNBvKQmXqXhBk2OTNTRr79+
pMcbVML1MeaTLixEuF+XA6YMoGZeAbKvqckUdXZc23Eq/1VKdDp9QJwhBTHNh5gXdUN7rOSaogoh
muhaeLZTD7zgLnv6Cyawxoar6l7uolA6YuR2SWj2UR0q3Twkl+PLMQ2CTez46+kaBwWVsr8bSt9E
lSxNmIgIOJVRVxiB3pWdhtEEefDNKuliHhOStrLalXFu+9qaOidAxaYvKRvh8fz2vt1W8PKAV0AN
aoDaeYuz1Ib4MBnCeRFUq2vIc/ppucYI1v1NfLJOz28z/EVHbUrIiI7aqiv3nzt+fn98fCyFpvlB
BJ/06ydjQYAkPhk0gWtMzBo69eOnbHEjN82o+08tkgTA63I62/k0GmQt8vK4Vt7kTrPL795fRhOX
0hntFG3XhV2PYGuqw5IivpAKKFbmuIJv8fVbTdeZzTFjiOHWG9TTvXVoA1tLiWFxazWFqf/UIjVG
ylk6XYlJNMWq/SdArl3cRMF1M82x/8K4ZUjaQ2GTJkNoe1uRgqJbG3yIbSly836vMaqminqS/ekp
B/dmwmOTx4kmOypyBFcZtxfTq6dJpa4O/m1eIbJ690ucj3u6wFY4Sd+nvJyx3en5uTMLr/0YolE9
vKqTbJpOeR9C/OcWYL5tjZroYa0bheMIOfeaiijGePt/hXD7dyHSvcYWf7jOJhk754j4VkDOz3E/
HXrSDpebbHSyt+fjby8pzlC6g9KrBbU8z/yTXXJFTnVPTRgArFlhG4Xz8RyjgYfHZSO/PJ+/oNhC
/AgnPhLT8voxncMvyNSwMX6hel3TF87PqWBmnKgSP6ALDmSbcxpvP7R9vDyM95/HKcvYKTIoHVkg
pWS+W25AdTfQDT1Npwh3C+DtCt9UJD2G9j83I9B259fNF25EoGtvIN9hSlrKY35TT5CUyARwKctG
mhyxuJEJZLZSZedWPF3/86cfJ8klEbheYY2WRQ4IE+/m51eM2ne+wsgK0Y11BQcv229a3aTLxweX
3hB3lyBTwcfp+Rp6cLd/NblMOeaGx+PDOWZ+xbB6vty1YxBkE+ZaFGUqT1dbIsCTiSRxc0VcdRmI
33RZlduboXdrAf0NDMuLxFoF/j6HJNnZIJPEEHMMi2sw6iLgheBEu5DXZcVQGfTtLT881T9jU4a+
dgPIOie2g0U1dBqGyn6zGOe70SDkgvOu24GteFpnR0Y7/XWx82eaVc38Cfq+8TV0fIBuldoRpWnL
3yD5Mp/+7S01JDEZ3tXQxlVP2QsmiRnQP6+VlKl6ZlHHDi/X49/P/3ctrT/CgHak6foINUOVcxXO
d68AUG9FX6tARK/cbJw0F9UN1mT31vSC0AL3u4+4J5CVRMJh7ruCc800VfE0cLMgL4sh/GUfH+4M
mkrNQNZILNl6PXwEpGkFwbltE5AkTBbuOK3THvCoWyGpyd6ZRJf3OzfVzpOZ24ZQi8CKKRgw+06y
5vPxpm3jpAwush9iCl/I45gng3hJtU3KLTDXXhxROQ65DuFRgJ1eFOGc6d25Vceu+WUpA+puDcgB
qS014XoGbZCQ/VQ7t1STPvZm+Dsi9UWcSiKniJqQvTzlKAtLEPxKJuPGcbpvlxOg4XKJ0b9jd+l8
eWrI6fkUmlku/w3JhZO2R8JRU+7HLWmQ+7QeNmRV5fZyne8lT3SceYert7kxFBcmP385TkqKk5xi
hMpA5nQV5/JdzKxfsCfAbTLtiarRLLRrAebNVYy5+5vuSFRuvQ/Yqna+cGNTL5pes08hVSmWgR4P
lweEcG6prktFRWxN6NxXISrrKKhl67im3mL9dVGyz+1nxk+mElv9sUrtD0/hdJ0mO+ktHhvZVQMm
KJZrb+EYor1pS8ITBkzOgU+pnbd9pmjGzSO8xzBADSd084yahOFvRo2ttl0Ue7kU4RsOZYg9Jfg8
quK2z1QDqIr/JEZug1fdNhR9jFlyaPxSUdmaUYWrDRU/+M1Irh6YsDm+1u/F/Ol0b6GTZ/RIfNuX
RaHspsv02iRu+UK+gW/ecHU6iaSYDEj1LveGAp/qLVLfOdBWy/Ybd2eAgLikioxv/KIkvAQvp47y
xgJPUs6Vjit/5+3KyhORKdZOKgPmuom4LeG9yHuN8vCb96gJ72IS07fxbUH9mqO0+nP/49JlQIVS
r6egrJ5D6+ip59rWWulN/OHP2bj+6/vFbvr1eMldG0Ke7iMqcYnSO9eM8E4ZOMSIYbD/zx+ACRE/
kPghfqDq0Y/Hp0V1uHydAadulWV1V5JNYrp8mWu/fg58SK0fakaWVq/D+qHnNklpHFsNX0zqV9xa
jVmcE4rXCiQAXbDSlPus0FH3+3GUxpXg7Qof50npDXxuvhwrIMbfMOs3ogPEtd8IDtYUZn+8nF/O
Hz6MP5NqASJqa9Jd9jTfMAwlXY9bv9F0DliPUyLpV3AWR5BpdC1lnTwYp0O/eTqH6QjV1ra5l+Kf
AjtI1W4bCss5fTeyiim81rgMHmOXnOcYlg35LE9rtS3AZjlJM3i+EPvl+LDsY1oentBaub9Kz9T+
Zm3HegPvVQlQQ5gjOruLLY1OUCaZwnpNRLzA3X18mPGuKdzTxK3zaNLH82cAqAhhVjBbzpScAACt
hVZab290enwDWsUYrbPREWkXRbjGnt88tzEvwhCnmKU9sO4gmwrzEqAurlnwJdvRrGon85WbXb3O
NyCnCKUmvLBlgZBNN0qVTBi67bpvY6VuR6uEOvxy/CluBkmWck+rw7kkKQbT+fPhJfqf0gB2lKAo
CS9NyFv66d//8H9ws+fqmGxkYynxbKar3FCPXjvxNoPnUiJhSivHbvumlK2eIkRl87CjNS97Hap9
vvuwbG+eLrkYyYJwyG3z4lbtIBRvfQjzYm9KjJO1h1dtA5rLQ0I12KnxnCanSNff+PH48LT2+ptF
SGr6QdM5YhGJh4fTI2p1XpMzY5cbaXdFbJHiQlZsqhl7f3z9EmYU4RSmlInauBmDi0Svr+PHS5jF
wCXXkqGMZ6omK0fUy+BTqCTkoIAmvNmR6E6rnzlSTc7TvbuczyjG0LSAbt7rnArdzri6fv38/vwE
EFRL5bsSoNhIZfW4BD5PEdHo8cLZyEJRR+1SMUMfdZB6WaNcYp/KGUIR0fEK/LiMcC0vdJgOs7IR
crSq6ocMupnIGuryDYW8qo6o3x6lOaXrHudTRNcjJ6qU8xSRX45f4fynKLDKTUQBIyvv310/HY9R
rXsM3RTWuSN3obj/edEUm3kNiOElceB01NNToD7UMpw7yovcJHS3dXeorMA1JcFVA4/HidHrRf50
Fidi09r0vVHP+tDLNXBXjrU8nj6k2VY1DHMtARhwL5yIwa4N3NdoUci2CML/M4zAc9EM/WiS6/Yd
REBY2RMZ7XHWQSLe6Ky4/SFwVdZFTuSbi40SIPkrjqV1493QaE1X7KmCgmvpjpIy2+8ucPRBg/aq
B8WwclYT/3KDEiCpkp6XyzkwZQoOlehjHq+cunA0rwTqS+CovgS5qchCCacPp9DSfzKdLTEnFQX+
9bDQ8eMpNtdLDUquuUIcVTxoot9CrAd5CQI1DCsLezs8LfwQBzDPFAVGNbqIc+kWnu89UccPXT38
9fz06zq7bfnTS0yxPWNZxdZASaoljLpbfpVKv6bo1IEZqGyNCdTe7KY60FLeQ7v14Hl4f/4tZzyk
GsLhh70iSlEzZPrP8fGvQMeI/fWp8Qgp0yU0ang8huYYt02+DJ9jVAfoVJ50xjtRXhN125vT/BA2
tMjn72JeRPoTbL6tGdXHdz1foyvGNMlYcYMoO36Rqhgu95V93ItevywS+ga9jD+k59cXjzj+Qqlu
bHSeMnbtddawIWJddtXJQ/wcHseFnt51Mxfamwt1GqjXt+aVOaoZnZFQ5HxQ4VeDaIwMRZDeOuM4
fyleTBADp+c8Kzg3xJlREd1OPp8wskngjmheP6Y88jZbDE3Ui0joP2/HpL+KnvFOSxFviGllV1re
S+z8DVvV+zoVxJeoda45KlJvPegkLYutmek3cN867m38IU+04icxFFoBLc+YGlfwM0O1l0f0zQic
ZmtuxuXKG4LLUwP1+BhGAgQdzTWXHZOvkcnTwy9pbm+c9Q7dGGwtMNhyR0ZgoIu5tJLbNgbdZJUY
1AIqirWEKtY53at6cocLDDjnhqjK3XRXe17blaNealQD9V5vXyXHrWWnTpIl12tq013tg46ynKj0
JFB1HLNJUr+BRdd+veMog80STWdWTlqOjDLMyNrjxnArUxtPN6XZ8iartKkcWMjg5S8La4TUnYCz
v0xMmabPlGve0dc87CcmwwDCdETa3DjRClnydZpV06sgzxnMQZ1UU4Bq9oNvqWt+tvZ//pxDO/E/
4SHL6so63+zu+vYyyWmqBdaN5Gt6u3339Pl8ff15+e4Das3kCQs88P/fQ9Xaz4n/WqU2dM4G8dYS
CWtySHO3hBDeOH44LD+P3//0oeKRb2eKIrYpvlLEL74p24+DZFcKS97Q/6n3s+aJ+WL1tiMTY51C
N055VK7OZVOvXj0Exag/rtkm19rjCqWNU04N2F74DHNdNZHrupHZWXXNJTdB60PuNmcIAzPQ4d8u
5+inbWnwJf9dEeifD5dR9CGWRspailyF3e4rwTkHvqG6/pWy/0brqgG9K0uJJlfRFc36r4R826RO
9FPJwa5qN8yaWlq+F+kZAEui1HiLFgBeqrGb16c7SxmJBz7Ce5SoOlKpfGrS3SShthYq17EIzylJ
tN0T2Em9nOq0PsX2EJdF0gQXafnQsKtS+JAohcmNZB5+SIAPFQQ3z9mObKMnJAmrSUW+dN19O/p7
/U5nnyz13P0gVmKLD5NWtOl7dstlm9kExwNqpayIuEMODuZU/FA7jx+J6sNvisIvxyc4jS2HiqoO
GnwxnNeRRfePx8Pj/XIQkFNdX6fYCH6t/a9+ZY4CrIrQVX9bLuGPf/rLD3/6491/H3495HBVdAFO
wlWyBkCaTlTNR8JY1tSp8cPb86TUgsu++VaX1b32nsqDPnK4vs4Xm2Wycz4fXLqmQB6fPqBKMU0o
Q/tAGAp8Uc9Yti5/f2sTXsfsNlW13//888+B6/+4aCiH5MmN0O0EU1wNxtYs6W0Px4frNWlE9dPt
ZPlFhY/oBUMEBSP63qVcivZrX8EIDbZm3O5mI4aXbVF032IENs3gHdmGUXm0RNO+2DLlBlhPdKx7
6N6ku9vaQyruqOG1KZQXmm6F6UzNl8dXxs3WaZm0ucCLUdKGXORh4Wos+KyKahS6a2gzNHSLcYan
04djoFcUIG3s7WTZdlMr2q7zAuzEEfZeLbb7dLg8flnEwPfn5zQr5+ErYhNKEtSwc7jtGPS8lim/
qOzDNzpptd1isCgVaxyDCRjaVpclhgMa1my2GM9tumtdtqGn61rJczgNE4HX1Kf0sWYI1CJTXpu2
cnVO0bDnQbBSePlUdYilfUVr8nJMJTfFHwDqgUOUWa+fa72ry93Frvtlbx/OcXLkAzKD1iyxirS1
qO4QB0KFHaZJEpfjsNhtTX5KW2rqOOIJ6ajd+FNpwGP4VFNL3OznfThl+FqzsfG+yiXundyvX04P
0Oeypjamzbi2BusPeRPfxz38hLaQROMGvzkXMN7Vb69vh6dJi+fwnUqP1e5fiTvUTYYLGg6cKKne
8QtR3WhmQF2O8UCHy9dIiNeRHRl83GZ407MUneBzKFtoh31Fpnq8y195fnyJmxhjQnT0bzv6/34l
fz4minqEptxiJyaOoST1NW7o+7m04N3ttGg5XSNSf3j+adwlZ81gT7uqGY307eS//Y9F5Z50IQsX
VuivG9pWzpnkdEnlxPwgKj9V8yYdcysaSxplclfj70re0YXOjflegqP2S0jlTHk8oexkebo/AVFb
sdhUSO9E7fiAhhAYJMOHKG/90/Ub6iXDNg2Bx7FQWJPgQpByOcz4rh3BGesc28UyKzXiE6lXPhOH
rdoBg4QpDONS+zWDeftQrbLiNZQwFHIZU0YVn7XEkGaLMcczTQit9NpmqVOzskOrytmmOKVozK/v
7Tl40ZabiBMbw6y8y+socBN27TsNhNNyLg66T6/igoq7iezUFZ01UVVy49R4G5U3a+IXfYuZ1+MQ
jUhi43dElitpPFubpr23aVdMEW/KjlpDL8kLFJTSE6yfRo3EqHSo0ocSXKvuXZGr7GikxJiiyuJp
inobZooho5oEh1MG1+qDLXXurupG1VUPWTgzIVQ5REFJbF+Sk95CyNlrYcdXKgnKjwnOdzs9d/wR
0ZG6J67jbp0HMz6/IyTH+rSNj121AbcxRLbP5JZjxuTJhi/blA3HHx1rc9PxkuGcVbdo/Hj5nFG6
Pp/PL+PVBXHNefUoCUBTpbC6JDDCJWNsTBO9PUC8SN9PHyRHmAR50/EFeFwfk01jlvE56nNbu3us
mwoq0Hgvlb3qeMMEGdMYv06ZRFXrr5aSpYbrd6sMvatCcCxzKp/47VVmrJyeaZ3wtyFe/FCwl1Sa
XdrxTLWx3T7ZjuSmGBOiew4dHI5201w0T0xNqOmYST/PGTDnG/qGNF7q6ovLrvniEj0DuzklL0gi
4TkRVZ7a81zdyXevn5pq3VCTMzt004QpcFKywb5Pc49yV6vPt025jakDrnT0rL4aMEoxAfkVaHVl
5cSBUJn7p+flJqfDBWuK7WbawoKKJk67MMDDp2GL2tzip1BBuD+jqXhvUd/xA5SivVTL1ZRAe758
97cf0pjKkG54fX05BOMqJjNEp/aIMOQ6giMGu1tP7+F6/Pvh4/8d8LKs2Nad+yLA/fDHW5dOGe/x
E/VBT58AQLbstxkgFuZvX4PD7UNsMzTCZDwwK6uKpnAxfSCyfZngDj7Cyy6qKIt60GL6SrB7VRZP
WQVZAQltfo7Xm5f3jEBCGCVz09Ck9Am5fiI25lhbj11PH+9WqrouZLW8EtdXQAa5cW8YmhwcE4bL
3E3n+OXpOGtYkL5gCVQGwzjn8xwfmyyL8Hjl3YEv8o6kqwCOJV63o8iWs7WTM94+vwQVeVjun+ij
3HOjlxR3MMyAi+CCYMq1HW/KcwDHrxxd6wT649fDAwYvBNK2CagCBuzeEdSZz/zTsEJPriNzKi3o
jjluYu4qlZqq5CSVpuKo4q0Gm1qJOhWllZJt04QpilKwrCPov6WymyW5JMi+CJMkWyZDNeRah7BF
Q5Ett1COV1vKIXIKUzHKOeTtpbDr4fIR5RZS00vroOMrMek4VTmhjo+ye+3pike0J9Y2ltOlY6RH
IcCiYfikcWT3bZgtANtcci6omcq7Nm8xsvKYUzdQFjHj1FiiNPw81bvELvwPx6en+dwUqsb79fxz
vNn7WwqvZD1d460po0OSDw6lXtS7MEBz6yJyc917UeMcUf1Wr+su4usuIQxlbNd68iaFfju2KJUd
T+cWUZrg32Lix1/SAM9jKKADKdqc2Ew76zYqQ8GmuGHILVWOOijsOz1/Ol5Or5t2N6iuzxM08TF0
pjk9dHXB2RuIeJUT1ZrNPUb8PwcrKhbyorsUbJD/+7+OX5fNtVmXv8S/CVXHY6ecLD3IuM5dkpPo
TsBjIMU6Qe1qXd3fcyvpdiuL5lCnGPxfUK6g17mT0ZRqVIg0xCLk5UZxHRs4pjqBZLv8NvqYLR9r
Fbx0gcvFnR9OwPjR6wzU9IVqu6btpKYRIcc8H7ZsEDkj9Dpmsp5RVoqIU6xDdPB1vCVejU3f1g/H
dqJJal0BdMVvFb0PXx+ejgjIdECmetjHLlu9FtBssRePh31jEbYiie+RBG6MEQZ8R4J3sYMI3rko
O2+LudqvAFhVdl5lRzPKa80wy6yCcFDot7F0VyorXdsjIcayj2F1g14HBm+3VS7xW3ZVeaIdprTj
qlHoP26GU5tZ+2+9vYamPdd6RKAFxB0pagzLroVFVERBBlHtA17NjuRyrB2Fb5jVJTRVcf709vH0
3JZaHW/xC4mqKjXk3AxvSe7PlHGKkiUtNa5udeGVCUPRM5SfyLthS7isxFGNSEZ1ZanjEBxcmtUV
1U0KZyWFL2S7hWAnaBdATS0q9RbzVvtcCElUJOWKqnl7DbZxv9quyQtIRfZ1HqSWpcXf1mN3fg6X
FCtbP4W6nhtIkTMnBo2civpSKPu/rxP+UJrA76bI5zUOcjr+3pKfJjuYhcdj+VU1TVDiTNe73kE+
r+nzZE3f2vBvMVZyZvR59fCgmiRqKuum30jTgLyr01lEJOj2lhqNCCLBsu1pimY+cmoSAh1MWKT0
6ePzPJ5gCdU1p1jHLhkouVoRPSNqbSA2qoSlBov88a9//nuYWxxdE9lHB7rmV25ucuJHAir9RRwd
MLOCOHVJ+zxaUJDFCGFc6nmTVfB8/DKeqJdxZKj2Znn60yO6m+o+aATVplqgzjI9Xc9Ph1nJgCcs
+s+nhzDT7xo6506mR/BmSzXq1/fbuhxj2sJD7s6UyhBmJFzngkavom6sry9hxNrdp+Pp4yfo/KAm
vXbVeLli5vz09pm2ReKlU31owqMWyw3vYhhgXNSWLF5LFJG+PZ/+8RbNokrMvy5SshVDyPmhiIvb
ey9CRC4dM7VcCA6usOj7N+Q6q6XnjVtyscrseLKJa/wVunTsxGoF4lVNyOvw/u3KRtfKicmc2Voz
sonTzaeaB646TR7ZBWeVq8PdcKE35uHx+nB46S4cEa/qZMQ6gWitYG5b9XyAk36Sy1B3yhlvK7YS
T8W+CDdUbenOD2RWEylhb72IwGLhyH+cql6cUcrowgJ/u5w+R6dx7Fp5U+s/0fSzq8HB06IrxBt8
GkZfkg5IjXTMT2Z22T3MXk5JjMDalP+Cx4UqakoKyOt59uw2U+tr5nCuDS5FQKFf2unj2wWHobmi
StxypldVSUr7tNq8GFctxDp4RzwWgVJSd6JuzuXyrG66Un06j9plxzcobdunb4ta4Lr5yqLKxcl8
C+cEXyX4oCsfVE0Hm/0HR1m+6Su2fKXeDPWVw+unof6SvmTKl9ouSrsvNaNiR99yuVtn7xjKyUqh
CBOLqOzO7NAz3M4EzS5r5lM0v6VODtcr+JRoSWCM60/D4thUnLx+pc25pQhpsVCXpxZ8yRM3lgeU
ncKUrpySM+39kXLuddlXHUqXv7YI8uc8gHXkS0rfkAQ15m8svJu/AuArT7Qdx0hWnVBzOU0j+Ie4
ATsqXMGZzBPW+lM933338/c//JCCkR/OT+PG6ikzsPkeSzOc1sjhN3I+73AluhNeQ6vX2YUX0dFo
ngSywVCkxBZ1I2y7kVXviZ/MHkqwo07Grkm5deLeTXKDdbvJod5qcgTxfLmiB6pO52rScdZd5Agi
qP9WRL3h+Tl1DTl9Ri2eayOgrlV+bvJ1eoQNTw3xqm56rSU9/fHu9dNh+cPhmpPXQxeS57vFiA7+
3tksaS6kIjSZWux5+uvPt01XFFSYrlc+gxn0/jQeVZBdoZpAWxN9nOczSkboRmt6YNjE8zAoENUO
qnNrHMeyQGyVjuysAxNYZDc6OKvmby9PYeDiMTZPumHASPpUHeKVPQGlz2Wwb3bdWA6fPx9isvrT
19iCLFlBkWxWCs7d+eg1XR37qftZuPFD5yj9BYB1Bbbz1E52Fl+m+cb0+vHWu5I3Fg8HYG2BbRpD
Nocag2Zlps99akHXHrqx9BR/K0ef+20kJl67E8VY9GFY8+PqSGz6MOmWI2KPv8UOW68xsBrH2qx/
kYJWYAWzXSG76f7zpx8jQDCYgpAYvuFsHeW0b/H4Le8TWwdVpc8IpFMMj8TW6V61hUGOdMa6qFMc
9/twPH8IoiKcbG2lAToi1D0185G/UWtn6xytbeOHsIfz5fTxNG4DKQ3RvTE2A5kkQ7N1flXdfQUO
6nOopRxD1l6YUPcdmmJsHXtXu/fab1bD2TrUa9/g81utHbaOqtvTaSDK6DcGZFBuISR+Gf27TAG2
TmvcdqX4+I00LhRBE0hnY+vkv20/0W/V2Nk6L7Lr0XFz60cBXnaqM0VoP/12eTiWuEfQhEoRSXxg
b2iar6jQ6Zfj+9fT56DFZI3ouDa3nX9R1iwoHad6FT3ihxDpaV/rFPpZ++FcHoZGWSnrShN2QmL1
2q8sfSM8OGG7gzCkKN0g0qQxXSamJ/Bl7bvD++v5KZrQg24lotRfp+E1jR2+XOu1OVH8c4g4pg63
QLOpMzhZbAHo203Fr/DfAHiZLhnS5p3cAf/3NTkux60q42fKsMGm1LX9zBf5MMp2iC7EMgUxGHNe
7OAFOkOZItjUc7bAOfP0Cj5hiBHt2/0rsH/RoVGQ8Bys3wy6DMaS1eQXJNhBGVcYdF2XMzzSB3JY
Ig08eT+bMVjnaYWQE8/lByuTPH8M7ZJuJHVRx8BVM3bLsgDcV34NKtTaUCHlAKeeNxOWF3UMXHgj
uWx5dh2BtSYWpoAXQI0kJnSV4a4fc6Ji8DDFZt61zRueoCZ1hyVGHRKcsN5XdKPIlvieD69vl8PT
PJInSnFkHY5lN9Lx7tY5l0IR88fSdw5PoLhRlHreOopNbKd/bAsbH0/L0/f6APAritgPlZM5YyYF
FSFmpeom26kOHV+CwF8UC0x9tusf2/kiUk58M/oiEU38PtiT2U5R23yy/eCswWsTCakPd/bvhOrC
6xMcHNLk7TZ+t7J6bfQ3ziN2xhFb+Phwp9FUImp0yqJvnB6f2ikgodF2yrnOCU4oyFsrAoP+qXLg
eDFHPx5DFOfutjz5mh9XC3xbbSXm2CV/639EXgxZ3KeH690/3k6XXwYO96CtpdJx2U0XnfRpCpoc
cOkGAipfbWtilju/fkOQI1y+Krurynv6TuwxmUqcx+B2BW/YrA3Ob8vChmMGw0FYOVMTU4t7eUa4
yD0h+iHOp8eCxCGbBy2urNkoP835X88fPz6Bpes1NFbTNzQFi3dZ9+/aoFxNtAqskIduxEki5y/H
S0RsLHdetMS73xYN77chYg1xS6stAyKGAaH1gDWW8Xj6HK6z78RYh3UNP5ZLwvvex7+nZVnEWiG9
5kFvbn18JD8ks3jl5FC/PA+vNBdJTA96LIct6fZeV90g7jCa1GOirIBtZnnwkH33+N8LOz+/xqb/
8SuhQe6YtpQheOP2xmwRQXL9RCyisJtO9tc/fP374eNflo2EfMC3p6dh5Dx+TBP0VJE/xqUrt13f
jfNzmlfxMIydhiMrApmlXilK9dUifzyHWuHz69qg9/NhJaZcRxT/+u+DTh2RwjnBypkoz5fPNedo
jCDXkTX7dmEgxgK2fLtVVlPHicP4UEp2NKQ2usJbKMqAV8AUcekJmT8eP4wv3UgCm807DIFZZfMa
O/3YPU3R83nTZL94M/WpqG6/ZjeILrggUNjA/lfU8W9TKHjBSqOYdgPtelopsbeQzQz0FEE8ZS2+
/nJA4JITtFV3dbg+nE67GnFAq4wRCs6/tsFc3LYYkmZgrg9vz0UhhU3oA8YKwcVOtorm3L0+dBff
bfB6y+7VNF1Z4ZqkWUjw7n9j6hF6Il9KvicQUpYTH/n4O9U+4aF0mB3IiI7wmnmA6wzLGEQdvw+F
0JpIZQIN6IzFunehWnf8BUmQ/ufzP0/LW5iiv7F44Hh9TV7C8Lv7928fpVHMi8HFx11RyRErNGdW
WwbBBZG/VBaXXnkFshhYmwQjcteXXtzdKrAKtYQJ3sZW0XA9PaZ+UqMZBoG4NCHH06NV69QBvOLE
+//hFOYPlvS82yhFlOezKZubirjhzlJDo0R5Qfhytk4+unyOoQLUGjCerOyn6VObMHN4WQQ+kHqU
7hxOkmsEgsUdX8dhokuArMvXpmbNczbmWNMp4M2g3qh/nx6XS0ACQ1lCp80qW3KW5c724x1wQjO/
oQNhxF1RZpruBHMNwGhCig8sxRvM/0qK1duXqDjKzCq/IsdGBh1/jOLPjZp1q7Oj7CtUfZnWKMsR
/k+X8b0K6mlq7/XTeOhkxDGlod38MhrVWclIFRiODI/focTE/8TggGquYMTj823Og/EzX707tacs
SWXDCFOkr3KvsbmlxgrM+KRFbHRD6zthOaYtT7geEmE2kidUf6CnRBGeg9dk/C5q9jVMks55lMUo
CivEygbseg/Y9lCD3t7pYm3fqtnLTpV2t71bcvy9Kj0jMmu8vCe6WMEbsm3m9Rzx/JrYJk0mt+iF
opy6KSDbSrXJN5ilfAfDLY33UginiYnfYBqMcaUI62gsq2Zi28zcuNuRbOONVRkeHN+LkkoXY49R
ZQmlZqN2Tm6NM+IdAV0Oo4zamUVrCsi+vjQ4TINx+fYcRqa8hHSLJEpROWMtezExz4kQ1D+j2hVJ
ZMam8uQ4iKpWIi/yZh0+HFLe1lS6O5AcmIp/FVWathYGoVSGVBqkiMBOGlIZk57nBeqyNoDZDLi5
vC1fwfloMYVVU+V+tQpxbatyDN7yUBUHihGpis9rbt8U6u2PIb70MCvOrmNb2ihk58iNb8NaA/Zv
N0wXSJVvjgjfpazHhTBz/dv1NXQZDU//h+XRR80OHFETthDV09esjKAJPpzVUZYreE6ly+nCH1PD
2RRXP7wexp+LlVV9l98y8yz5dL6cngGoIkY4RG6tSk9oe3VdNLHPx/F3agvppogkDRk7RuPk8HQt
lYrjzzQTYypHvR7ep1TUVAId7+pl8h1BdC9ewH5d9nG3oheAS2KqzvXw4XA5BeM7RXIAUg3Ro/v0
8qsB+CvNg+Nzt3a3STksCx6vd2+vHxyA10Tz4cdjEWUfQjfdYcFU/ISgZpek8DgAKusGSaJ1R3oA
QxWsNrgI6bSPh8sjJvY6D6hphfmPt+PlK1iOGuuSyQGspLbtmKMb5Ckw9ymnSn9+f1zsq9zSEI7+
5kUIbSftzHirNpZuqmzRDJAFhBMSYRi1TBRUQQLR+nJacBrfjRrJE0hDf0p4g800hA1eP72+vsyo
1BITCBYj8On1DFZ0xEZvEANFqEUr33RgMY/9tLxpd79e7zBq66in4ITQa4jr+SAYQzxdpFCnGC6C
RAEgQ0zhGDdJjdtjVKv99fl4ex41KImwkpg2s8qt5Yhgo4ro0B+LMbMrKj2Fl/fDNk+5anDTzu3y
AQDYrstUzub/ejktNsDD3V/+7Y8AdNctq7lECY5ZRE/I23Rm1ZJzX+MI81zmq54/BLUxNkkdT5Zd
m2PI3j0wNU9TqQdKTxG1GWckvnBFCUnLy/wwhPFOkMN3ExV8OB2fHoNZ0K4/yC5NO/BlGnDTU4HJ
MUa87If2JrnKOIAQmhh/vPb3Xa8n+TiOKcMipTuGKsK7+HNRX1zvEVyWYMRKdcpAaZcQW0SAixF1
4LOPZ858eghlfIveGX+XptoH8+Gw/Dm7INE3y+bi+50umzE9Rhy3xHGaRgbrBaeuuqiHZbpsW2kn
jpEuTbdTAzqAWNlAxuHTrOoCa+PwMOZi4e3Q6nPLDpVf4nVm9+GvH8GKXlN0HlIYc9vURX6FAtzr
p/Pb02N0U6Zvh14gAAeuJ8YSsHk8xdS2QzZ8buXghh1rwwg09Npz2Q1uVgQi1yLSxVieZvKI2jxt
M0i7/2bIr85UExIww5SUcfwkfpTVo9XhDos5BRi9l02e2EZI8V4I9RBnQnx+H0Znx9r3t/ehf3Ha
3/Xr8+vhN0QbqkN65iQNdqY9cU15dHw/xjvx0uHxdL5bCPY1uKluIwXuC383+SD9e3MObVZ+u0mU
6XLGRvcOX3s6FPaPGWnoI8YQTBRYJQnARZcKIha530SxPNJnfPQ/5eYkh4Wkoo0W1PJFq3w9XiBJ
cVbotEnf/nB+eLuuJTxJMqzUEqN8WKSVEzbptaSgfgxTDp4DI81FtTDtsHbRHvcfYSTc8qFzauJT
nn90ak6IHG78YUyv3hAU3tFSHhUXchslWFtVwo+18mursvC2LgfpCQo9Xg0JFIwwDuScqExai/QZ
d++BaiEo1YJZgCjuCRCORIGzBE9kfgDN9rPCVhUMG+/SUnwZhsWMJh6ka7GWuN/6SkZdKLJCTZIO
r0F05ILtVZyHBIlcLBT4PVV7fOPjxqvG0hZM5KEp14fzC9qLLlTfmJ6vh48xq7d5BtrXaJfuBkJ3
ovZrkrIz8rdScsLt3BTajt8TWclnTAG6KwzaJcEiNVwgNaKQcXhFsr7ZanrBTEte05vUEss7JSN9
jxnAroZTioway5bcjm3D4BkBoR1xd3gOLlGXS2wi/FHEHvPYkxKSXpTKU2iYHDgsVDnEERnrgM4r
QjAljcp9fct2mS/bbdq2z1TeeneTUGNcokrbJokyNrmbEjOveoNNZZiEFvY5JhglyipC4Va1kFLM
F9MCkJYjcF/aa2RxskqGnQRYzIQYNYKCIE8KKfzIaE1nJt95ffhj8YhYVaZeopQbjRyKxHy1rmu4
sGXr32l1WEZInyYY35Iyyt9Mj0aRPSHG7/Kg0fhgrJf0+ZCZbjzKMX2rilIeGy/lRx/YuKIQR1P4
XPJRWkU8a4OPMUDRK+3X12Hb9EweVcTXNEymGJBuslq8gc5z3IlULW+7NVER3c11Jj6Yu7EfH08p
wXOusFaubyaNdPpiypBCri5VkaRTFVdCkwOPgKUsz6gpX1+OD6cPwR/wFenGHiq6UQe6TTBxIwkx
wy1DarYj+LORs1Pm4dWaj7PxlFM3uIpCGlVWEZDKzQlB+61ic8r9urrz5MAdURJ5SDfOt/kUqs4Q
/izzHen3gHeZJLxW3FhwrbwzVkjbOZjjsbDnRl3YVg6r2WbMANZo6LGSdmSNFaGILyxhKS/qGLCe
lO3wpJvHZjlszAv4Vi1SdQLLjEn79BxmpM7FVHOqEInIgopJj84loIjITnxkxjjChb9T2NJs1vVp
B1hR5fFtMjF7jpnGB7A2wysB72fp3dXJeP9zVxozlInXH4ZWwdeEl8PT+gO5FhbZvaKxn2PIZpXR
j4j/eeuMWWd6bDf17TYBr56AEHFytvHyYDWHsx5rinD1fYtsqQZQmyoPjUlkoLiqUtUgNhPA+Kv2
RjuDWxvAlY1B1bRm3506h3Ia1CDOqm9RjR1zrcEL7hgh9Pai/l8aZWp8jrWUannEHhARKwLDW47+
H4oNVr3czaNxfTp/yVdy/XS4lIOngMD57brwzri4VdRuDsmBGfnW5GhACMCEIZGPxw+HBSR2zHg6
IM6pfpPGj9jLm6FK89vnp1tUGlGjgI0/YSEjRM2c0EsW3QhEFFwnyeTelX3rI1t4L1p1/FswcpNt
LGoYsenE1K9wjQ3gv9kXwKlg2kB5zEt8m7rouu8bZOdOeKOqHsHTZcTIQkL2UaXdKGy46XyaJPK+
3aNJaTurtp9yzKAI6IJQcjXAASFXM6PtNVsRM/VlN57DanfFZzSPfgydG9FjqqcqSJRV/wLrg+Ry
DrwAgtLhs9CM1LeK1OrBQYOq8x3VKw6XxHOocBWiN8qNGiBsMp0i2pPe8E2BuaqXBU+05/9jNfDw
/BVdhCeUh2+TedNXgBfZkYIt2YJSyNKYbytS4r/SIJZUOgJU/STyTdcck1rKwQwIZBgqls7Ry+cM
YY9v2kXmlM21BmXOE8ZOX5JTdgcV7K9ToHPQOHW9QlaVpRIanAUUYRURFanC8WZHsOLVK1+9B8oA
/UIT90KniXyIeRU3TJnP6pEg7KnEtb/THa00EYVbjHrAaVRIfFWDb/T3VbVGJd+b8tlNIoBElxS9
J+pNr8y3qUCspliEuJAnPK+fDldYuy1KNv6WqUJ2ZqjfqZY+iqJRuR7cAEb21OM2SpNNzyEnvL0g
9HU5fgztrMP8sJBkkqQBioPKyqKx4bLnu3SFaaYCmRykQAhCU2lLMORzS4Sfcqw0quu3eeJqBk70
PuborEEGepWo4Xw5779TTVdSR/fBCV/XBjULeSekZA2/2No3ej/qC9QUoiz4g+Z0xW4tmCVTSlGw
r8lQSI3IbkzDuOE9axTHSFRrnskqXRrn3evh9ERyCspDoZIr1vgYkuLQcaQ4YZxza6F3nkqEeHsO
aVKnRX95vDHHTChDvEq/K22FGVquoXde9PRkSvj4X+o4qlnFzUDhDTfdGo5wXUCT7bk7e8erZzgN
TV+IDfG76KJBuRqrRvJKvR6S4qJK8abPQmWrBYvXuJne5R4G9NF+L8QIRWWPAyQUp9IupxGC+gI0
NVKLCXPXxgLRu8VFJ2zXuBYDJOc9oQI9N/bDxBtRnXKxE5nINTNd39deX3y7HqO0Xn7kBgnm+NRT
lwUuMm8U4cDhBmiGnvIGbB2l/+OopxGEp3nDiXOyMZ4onlhULhRxrhl6C7k6R7mhiCf67vwSet7/
E25HDQOOj18XdJ3Qg1qpsWmTvkHItwTjrSfCyrd7CHiTpt9kjwqOskcNUS2xf4lmOUCiiaNWL9Hv
jMWIGtKIWVAMJvLC5AzXZQgK5Aq9LWWqybypzau/HN//cgrjaDrZh8yOaoW5+EsXCfo2LbfqAE3W
4iDLPBv9eZbq5ePbLNrXlDNUioqzQT+dnx4DYXw6f7nVa89r3UeTyzMKAv9O5xD31Ja5AdZtDf21
yXkMZCnwntEMKQkPz7W+5vEtojwPLUHEzw3pcOEgc6NmHHfeKABBCoqOwf6lKlwN+zTJnyN+Rrip
UqaxrJhHGoOlMtcXpR24WVQnytTMXn8f9C+UR9ca1ybOcDAGR36RkcwqEhozZpvi9C/JcyC9IzcZ
TMjdWl/cZv8gQea2xC/hCM1wlKkskWzWBLGOk56hY1lXPbsULifzbPZEMEPFvtGDqtGZRMc3q0wB
nlRBlYjUoohbayGoMNliGx+QbUwVvnbCYiCBkAAyXYkHJ6NtSJFgVCZ8q0gcLq//MvOs5lNLH/tz
sN+lz080GcNvjCB+a6o7IzRBQmX4Ji2HOyqfabEVgdFgCQbaBPBDNU7WjkLe9BmnYclBIfCNiolo
NpRGSUpHu0wQR6lNVaG4XSgjW7xG0Js6TDp6OTVgeVOYY8IT3HsGwp5weIA3h4y37VfXLfDcGkL+
v16Ox1AGfPrwtaQVdB0H5sqLqOpA4zRiSJ80jHCNM6UegTedEyDfImpZUy8yKH5cGzegyse6j5gF
lw+rQJ2KokJufebUTbWSihNP1DZ0d2snAsFJG8AgHwMja53uLqFJ2l0YS7WgMP3h1ip3Q4QvKbcg
cgo6KkjIgStISqqITYNgtjaEMbPhnJsYpdd21r0CM0oYqnxOgliaYmTnACAXakZD8wyEtNc1Tpgt
9odfLsEGiV3SkSohqCYXY/UQydzq1orZVfJGtxayjxShWhM5/L/TNLWC9C8h09SSUQUgTzilaX1r
tBTFaxqPl1QxC1Hd7FCEvqY+Q2A1NFECZU1hbpSaZjTp15dPx+d/iUZZhWuURbkTyWKZgquj8nrA
RSRPTauLHsGMJ1Enh20cyreFvliN5TQ+4b5w4/fWCUqij8E39X5gtRAlpiaKnJ1eYq24CpzX+Mxt
PHDjwSQV/krab9R9U9vkTTOJ8/ProjZcCxahzerJKlcgHzY1mWLv8Ya+EL5Jq5IDtwpSfD2R+5m0
+kksqfE4qPjL1o32++iPN4znRpkVEyGO5JSlKv6+LQA2Z4CmwsANmtrUspMmckRUgCOLrE/71aui
DfQHyks0jwAH9W8WBKb0rmb248pH/4rwbZPDFSZUZ1WrKCF0dilSREyfd1E6MwT3WyMP4ni4ziZE
JNBU1sVBqLwVpHMR6jf9Jagiy39JzyxJ+Cs6XeDb0kx4U1WvQnBGKLNOASn116GD+kNDZVDOFI3I
l+rw36Fuipr7HPySfk2HAjlehgpzRLfZakvOizKZt10hoRunVN0Sr2U12BGes1xgzqxASV2euOGb
SsiDJ21B8vH08fmv7//7CCOgNdusyQJp8jd+Wyi/5f7fp8hVucpi12i+Iddb08cEYShsK9DBBMrk
FHWEz4gZ1NRCwLjTtDWXpIM5qPWjVoSG0bF3N477u+f/3x8Q3mpjS18mxWwyrlefAZhekQSPo9o+
WNTrqRpgzWF2Cd+31C54KgOtd9t8Q3WGII2FSvy/UxOvtntkYTZwJaccrVtbSvJahNk2zHIQ75qM
sGrg0XNykKnUa3Hf+LbYpttEsICE9jX/MsVqGTJ+m8B1ShVuurQtwu/DE+7k1ZAs8u3/nrgBrypj
Ywz+ri9xShL/zuIQUWvDYpabHoURkJqqCKyRpYTfVAXDKY93MlCzNEuzLZpQ8DylyVJ5PBw53p3f
FPi1G5n2hqspT00OIB13mOQ+Uf6Agay4rfECb1i4JvPVMqaVKpPhspoJ5a+xvcAF1VaWKpJr01xv
KJOre2axMbdoStyusRo4/n7eo4Uq+7spzIQ6Jysqqv1N3aZYU94agmFcrp1MUV2QndYFzQqoZ+XC
lQtCrHjRjVZjFOkmjNCvl2cFPESeqNznBjV79FTv65tT1Rhv+syFYfdG3lBtp9EbQu3nd7YAFNV7
E1/GbNM4EB+xVJfS0zf3CqyyoQ0rDDOokLnoaxQg/tLVAkfEoMQEQzQ92UTxjx+Sn+W6SUGOTr+/
wCbJ3FMEl+LmX86hyfLhOoubN22wW5H0DelyyJ1lKJWEWVifyAkSGNUn3lC1pBjZtBW4oWoqwDBN
/FY/i+B9rBP2oroljMcs1TkKBRAt1dx+++IgfU1A4yFqtf+KIEhNggq6psw9HaKvt6Qfohfbd033
qEh3O9qvrTe9+TIbUjJxsNhcPCqkvNZwviUSL/+nRWhNx83qi1mFS+7bje69mnche8PY0tkM5oeJ
LcOncXK/Laf453IJEerl8Hx8CrPyBpNaWKrZtz56UWq/szCaLLl+wqyc89PT4eUKPmHXTzSPQF76
9ct5CJdyDQJc8A+u05/wVOoIJ8p6ohk5v558vE9d1rNldE4YZrkQYxhU++kYfPHjZfkK3iQyVEzN
0WTK8nXYz+1YTmFythmZfdvSybnLfFfyWLeeijNuQKDbniC5ED9kr/g1A61/jsT/FrILIieR3w2f
TInRIeOxG+d9uDwGW2XsQApgpsA2qRDNFkrRGZiwG7+j1u809XWv548fn0JwvZ4Ib8aXzbTzGQt0
MhhGQ8kiKsoXYv6P3n4hTNsYXVHcgSyorM7Iw/trnQgeHHPle+N9lO+0eWSYN+P6tsDVZ/MlJ843
5/h8uP4yQWZKyImfqu/h+eUQfbLNp14vh+driAGMv6TLl2oYbrOZa0huGuVWx5Nxgkibj0Qm+uf5
PN6GKdtoXDv7baQTjr/C1q80vteIg9QoYEVN4Lq390+Hr8eBnhM+ZllHsLwZKPoNVG8IWtmeawwt
ClbaPPj1DKfPH2d0UkiuEYyn5ziDcAKptktX0PjzMfXwh/jn63/Fzlw/LloYfZZQrZpGgTnfOaYX
wfNyussbqhHEp+Ph10U/+Hh4GX/OrZ/TQehqztuz5cl2ITlyPe35eREOb4fxMNHw1TSN2fk+NW6Q
jBRrcNkK0LgN8pJxfm0z0fv94QKQHr6WZkc63w0Uiw7OL5fDy0tKRTsOwV0Bbyj2/cvnFQchhf06
1O3jcWz5QkiC4rlrQLqml9Nvx6dwKXfvj69fjsfnrf8/idBIEcMVVFlBB97Qpl0h9tSL0/fi9Njl
cwubpmVXGT3GXaEvEySZWSfJ/3KKiGs6DURVfpG5fzj/Nvqajdn8CRHVYOuoNe7w8fhwvhyqjCvb
HU+UiMRbyCxu22jd0k38cox+3y2XN6ZVU2i1lsoFSz7lTdyFi4mO3nT3T2FKS+7p+fSaxgRfXp/u
3j+dH34Z35criGgEcyHw3wIJhBHo5QmdEHjh2qY6K6F1eWLSRt9ez6vWdQle2dCr/C3MJ7yc/hlS
JJ7C9sf0xdcVVJCeyrRrVDINVJz6nW9Ez6dF8sR/XXAzPkbheh0UdZ3LRtcjpDy3RuAsZlSY/jv8
npfdVZpsJTxGzeD9McSXg0yMf1wxXXsSxaWSURl6Nj2+jvHv1VAI7/G/rHEXOy9ekoLyMD6AKrSo
Uwykn6LabhqmNEfWE4X1qkbS8OwevWNxVrbVdQErxBvCKB9TUu/l+HI8vN4NJYIxhbCaPGuKrMIB
g8mxo60xOYkqDsIva1L9IE4XQJgnkLQs/Hp6WBgkMnuSI+/Pr6/nz2Nkl+9EjSk9GUKLQUZeRKog
nrysX+Ujr4S5kvA3EKghxM37y/HwS3l0ns/vx+zPK16CZ4OXMcT5zoNEyY3N3p8eT/GyLqfHsajW
dUO2GA0z+TfWF3R5/pqBCf94O78mORGvLE1dv66huMPT09fx/XFCYWmpcr2Sb3pLVcGiDjqFdtmT
lXxA8XuL8hxiWdy8P72uSTHjXcqqVuiqVhCq2XpFYza0nY7D2g/lusnwoPUfTVr7+JuVaGLxrRHb
7R1Oz4mOkzOhUydeF+p8TQmQaQOFDS/jF8RUVS0kHHK9ptqGATLL/dyFDWdCXUzU8Deg11nUKUxH
WWwk2p+PH5NMPn/4EDyF+6d2TBb12YttENdYbObyxfY9vVxP16R/jFm8OXri0xbbnw+Xf7wdjxM9
woruHeP/k/sa31F9PULhCs+j5ePOlg8eV2U3yoHQja5EvJ7Oh/H5RdWB6sSDxtW2YODjCdgovtHR
ixshCKHTh6/hRMtOTtdma2PVriAx/M7JnWh7Cc6JNfiC9TrKbupYMNNgJmlgekcUCeKthe82uEVB
CPCqj/x4+nB8PX0+jmUXI3SIh0UbW7S6DyktZ+HVQG2vC/LD9oD1Iyhz8fFy+PJzcAI+/mljU//X
z2N2FwTGV+t3MRZzVCE9y5lDx5RQX5Gm/2Cl80QC6yTcEFpJEjXNDEpazuvh6/Uu4mV8+vr41W5g
I+3zw+Ww5ijPxFIRKFrE7qyJXh5Pl9evPwZU/tv5kpA6xiYj1CD6XsbfqEisOUX5RlYR+Xi6Bj/h
tbHxxjKuPppNdU28lOfjl/6BS/p6wuEY/YbQGXPZYnQDN1p6uuvAXSE/5jFyXXySxjRUH9FgZXBv
fp9xh+wuJarTJ5gZLFdYxzHLd6/nl2rmjvdpOw3TtdeU+sxfEKvYcstNvGy95VUJLDsZf0Z1xKL2
ArO7jMTHaF9CdSwsRs6Ph6dTcoQ+AHVNd5TnOyQnt8eaLwbooaG22KXBbaVKQdfL5by8f8FXd83K
bxIsz+eYJxidGLcZfMIThvSVlK1/+Ok6RoAhkEnaet/koSqkY0K0aOGYHQeeYwr5NZ6+ubT00LT+
zDHaq3ZhS8B1+hLfjS0WwccKd/8Wj5/g6t6ogZfbBEPRpaHPp3xfy5giqKoZC07GOaFEfuO2oLQq
LKls7GNnd97hiVZVPhBnVbON6pKppRjGRVivDbzHKqQnHMVj13l4/S9HIMwc4VXKwMUFlM2N1ZGD
FFOrCd1mbhrVtVZH9/it1sTV1xVSuvgaO1stitBR5putMktIkmw7J64OmSmXINrvsoQF3g1XVYKQ
n8Jdh+pFKr9ezl/vouJzl3gcE5hxs1doFRZj8SA7nU7vP5GwFerpUxAD6f314Yk2wPKrArp/jIyc
Pi9G0/iErLMkZOenfThfnos7KNHnmGWq1yul3WwNif+J08t1VoFdA9Pnp5An1CyR0RBew2Wl0JAm
OjvGEk4RH275fDGQ3z4vb9hLsGaiNRXDm9mFcoPhZy1hHSFWLQoxZpte8vHdQ7lxmdUBBulEY1RX
A8xFrTpnASzk+fXzeZHs6eg7IThGsSZYqBLYLUFHz1u9vH9h0x2k7JtERXfLs/Mw42tF3Ep62ULI
J+lw52Msnb77cHq9y+HBx7uPx0X7eIiI/jB+2GrsNTj+9Vqxd9kGxcZYc4Rt0xLmisEJV7rGOA82
jS0h/1NM1Y2emEJ0EGmW2c5R0BsGK0WfspPyhkesSh5XSDgn5B2evkRrOXqi7lbRttzHh7enp9W1
OtmtIx4WSmYkgr5dZMgt6fy/XCbxGt7CCPL58BD/e/01pdJ9WMj8uv7NXfgTnKjE48dToV5EdTCG
hNV5qfq1xRQIFvPbc6g2HBNU/p5evyd9zJq1/1/e+Vtwp0Wg5daOH2JVajE5xliO6kdO67J9jcNh
uaWQGZnLqBeyH+Rvx2+kjPzNN96fIgUtqv7lcvgafG1P082k0i5muzv/cnz/88Pl9PKayk/vjr89
HF9yVc/hcXjX8YM5y7D/4H9fF73yISd8AszIcqoaIS+nChgJ+ukDOE1FbfVjXt9eXs6XIIMOl/dh
MPavsZ/d+fH4BLZC4SXsIN39YqUFh8n5+WVR4sA95SRE26dCha4XWdF+WZ7Hw+vbJahaT8fX45R4
1PpByWLnCN8i+PH8GWtE6RuibKrxAp2fgwWysDk+ULneWASw/NJfUtzG5+Prp/PjXapsid+9jhgt
XZstH22y3z5dgvUaae5poTmwpwreeECTW+wu8yqA5it003ysP0+aJFUPBU5S7rtxxJcmq4/LU3j3
4XJey+cvx/Dwgq35LT9EYXa4vsYfX247/jff+F3SYBcF8eVl5NaJufopCBF8/nEo5lpkdQje0Wg9
PB5/i5OKxrSQviPX7zSY+4+///nHH4L+/Keku6adLjT9/ny4PN5dLw/ARxkr++Kb6df5DiodOt7D
etDTY/BcDcIsaWuqHNGXSY0reGxMcbyOZUn6hC6nY8l/m0TAb+lIv6H85fiBpBf6TNWdBzxnqYeP
RZX+/PQU9vW2GJifQ3HBw+HxOK7giV9PBnK7vVZJ+XJecB0KWY7jL2RE277X6+qFuL5dLuePgW4X
EXcBXyn7aPz8n78enj8fQvXjAZOiK/cUu7ZyWR6g+OQnc3bRd78u8vr5nINtC9bAF/36RRnoR66D
MZZT/fI1dmhalL9oG384RsF7Bd8qJNAIyhQWO61+y6HXM32h0EAwP3J+8eunwyl34Qj7WBD1S9Gu
MLYK4/Jg1vKcy1DqP2IKau6zHsVMagkwSvpIdFSYuPHFfTh8Pi26Q5AB8R5SdcWi530dy7/0Nd9S
Q44YP50+pidu2d3jKXTAGzwG6ZC8fKLqzJMjgg0Z4munkMX2fEihoAj278fjPw93f7ucqxtukfeX
MEskZWMM/f9J7BfFpQkIxmSQD4eQpLloyxGPX8YiI31HbV7XrHDObviUbNZYqgNwUci5rXWPlkLI
him91n9ZkIPpUHZ8sTqELznPsJz59Xz39vzLc6gqCMcHOyuiKJhc2Q9Sd7Y8wMuNIFEmyoaIlnZD
thBgR2r7xfDJ7xaV+phU4/yuvYJdGd4+AKsPJujmAKYIjCbiBxlYF5aLncMzxRyfH86Pa13Sb8/L
tVxfjy/Rjh6GbctUgvj6tjUni8n7eLwkw+wUarQuC3+cFg4J4nTUyGCt0o9f08E20zl2sIj3w+Xh
U3Crrvtc5GjoAfM66sKzlhQnxaAGYvbbGcOzFX4RnCz+KkpfzgB0F46ZzIPxR/j6kSDqHK/aSfzp
oCmG//99ZL1lw1KshmXwe2RfR1De4zZyllUsUB8RWP4OW78TY4i09fbpcP2v9a/+1/Er+pwqn3Nl
Dut2W08x+TKVFuLKzvxRvn406ItZ29zusXiOoh0cYoHhH6O3+Pnu+Xoet0HKi8iyiElzxCNxXMKQ
00S2T4s4OD6vHBHCBovp9eF4OY4mHqcPp/LL7sORvQKRpC9HzTTZlIuyAyRKkQbNXMAI/Mvxa1KO
01eiCwc+kVYQb3ZOmIvO/+XST6/RYMaGgCO+8xxLjz8fnsO+FjXlEUm4+txXlnx++/yy8NECHYAX
3WFijtgq8vpEH/I0cTDDBSohpiq2OSEy199tbJHQBSeEioOaDDRcI7YqxP9L5ei5ACN9NiArt4pO
HtBQ4RqEWmi/dkGkazr+UPnznw+LvfMLT8S7Wnw1UJEWDUkBPaaSV3Gh9cPDp6HOkt6NevkiysS4
8v/LZkSw2bNuFPtznhaNKTYmZIxus5BGZKdvhnK6UJ6b/S+nfx7v/nlcdKvL2/MYNuXwRVhe0lg/
n/959/7to9ZeCwPW5Stsk6i43bcFa1f4ZkZlXnvRxywHa4sC23iKQiPrL4enRZWCGJOMWnm7cwVW
tyt8W+XarS7Auct9tZWgHbQCe2flxmpp0Xbv6NZ8gfclr2ALD3bvKsXUQvDDw+lRJl8hALVl6dge
UBMHB1fuC9Kb5IMeWgJo3zHJ/spyc1wOMC8JPttiDmwhG5K6e4s+nX47He+6r0TgcIe/kdoQtyno
7Td93zkbAxSNsLHHArKHAEVra7wUgaWGAIoEcGOA4nBqB/YyPwZw1KEX+TIEMCSAGANwQtUNvDgE
kAWgGRexkMAQQGwB9iT0cjm/noNODWhZFUKqA4FruODD+fJleWlHz3+ixSpFav1WSP2MxugJ9EFJ
OzCd6KeFEBLf5QQqNgstov/zW4oGj+ybBC0J4b9d3YPdS0KE9pLEADFQn56ad7gTwAewfMF9E2ne
fsAB+LqBTNhp2sTb6/Pplwjx/fk5xPhC9kz8M+f3f/pt0byv19LAgPN35v67x8fYSeX+ry9p4fpv
78T93z8d739+e/+a83fvzy+NfPo5/9B38v7v4h39yvO4xVSYzvskxAIu3vH7v0sAnjqZ8z4+2q+u
0OqiW90Rq3O0uimrV7nWrs7fCQCu6tn9HjyujsBTaJX3ib4FHO67LNzQWLOwwkhPc9t4H0Lvke4R
0i3C2mTtVPvP+5yHFhidWzt03QuwQyvr6WUjUlO2u2y2xbnEW1cM8UnEuUEnV5OTI0JLHTkAztG5
U9OIEdpEkCSQVP2UVCGLCYT1iHONwB3i0GVtJNqM6raud8DowoycUJt4h4hVmwmPoVMbgUl1wmWK
I1qLW4fUxlqxRl4ZXF1NGQWdXVe8V72wXx2KRoNkclwdgeueWajnDJ7dbzEf22gFcB4f7PSk0681
XxZID54YuVo5Z1WpNRvRzwFD1EanCXb7Vq9rj7CT1i5GwY6ueJYkY2jmawx7K0g4fPPS2ryzYMQW
evhUp7UlPrmYnJwrdPIMzwG8IIydHnNo92Z6dg6g4doL1j2gGIXwNnx46uicrb22pTZE6aaDtyTO
ATzvOcXu9m7AuXmXb6F3sBrAUsb5dt8Ib8V90Jg/7dqITl13X5LEOaBTptGdgYcnUZqfUIsDWJOd
dNDkzgHWmEM3luHBrTHfwZvd3hF3GwSbZTqSbQpRjEKygXM7lSzoxvSUxziUawzTC8cvgpreGVyd
CYQ3dOzC3jv9qh4bIR3CA504bbvGXLfaPIeGSG38X52FPodGFnDO7/9wej5cvt7/eP4Y0jX2foPw
v/Kv3/3lj+UnihoSf2L6nsqRnEng+ARKDZ6zdW0o49LQ8oS+XsNrwNHqfCCkytYVALaDi0/AeOOa
DVi12TjAuRJwbXDkxtXaa17NZYN9N+5pCnyCbjcg9mZttPWRylnWRhjzEGNxbXTZDFIK1H6YnpIZ
InEDSVziU+vtdRX5sAi2Ihp+Inl/4n3i5U58/L3d7m7itEvwvMA7Al7i1bMfZgSNHBK8Dh0tu3cU
PNy9XuE3j06Ch6CsXbqnR+g743UuOEY7vDYJDz4UfHn1emmeOPaEZLJPgHcTWTd7h5dWzr4XnQK8
Nxnatavv8A7kQIZXEHNqgjndYY7t9w5P7uHJJ8Suyp2vUqgIA3H//fk5OSMaTaHKAkxSqSN6qiwh
HjREEamqs4BuUYolSFrXlHU3LIjER1pXgXXRkrrA1fkgzVEVWNIX0I3AwrSX1i3ATcPvDliDlVlZ
We82PaS7BCo7PPnteQGqvAEolhhUFNCNsoCFREKVLajq7WaO+CSta8Fp47oGAHOwaYlJo1BVG3Be
QP39n/7xdng6vX7d6/A+uxLjT1z3nBv+/TuLbN1GL+p3HEENthm5GvnS8sLAnaQLaMz8Nz0oWFPo
gQoaARW2VvhG/9U99ET9TcOFq9quttDY2JNsYClFaI3M20bvrvkLDSjY89DI8dnABatKtOrEukqT
OYYXpdHCjbrdBzUrVSJo1arMgm0pBCCrMWb75yQTNPA6NdZNncnTrIrwbAfOj0rSiDZGjrp8wei4
vS/bb0HRqgLt2UKKtAOjP4MigaMH7rUMCryKWgwMKX+D8cmFQRRpITGbgfPZ3+Be4cJOeRBdcGX+
monXMBJC9cjHkE8MXObVu7FRNjIoiEs1tnJvsfpw0pDmEifRgRdP3X/nhjZAIPRc0cW7TocFFhmN
ATpnO3OCENLKEqysC6zYPAAKWz4BOheyDKDdMIwcV7YFdivXFLYX45lZgd5yncJOgghd8L17ctWY
BtO2GUI2EIxp4YLumAW6WxjgOhcjcEKmKqhkpIXNCt1kzxZoC5YViDQdXDRXZHFCvqnw3I53W+nK
bSSMCo/AGFB1BKm2SEIYsggU3Km2iCLEhCJyTj8ndCE11gzSjh3Ckhva/fFqCj3sZLjCbqa4ck+L
thGJuhWJfzwfr/fP59f741A2aiSheJS/xSW2I3wNMMSLLUH5JyLskN94eZ0pV9q6aY6AFVpYTTxK
XNmBVyaCa7Rw9eKpjc6nkUhOwMUVtZOLGjoPeXVi7RQoPXe68saPxPfogjdc/Vd6Yy3quduRV8ch
dU9iek+sA1db+oIkUn2WtfNJe1OQOPXAabgCKwRsEWXPfNS8uu12upTGTyAvyiflIq+rQ3CBwC06
tsR3rSakUlla7ZlDQVmi3FaGFYGZUqVvkJRi7L6IppJmqWxTEgQlsMyxpbFDBN9RhRi7bBJsclEJ
ufO/56UlWteUdbfXIqBlnZcWaNvDa7GlW0Ta9paWxNgRkWE5WlfjI/sCywdH5ujI9aJ7H2beNlxa
INiRxyfD2m7boodFkKnbgqAsNzF2vORVXXtJW9iR1Zcx5dC6Bp42+adHl4ReFlvaWAwRPbI489K+
oy1BLA2xrdCpLT61REuP3BlZABWM7d7iSeTWlk4kAGMI1msMCyWIQrBiJjetnp4aXpbFMggyJMOX
pdCpDRLZSAmwpZnRUGqrGYm6KhBMTkVeQ3/y/rvrNfdvJ3KEQuLVz7ErXfNzNTAoZ25Cps3AFZRg
ZzkfehRgSOA430S7gbNw3TfInNAjH2WCRauOcmzLltGywzQVeUsullYdOKfAUVaS3vp0C5m8CzHi
zy+htH5ACYkQ+bj4Jbb/11Qru/YLepycGVvM1xaG24CvbASIG35AWUa0HNx8gA9Uv/gBw7quc2Z3
BDXOVYxHqDggj7BgkY0LmCIWZe3juCOT+AWDr0F70bVvlLsPgFrBdAbVdZLU+zOMU7LjB4QkOnS2
HxDj0rX4ASWJDpTtB9w4wTkikUuizePuCA4cwcMPyDGzRjrydrK+wxhIYwK27UDb9cUooT9un2ui
LWQFx5tXAvKxQAUkiYv0hALdOFM6XR+H2wfpznH92sB0QMB+Iskkn9x+WB9IAW67nmhuj37OxtvX
rFvd03IUEG9t6zm+QInkqMPUp95ZTAGGickR/DjPP9G/hxSQGcgCEvIzCcAnX9AOfkFMiCBr0uA5
VJNrNPU51Fsdp/KhAXzo2udw95TEE2hABX7+msp3CAW1Y+9eX6qUDBipaQpI4zA8p/AWlZ7cYlQJ
ABIbrUZ0zqDuMRvzgpYW3kLkBSgNxQwJfvIaCjP5gMWUaJi9hZSBTmLMRKmRE0JQPS9YWh4Akc5d
dwTyQQdCWTMNmSGSMtLrdO2TOfgAn3xAzISyGZezpGdBTZRbj5XbNEcQsbPCUl0bdYtuC3ipEUlj
eYCQkFuOAQVdT7Tjpgv48HHlwMpR2kxeJoHlgZYz5dZPXmfhJjiQE1JU9haBAp53JiekmOQ6UJBV
b2gJ+gyAGxRWkaNAAGQw1XDs5Ba9gx/Ir6sFj2uvJlrqdQc6XjUTySvI6wM6tu4GUxfKZKUmSp6f
vEtSTkQin5jrzatA70BMPlAthU3cstMO0Af0nAyQPEp9KNE1qAkjVD1370pbGQEYe5WOSVs9HwBp
ic3LOBDqk1dBqAkZuIlA5BoqByspg2dFsYl6IZDJrZmbiHQ9cblYbGzIsS82XaKZWAocSzPV+Ixo
lw+f8IEQ8A6jNANaup/ZzGZibHk1YSMx+YASEyKUE6fXRi/wAyIE+pmciQI/8T0KPbH4xCgfIr1I
buK20xNRZPlMEvCJeqc85EP4pitlb/IZgAdJ+4le47AL3FTP0ehFmzCS0QLq2FESADJuNDP6RTQT
vcbNDCU1kQSGQyri0Gcx0eqyVgOcn3bmtZETOaD1hIjUBIF6ZuOICRfJGzQ7jlSKxvM1dD6DMA7n
MzZiE/NAiYmd6CdiQMyoOLERsC8Mm5nrE3s9zSeeObGBG9iriVJiJg+Kn2k1cqJUTITpikWgWGk1
V9Ch40jYudMDSpNmQJYf27qAHZWZu4GBPGmmoNEH0BPl1pp5LALYqVxOFEOBtHvNsA9YvoPiOCey
AD60k/eQzZhATVwVlY+3XS1avQ5QoLrJ3wN0ay3moUQUTGLmFvcvEoaYBSTW6jTv79DSGETvkZnb
JuACGIePAYcq6dTFYCcGvsf+Qo7CsEr5iXEPo7g5hQz4W/3kEZNqcvNw+3rKfBOrUItZOoWdqDLe
ThQBPdmBFXPpDcxad0NKCySfmpGyyXXu1Qj0hLKJo9NOvGxM32RXAqtGmZuicOAQisNnBHuYajbI
IJxvJ2+A74PJg8gJ+ICbha9S2AGZ5nr2BT7RibWeyxKg03t+ky4HnhE9C2DJiSaj2dy0hKEXL28y
LIA60SQWDSMfMEWtecyByxrsQDIoksW7iYdD9dewexTgW6o2nDzIiwJPgmSTqAk2ajQ3Ez+hnVDh
RBvINwjUiQZ/fuzqBCqF1jcphMCyM5gX8xdA7EZ7+CZkLwfQLJyYm4bwXat61cDVJya8rPgtIUSQ
2MHMLS5zQAjNHHFJJHaIGS8oe8M1IpGuzIwbxSSeLt0tdIBI0clbQieAH7mauBuh315zMXcZQ4Hk
emfX4BYRCqyAITwxS3dVRk1igG7ireLslmxV8CqJGS+YyQf8jBvdREUUbP4BqCBVR8P4FiQys5tU
MeB3BjgwUz15ItLEDZFQiYJojatHD7MioLFQc802beN7LQ/oJ9pM/GV6IpOsnXiMYFqC5mpmKaBQ
8sTnmskQaNmNPGJ08AGsPn3T5AR30+2LiaHSGPwgNQi8qlLMoxdQyTfylg8AgW78LbnHwOnBcNYr
DH8pdUOaIHjRvYfKucSJ67rJswTRK6DfW39LKgVKMtS3JBkif7ucV9BAb6ER0Fhf1WvAhkZM3mM+
cdka5W4p30BixEweIzF5jGoof+QvmHjOuJ9kHdtJHJmxeeI0+oCqkoB0fWViBsxk7dz3Dx9kYyfK
pZlwg2e3VMKAcLSZ5X6bCTc4t93BWrcn7/92vr5+OP1GzJQLH8//ev/H48Pl2JWAlso+idvaRmdb
Ch5EVuz1ATmr6Y3giRG43oVfJJ6PlNZ2Ze2eBJMgB9X9aW1V1u4JUOI2zGntCtzTjsR9kBNwOfWG
/fPGZ0jjZW22X1tOTu3L2j3NzkqnMrhDW0fF+gm8JxdGnByuzgp4/wDKWb1+AtfT1eHmxRQcsUoK
tXK9e3ckbrydSEZ01+Z29IYIRmjEZXJCrHwCDFm0P7PcAcNtsy2prrJtQfUqv354BvKLY5ripUyd
6nMjc5N90MiJmVE/JQnb+2dgO2i4VTeOwGsTqR0zoOlECdiOmpnj4voMzAZ9jWaV6vncYtDgJ59b
4NUNG/TsknByRwbuGwRZYuvwyiRae9L+3opBI6p632jr2g9aUc3aKeSt1w5cZn9yPrs0bRHBTFrv
G71tQN9vfXbjtSNU30RPwjkYGbi2tXN74EnXflvve/ta8mnbfcu3KFsFmL3/w+n1y+l6vP/50+kD
0X3D5u7ePx6Xf712P1PEmy2H9+MOgmrXQTAfwM6IJkALNuheWNc2Y2jput6hmoAGnROlGfQttVhC
xVOLtmNj0/vWTmYrpVOrQQfQum/QLVLqQaPJCg06ckrbdUxVu1ODlVXZ96b1fV3ZAWiG8D3rEysE
2jeamNnMaN93jLPjjisRkHt05Fl7TaGnBAoamUqFiQw3ihUckYkGIjFelp0wJkfoFoUxN0abnTSW
TtAWEQoazRqxxgZ9bi0Wx/HUuusAa3ewAN+qtn7W3dCBjG8sCJWZUAqHoowj8kbzySO+/aAFs509
nhFaThkTdCWWftBZ2E6mHqS1zfTcSBTuhPj6egb5vTyO//kcmhEdH+9/On389Lp5SptnUmJeDgfL
QbogEEL8XrdIlviCEzgv4Mufte/BkSyI4LqAh5RAzXarDy8pre5X8KCfGklsnqPVXdn8gnKtiNXh
2U3ZfPi/IcANAi+rh4pRx4jNQ9TVsy/7MJYA12h1Uc6+CCbNic17AG7LxcU72GweIV3VfS+yzLge
Eskj13Q9XMBDhNupLcEJDJ6yXOKxebj2Hnws/13T9nCAcjXZeEF4qARyFKOhtZPxFzcuB7Tq0OoF
PJRHO+q64eoaX9oE67kFYbDWg/ucsz3eEanbcmkhjrPlFKTspDvX6NrQq5/Ay+YDyxlOiDi4esF8
kJVmf3IkYqzuTk5dG1rbyI5oNAEOZUQ9uQkCfntyOTm5QiSL3tAEXsWr278NSC9P4FXA2bT58oqm
jsg/L2/oxM4UWCDZRhJKQlMQ+P21jRjfD6OyxaeNVtcSrT5tLapGrZHr5lH3WyO7xqa71SctPvUM
dRy2ZNWjlqx18wjc1GayfUjX4kiGbTQPuUsoqWt7BG4GDXTryVFrVW0Q0YhZe2flBo2H6+ZR82Cj
ENFM7ty4CcVx2AdcW0RxSKLZRuuRhPF5S8tlZdG1TTvx6lH7YntT12WlBw3B69nh6m5ybYjibG0E
vLXFJp25lZoIOAFJ3dQu6FszDgYrbfOAjTHGsWxWiFqQzmUbpWnIpXJy3X7Qltze1Oxai5ZWt5yi
ZzLC7tq4r++nvv/z8qOnl6fTw+H19Otx78TVIQh/vDy03XL1TFmKXCH9IMqqZyZVBNc1ytqLdJ11
LQRsRiFaPbMG09p6EPHTxThAJzccrT4NTysxCI3rmX6fNj+K6q+bR7FO00X1ScQhcN2nQmgC3CJw
N702h8D9IJdCz5TUhHeNwJFMTqv318YJcLS6luja5IzmFKT4SQKM0YN8Cj2zZ9PaHrEqUqDS6gwJ
ismlGTmRMhxz+igZQ88cN+nkDiFOjarV8tYdkjLoTUlry0FOg545jdLJOTr5NAlGQRkH3wWH+AQp
XmlhhS58mqyl+gu3xOrw2GaQ/1JfBkitAomYydpmJ9jXVzx4oq+vx8vp+kvzSONAhi3RTWrAtS7x
yfGsaas5ggbiOkKrsnZ48JTcQY8Eni2RVWpwup4EM2wJCdRx4raHngxtt6Jirc+B0JOYsC0RTmrI
tp6E3GwJpAyhAdfbEh9N0J7EmkA4VxxBA4FlSyhkSC0I3WWk+e5lxEFdW2J1w8saimhbpjVSU+f1
JGplS8QsQW8lFZ+McbdaoGtWaBS71aq7JkZcMjizqtjuEwfWlQFL68IYMbbpiZXBTeXC5TG+DFjZ
TAQZWFfLbteUGAMrK4NEiZyIUGnRvsFjaEvKwRBj4DGzJckDCwMkSjTiDaD0JWg/3TnCWqXwrcKJ
cx5sSaypvEU9egDnmk2oFOBM6y1Xlxdc3P/8dLh+ap7v5BLxYFAgN4PELj1zXEZw1oM7AhyNOGRs
Co7y4bwbZJ3qmfMwgY9S+VbEOYQ4PQEe1NJmaDtIttUzR3vCm0Tgk3GabDSjVs8iFAlrfjCzVQPX
X4R0apD9qGdu6gTu0L6RRyUd204pHc0wZX0S4x7laBIon5x8kjbqPAJHLpG09cnqk/RNzxHicOIo
53yQIl0vDdKqQ4Q+TVN2tqNVtVsdDSfmYpBnvAIjDuVykNutZ3G8hHOJaH02s5Z5hoTTNDHdmSnW
IbnqQUK+nsXx0ub1ILdcz7z0CVwhRp1N3WVeTKQMes/4/D1DFMcEujbku0zgc8ShHG9fbj2YeIo3
IxLZ/R9Oz4fL15KuvR+TyILq8pc/7sPm6V8moxKUZKOOQ2xiJ0Xwpi32ppCUTQyWtLobTeJiE0dC
Wn3Y/oxNrPm0uh4V07OxWRsh+bADLZtYDmnfw7b+bGK2pH3bUScINnEkJHA+ajnJJup/KkFnEOng
WUtn1/M7A+ByWL/NJk6ztPqwZSyb+L3S6sOpXWxiJSdwBckGPC9p88PBh2xiMyZwA8l9MuJISTHq
vMEmNmcCNxB1YjKxUMzklMSok5DjxGT+APejHqNs4sdKq+/aCxYBv+z7rz+RwltOi2uMH+V1J/BJ
dY2xrEtndxvwSXmNca6rfRAUuALgZlCAkMDBvo0fpJSvx5b42KoD19S+Jdi3HpQfNOAagFt47EmV
jPFscnZYJmOsgBQzqZMxribzG4JiJvUuxur56gKsrubkDsAtH9SslNVR0YqxDpLNpGrFWDtjNg6p
js03j5itnD2IcSkpcIS6UQnIenaB7x2TzaQIxDg/xzzavOlWt9TZEcPuKsuq8Bb3/3cgvSf+gRgI
zCaPp0TBxHCI8NmvA+E5gucr/P5JnvjxErwu8Dt1ZmJwJnhZ9r/j54m5HOFtOf+2CQ2bedTS+rbA
O+L8CHW2XN1en5iY6gledqj3O3g5gbfzoztEerI7+n59NUG970iPvDp09VbD9ZHik/avOvxbCh6S
noOsgx6ytP8Kr7cCceLtSOuzGesJzLpmfv8G4Y/P4DlmnUr/kmB99CAk/Jn2/un9Q9FX6G9vRU48
Pun8bHv/Raqr++/Pnz8fCKmuQoe0cY4HY4MEkQA4S7nMI9mJ1JoADQHNIBmoLCsQ9KifToGWCNoP
0lr4/d8up8/Bc0W0f+KhrdSn4/2/X85vL6fnjwSql58Y91UQpROG8/vMghXWAFi7wm4PHWDRohwB
DmW2KF1H0oY3r12ARYCsAG70l7yoBrCm3XDLZxlWAlg1OawCsHp7OythvNP3f33/38eH1/sfnk+v
p8PT6Z/H9uL1hMnMoN9XhMR5loyPaD3BomRDpkZclmDhnkfZfhFWwawzVjPu+iL/CAshNdqxwpjq
E7h3p4XrjrpU5XUhpvxWCBayEfc/PB6fX08fTsfL/U/HD8fL8fnh2BAOan+aHO1qFF5ZgVF4Q+2C
1mVri6S8XA5fC0FfO4KO4tuizjajVkgZFoXStRjECDMsRIfrQmVmC2vQuhLvGfaNGvVPyrCwBxEf
XqEChJnO69G6sPeQ3mK53H1qk/P66XS9/1/Hr1/Ol8fm6jngs6SG9GpMi0Y+3FKCNCMDJDpjofLm
3Uj5TLBwx8Xw2MkyDmRZTLplrFM6eQ8LVy3mQpEL+QbcIgueDq+LenF42kfHXGljdL0ul3R43qsa
Lp8ZaMwLd/hMePtuoW7WsiRA57KQAbQakXwAzRn2dvcAZNBRukuENQW297tkWAdAVQHt+za5WTee
AJ0iVHzf2dTN2uJEbJUjbxzL9a6GEibC67J67yvLxwaguQxliDE+nKaXsObxyuDQuqLM7leWaKpm
gq933We356U92LXuqNMQ+B46suLSoiVR4tQCXneupbA7/bY9OcJc3b7cn1yiJrgJniF4hUAN7+6b
k0sjSjfo0pEXKHKZ7/iEb6Ex2uUE7XyC9lzDYnde2fXW0ZVbJF0kagOe1vYdvCGkEzq5RtJYonnu
aXWHRTJ4RoyYPiOAx9Ut5IbgLboy5CuIaDM38Bl4UrRExK6QhDETUCQXHZKLiEoUApSow3lCtkI0
KtH4nrRxteXPVeXJ7pPT8/X1sNhA5w/3571WY+ZpelzwQR5vBDc4w1CO8r0i8CQXVthBemIEtnjb
0g7yKuup4dpsYEOsa6NsVtmbAqYHhsjWA1MtQmq8rPAI2QiSO3THsyRULuTkluGuDb6oGbhARGLw
xqUYWHt1bXhbapCOuK4NCVQOEjFXYEhhHJ16lgTKuZ+QGUQaQ2vPUOYQxu1kZbMFLtLOZmlHSTk7
b3Sp2SDhokKDdpGaI2jQc1GbQRPXvCzuDKpHeRp106hbpO9yDXwPjQDdIEkhAiI06UGb33padEVy
0A+0QqO11aBPowuAMc5weD1ekv1/vtwf//HW+AoaYlIzLSZ6MZqod+89iR+A1k70AFcvyI7H1Ez3
TRvg6AOz0LGwfODBce8U9MIIY/DCOOYrjO/ABXFwmK8grMbr45i12MTc7fbiEM5rqsZOZ1BA5U+w
ahDrr9uGpxaDUG1eWqOlJcKYQtkpovG5bU0VNfMKJDpVmFEQrTTxaQLf2CeQFrc3EBvaQc2w2Elg
BXxnafcGnXyWHCKM7YLTu1uD5/aDxIb21hC11qScTegnL444rImqEzjDhnVanN2we8jjI4f6ijqE
u+qN3/mx1MyRlLYPWRWbfOkDI6/+un2Gtl9zUrYOHQU8gAnWIorFjqyEeIf4bZYPIizDQg74XdOj
CuXFLB1HDDPJWmkB6c5g/InZB5qEJOJVnqXCCeO25y86kNxEQJAGJIFkiwFaP5re5G5qj2XlIDYc
wbGAiB9wcpBj427qu2NHDWjy0TkANjWwvbsiOdMc0+YdRt6kXZId9fdyNzXfsX2LLL8Fn7SEs6Nu
S+3p0QccH/QXczc1LbLiBtJB6HNiMG6tfgCnj1g3xQDOA3EMX+Ck/ZGt6St9zt1KvIhvBSI92BAP
cjwWjWnbfsJzDPEcx8CoS1ZNjNt5vuTEUEtrj7q6ZXjUH2yYVtdSK/qAs/gDYoZ2X9ltqw1IYO0k
WI3uXMHejzWPkZLQWIlKJ9cI7ViDTR8w+OQQa5MHSsyEhGeYST0iODZIAXU39TezBfO7cKCcJV55
NeVy3AjQebR3qMClsysEj70iaQOqQ7xqNCCRvUDH6gYidB8xecWiz8CO+kK5dQL6GNZD2FnfHGMG
fXPanYP+TnbULq7Cw945pvaH2tp2YqK6pfXloCtWxhxo0+QsRjpY1alBnyQ3KdNIZ2bozLPuZUbg
bYNmQ652yNvqKmIsRRKVMYRnqCelexKD5nyumRAOcOb6HkuOXB9ctoV0jl7tdHw5aG2VwcHJHQSd
tcgzasqfsJuY8Yg/FWJt5zFrcYQv0W3bkNcFyM3CbaNeXB7fM2hz59yUxGHnTMsGTQndpPYnXZTG
FAa6+zmNzjxrH2k45kw+aV5pJ7IQd5wz9ob3B1yatdP3B/ass7qVK51mJsbWT0K7GLSRbEUaEgyz
R1/Ae/MKnXzWidLUDofZbF4VG3X/n7E3zC7rVWWN59fz6XGv6SjYTyeuydXgwBEW75ezwdOlJgKB
+QF5Ktj2KS1qB20zFWyVlWD1QJoo2NMtwcoBUa6IQrB8oFwo2CMrwZqOKNQOFl2QGDQyXDSS+79d
jmGo9R+Pw6HWKlbowMIhJwcFSxFWwcKhXOtNYUWD2xCl61iCZRsK0rDCypYqqU0C7HpYAOv45LAI
Ua5UWPWSQaXiHg6hbUVVH6xfdw3qwpye7Bqd2CA0A5067bpekt7jGkjDtDbr1ha7fYMze4ZWxtWG
TqAz41o4pzrq0gS+wMrWddCqYVe1siuYQa9i/ARmi/DRuGEFEgKixFaDoaRqFuaM0HrQlkHNsgki
tG2TPiTrofF8ZeYHWS5qFquK0A6dWsJdcz4Y2bvCgoQiLibrglGmvA6flWEALYFrkJ7DDLopPDKX
j9rdrLsG6/JRz5N1XYTp0ejXFRZhy03Oi/ast61OCrvarK99Pj2/XSlOtQghMcwn/CDArmaZcAnc
DMLrKiWzoQitlF1oWvewEsdXJUP7niQsCTc9NAQf5WspkAyXIEdR4XXXKBdACgSM8yikQvc0FhMJ
mA/SjTK6JpF4YbdpP4WAUyT59etLSDkn6Dc6ahEZcD/o+pBh0b64HaRGZFh0F4IPMiMUiH6lVVXX
52MDiZMSBDdDypOTGk3B3SChIcOixCshMSxK/xFikPWVYRHliVF954osiGm9JdtCd/7+x/PH08Ph
6f4vf/07RXgeMUUaXDNqkhGBp6FXWYNpWxXJI+GXgEfRtLz2JGdCjgLf69oomCYtWltOTq0Q0tCe
xSgatC4LDzyKu9a7guBse1eFkFzpozsgJIcQyottm/LU1eYZdOhkvFhsVD3ECoxK350YlK1E4Glz
aGu6ggZFgKMSeGsH9RARHC6sBx2510PDjths0Eg873rSut66CcJhE3O+reIohGSyKvfyRGtyqLdK
moujhs4fA71k3A09P6gDTVpUDN165obpRWzonzNzN6bovV37fQMPndCTM6Ndy8GIFwWb5yRYM/QM
mnnwkO/GpBTySU0JHo9Px9cjRT4c9wNyQ3/CWvaL/Al80DdJpbJE5HAqjozYRFIRCyPHz9j9ArpO
JFAx9FbxURGOKLInAW4pJxW8Aix7jCeEYrlddb16kQad/8fh+fH+59PjkeqOJWI/mY9v0Z/z4+n6
ei2UIXJTF0h3rPDpJg0kQ2OPNjOD6FaFBpzK3CBElaGxjGCjwVl1bQRdpURPJBkay0am8M5xwISN
xpzVcyOcS7w2lsuMbwNzK7HlMNDz8cteyIjcJg+Za8wMmuyJFLgCkHJg+YjSnQ8AjwpPRIogQdhR
S1WBp0gkE4S3+f+Nd27dNTJ+mO06IqrdyshA5XJgOQk8VygBj3LnBR7NnbbtJzcFgdXA0BR4Qk3a
dm9pmu01w4X5oP3oumuEbOa2+CoMI+//7e35IXQTuv/+8PTUSl458bEa7waduQWe3VwkAFWwKUp/
5PG6euBhFSlrcAwo0YahM9p4O6jYFGWW6hjWD2pFBR53XJ4IyjW77hm00PYjl7DAs4rLo1pd0Zvz
osOKQXBFlN7TY9gSXwl1ucrvNoziI/1oANUQeejNGUqpX7/ef/fwsGgfa+rAz/mfwbYCm+e5KeE8
ISnRtJeABjYm4NQKK6r04XdyB4xWTp2hAnAwzpzogcf8mbbty8rh//ttW7SyKWdeSN+43crozMkL
E4GXM5vNmYcvWoKVK2xoKKL0btce7doVYBOoaLdruHI5cqjP1mq3skIrl20HE97xHhguq8qyyx1r
sVsW3bFS6JrGowUTcLmm8Du1B0bbTr15kqkaDr1DNcKWLPcU8h882xII5MbCUCFVyOyvyaBdF1ZW
kUiCqRIFRYgtnz9eDp+zZFDoKXFNJLiNqCrUM8A1AeA2vKdQM5QIZ8i5Iwp1t4hwlnzvYIzbNS9z
3mRED1sst+PDW9IUzs+vx9+ymRb7T//pOQz0fv54/93z/ufKj4Uf/PXwtPz949rHlBUdF3dtdoas
DingwUJEPaObZPnWi9nCWwTOyAqLbnkA3lThtTpnC64RuCMd4i24QuCW7CDcoh7irimOGeHeoOV9
N4VeEsuj3dcaws5WbMER7mqZBo16gTffVLeQuJu0C7d9FMZSqEeb110FnyHAHdp8F0jZX5wYvqUJ
vIYlWhnXgqOz14Iu+t45Xr1WL9JUJzDHNtVgrZHQcSxDy8vp7hHqm9pPNqAbJO4s3cq6oxu0+1rd
tJqL5QO3iCtB1BHGxfn9vz+d3+9FOAfdpNM8MUsOgquwaBbZbpDa9jAQlXIbEMyn4fd/PH44hQ7W
xRfJYsvufMTUtL0ckk8yFG2Z97R3JrLSNB05tkyTpt8TDZ/kGdoyc2gf7CjQAu/c453jtWumfucL
atdG56Yrtdq1AbQRaO2Ic3RujrA2cWQaQwdMWmgFoB05271gDTpwjZvsHEMbTyaQtztH0JDOxVgj
sWU+1T6w1t43wprCdA5Da8YpTGuYS4xFOxcTWnMSUcskHGnsZOf43LXKbaOJ1J2DtZ3AO8fU0lTC
kNSCucQxzGNYItdqks73yWIP/J8fzi/H++8/HU7P9yFC1Q1cuJ6fohnTvAAqPlVuHAiTisxvr7Ae
wPahO72DBWE/ychs7QoLZsPIEmvcSQIFnuYIKywZM6ywIGgo3GRdC/YsyUktFRZkxUs+wRUICAu/
ha3AUx2I0aN4MyweO815Nwm3feTMVH8SA92Lx3xQDKuJdSOoKzHb615VctE1gTyEojiA4mvQcrXD
7jLBth6cFhI5nUTx/YQeydr3kBPnoKhep+XPZgOMXE6ybDiUgBq2WxbuWZGu5woMkVx8kqFlpN6g
Sk9W9qQftgJDbNkW1dszI+8er8u2MYC6LAIWhnRoVmxBYE46rTMw8pVL3uFZ78UCYDHmyPngFRbM
WeaMmPIcQeX9/zlcTof3T8f7H2Lb7NfTYfOayaGzMlp+hm7NliHRuBVDJ6BnSD0bFblpm8kJcDip
kZE51wV8NqiPk33dMvhkSqKhB2xWYIg2R4a1MzBcVm3zFrbPAzLNZWde+93TguhPbWHjyszd//3r
yzFZ1WtT2p9fo4c4/EMiwtR+FeaZGEkalhHSgop309THBq+2aOAQVFU1w3MvGygOs4iMZFSxOGgw
G6Fq9tBul6CFgRGKamFQtokgPWUFJEhwOqGHp9MAm2KITQeg/PgOsJEi7JBWQJca0yRMbrFpQJG9
aUqhtxu1oCuBqQmtBEmj9TREDCBrMV6RYy+BMMOL9/guOGXy5d6W4yPy7oiiuwqwGldom+h8Pdu2
mAHLNYX7W7b1+CLEECsWns90C2azY+10+Yfz+el4eO4kq5xIfamrU5WlT6atyIm6IrXuAEUDOEov
TXCWsmDcWAtJUNVm4rvV0PHc1uZJGHOpN+jp+tqhy02aPBg5uLkEiB4wRdOKm3RLMFJumTadII1C
yRNFyxmWvw8DI0MYNsyFy/kup+M1+jX+fHz9dH68rqc1Kc8SoN0OLitDQltVWk3Zmwl4mEaZIHtL
tV0Wbte5Tg227YoaIDoBs/FZ9fSsfnxWNVvZGkrzT8AGH1iNlzUQxU52kGZzOeionLA11svR8KB+
DJpyy8eL1stpHD0FEmzXuDGKJD6oHF+LxtdSz9k90RkSremGkMDoTcgtKGrNpYIicC3GD9kGbtYZ
ymLIcIj27PAygb8oHVJAVkGbFeM7UfhOFLgTC/aqh3sFTpcEKrslewEI4BzpWsxwBqynhnBx/g1Y
cecYXEFnItMwWvNA1VwJUAwE9UzOGk6sGA7ZJoa+Lubp+7fXY/NKYtFkhm/khOtMp9LIDg4dv8e4
bjGuMOIUrUShWrIEKGktKpVz/efzYwigHx87VYpDm5AN7HIO7fJa6bLqvwUKK1G1yKVnYeSUs7UN
M7kijtI1JT3bAwLDpylCYvsDon3KrQGTbigVwvzl7empuxysRmlFq/ZYqmtJU5eYmiADfhZTE6QP
hpj10GluVhmV3p3cTkaBec+oEWZo6FWAcnUEWHcGC2YtBrimMLpJzUTTquJq5ES9sNpsFrxvanv3
oAAtjpx7ng+I4NhgvcnkP+88VW8eAQ24PT68PQnWst1aLRQ6msG3gEDJkva4oAWHEwOUjPk5raa2
cIlPdBYOn98fLx2TaORjS67mpstLd/gFFIxb4U1Pmg7TOjoekW+7dgBqveIJchJIqJ1ddnvVCKz2
k+keDY28wBk7ZH2YGyv/Cazpm9JJET2k+bTR8V1YBNYPPNL9XcDjseGCKJLE+xlF7eXj9eieMOXu
EWjtobRDKZ8EceQYPw6tqKjAUT4lvP1Kpt0DqocvT1qvXkanM2jk1c0n5FRoL4EytOSuv08K9/go
RUK+/6/Hy3WNMvqgJ57/djl9Pr2efs1CxkPdK29PU2TmofKVIQ3Fuh4GUjMkWc26QqJ7kOQkIh+0
kfN/np5fuVlPbkuv5nEwWFJeiwqqAKihnCw+98ACcKRpnZfEWSnMdq4H0YAiKEa5HeoZ0V7V1gZq
zoiW5EM4+Q6HONnOmk/X65brTSHN9XrdpBGt0ZZqnhsBsVGhSe/zCohW7MOnugHEdoWWVMhoPSPa
ap/L6xtAHL3TtcNvU4vuYdJHAqSawfs4dHy9ofvvXl6eTouh+nq+f6VUH5+Ho7Nxbaohu2BmQA8L
lg3ZEtLDgezlZLv6Lf8OmMu8ZGN3pbANHKhxNrV0t/EkZjgD4PpptqyDswCuFNG1z3uGQ/hkYJ8O
wGmATw8rk43Z3n5HnihFnFHpyn4eANKKynv1MJEpAeptWnniiGWf5x+eX6VYaV7PuyNyrShlyCeV
b/Iaa0+/qRq+LDmlRdA6AE5WzutaSm30kyTrDCspc6PuGSbwkE0t/CSZP69rhueVs4Qp7ageIBUW
aS+GnK1cYWGGGBver5juWQzvaAbJwe1ObkjrLTUn1jBZV6u8YWC/P6XddvhS2oQByn4C9NS4LJ/i
fZNSJkM2RqywqIzSkAWwGXZShmg0VUNZ10VVgEZSZXwZUfCwrNuw2S4KN7wbopeueTnnOWdLrPc8
mx5gFKdKPjxs65MAa1uqhaOlbQANXtHT2p6YaUKKbAjlYXw2AZJpPn46N8OogZqIAl0J0FHlR346
RMLI2nCraS/ip5MrjBL0cyqmqR+WiiF42C0oAfquR1YLiNV9aai6MA+jpOmMdkg5Cl+HGiIHGxhS
DynHYO1mNzUlseiC0nNSz1cOTdP0sFxXhtZS5Kz3FlfkzPa6KnqJFOWnWECj5ZFtjA+X8+f73k6U
Ue1HjTg5o/zSGVLjJp6s94TrDpZbtKqinNMrJOoRywXYr2QAUtQuq50HIUGiRqnCA0iDu6QyQXnw
15MadNIaDunkVoJE3Ww5B2sKdFLuAaRHxzToQtG1MEuFU9bNIkhuqXjRCokIV9TOt93rJXGbpBgg
seCgAlGuEOg+0a0wDw6qcKjRdRfag3JIuA5t16F7qU2Ju3czoQgRruBgtwLRn0D0J9BuhabCo5W5
4cVIqnHzKlIwHWm0YXQx3CHuBisqql9zhkPCmimwoERbFWirHN0nN+iQSGwKidYE6JHoQhB+RMFP
UPyU3D6haFEkbxHVMsRjEosEAxhbTwiebWmo6jB6osF42uswnV7AFVkmlfWmiRWuHO03kLP+m1zJ
IeRMQ2S010DOo1GeCpat2IXeBjbULWcYEsM11cxzpizV7dOHKqzg/jt+rKq1miWAeU+Ho9QsV887
OuCCMy69oVJZ/bgcI0FZKjHOv/PLgdvKZB9HMSC3gaP9HH6YL5A6zDDaF+SHkj+tZoerwXZanHYC
4QEVyhiip08Cg26jXfusFPG19z8ef4sTSmLQ97k20bHv7P3fQk/Ztzqi82c7DglGulIpQrLJDI5Q
w+YQEVDzFbB97FdAAwBlAWxIbQV0AFAXwObFXgHRGR06owQrMgQowIoenVGDFUUHuDmjBYCqQ87m
OgYmR4K0CK0eAJoCmOOGAdK+M003j0KF86kPWpLNiGxyCENPkaaLVTOoxKuSfhSbkrDxhhUZHM6g
eMOKbEhTN4zOqqhK0goqAaihUmTr5SDQPtZrtqBow70bT20xjNDEweVgNCk9vJxJryEtyfrSCoqo
SQwvR01AlRqS/6Stk64O77ZPm41xx1+O5XnQsen469slpOpej5dfj4/3/3W+PBYm1ak+R4IGd9Iw
KoxSYEFrPikdFZEooAKBCqqdYwHlQLmQqgZCmnStelqOTsu7V3i3ZYQpzajAT10XHVdSXQjrcREo
h6AagWq4YYFgNTl5rMJ6BEt2Cq2ntehyLYRFoM3Ask4uZVCFQBXesUE7Nt2ycguL1lUKbhl1ppSq
kmMn/NcbQvSoJRUSrOui21W+I8gtVXHE9kpgXCFGUBxTJFpXC3i/ApGVtpRRUmGRhNRYQnLEgWrC
vQhXmkNYRM7NuEMKFFGG9Ph2EaaUg2JOoC1rQ3XnrbCIA/Uump+f2uWJHj2qfDJjhHFJOR0yqECA
hkpgLmtCUNUl7G5BJQLVW1/QigNx/7+OX7/0pxeADOLnaoVCb4BkUIVAWYc4uwEV6BSNd2mjFgjE
LwnWUp2OKixCnqMSpQsoR5hq0rM31y2QSEuwpOuvwjIEa/C66IoUg+tCOvNwWY6OKzCahUZb5viK
0JYt3rJBWK5TiprQS4FFoE09yua9EkinSMuykfARSPtKsBJeLkdYbkohDMG7HKG5qS8ib8ihdclK
oQqLKFJ4vGfERM1E9CZGUWDRloWCx0VYFhzeLrrcWq1UWm4mOa/uvz9/jv0nVymvpuN0eO0dufxO
FWmrpnNWeO3DyMP/G0iO12Sl62RsTcftZlXUWJDXfoYy9GFsIFHfR+ap7ot23K8rr1aaNnJhYgWw
2ewVLcpLg8zwQEjTQArcLJK5bfvEdk0EyTnV79HCHjV5TUu1mVzXRH0xeWmqGXi4OyefnNOgNVEL
Ua6pyUQ2NcYCYAWxXEZFUVZVUd7/eHo+3v/9ePl8eu5c9XLeVV/UqRy9CRj7MgEbTnhL22GTxpBR
6+WSGqpgUwspPNpbst7eFQ0sNLJFM0RDbk5q4ewQKRw1P2OFROq9MLTRCIegJRRx2kMlY9oEghR8
eE6DUSsGJr2cpxZLNjCt1yuFsANTM+EXGcfC02abxAUCiR7UENZOMKyHtzrLaBbeAzzhQSySjXcs
J3OXJJOI+pEjQNghs4rJqsKb4aqzhHPJOLhbMcGyBljmE0yx4Z4V5nYugFhTk1XdkAf4FMsMUTLi
PNH7skUnxCcUxcd3K7AgdkPA2UQb4ewQVs8ulqvhUzcb4CTcWNCYyVs3Zng1EYvjNTl+mnv3W48k
+OjYIRFOyJezTiS6LenDc9qhODWT51UMHywLxzpJyfDDAYULFKXwgVXDR13DAAEfSwc9e5n5ThYm
vdHff/f2ev58eD093P98/Hx6OD+dn0OP8dBvcu0vHn+MTwbDaUEjMybA4Klw0hs6FBBTdTR+mewg
bOJnGp1qCL1z1vlYPopyhCrh9N7FeFas56jNGyw72InwchydFa1aX6Xom+wQPHke7EAeBJpgeOqb
kjRTr/eKxFAdW7ZbFjOYqoZFL2zjqn5yWD8+7KQ2bhSTWi8WSSJnAfOoydX2Utds7gcOg1QaERRK
JWsESid119Mihd0ZKumtIBlN4mtCJZ2jzYNmzQlSuOFR9exxavLmtnRsZmMbG01yu+N4PYiSlRnC
mtmQVNkohHs2mOgr9MTCsmlEGNIBUpb4jpgebtlMJkxK54ZyNcoaJFctH94vtgLVRp1sV3UYTyM1
wMNuSLKOxR6JRkSM3NNay3o56Llk6GLxzFvZDOzdcryZDG2V3g1RHGgRbVmxIaKmGpOxkAUQUUg7
FDWICo0c7tZhfaTxRWyvNcoYNFxUjSVq5BsoJhjW+eDCjbNo+255TP/CDlndY/of5UAVgYo0kpHv
sACjTJnGdty/lxMje+SkWrkWkQYbk7GeueSaDPqtWHSTx1ZiQY6MASfxo4dkhdPgoZZ4xjAby0Y+
6VCgxgwf+Q9R5Pil9Vi5lgpBwqdnrOSamUPOCdrGX7UK+Mya4e3w2cj3mgHVB7JxEYisjTJ6b5y/
IUBh8HYRLemxnOGT8fCaQ30RSTcl8L2iw7rxUwlxJIaUbybD3KW36L1DxCD4ENJjjUAOcm/X1w4J
JiuhbYg4TjNwMxNFZORp8jOnvWqcs1sHh5mFGTwlSRfQBe5Pvx0+vzwdS4TRz5tDK011wq+gGoA6
qo11BQWt+zXZm76CgubZylBtsCso6KWvLF4VVMwpRTWTr6Cg97/ajdbp5QbSp+TYHtfv3EQFdEOG
MpNwh+Icv7hIe2zyLbfruon2OJaSiPuNHtprZjytOasWg3B1EcxQ++NDzZFjm1jpsXKBY6qKY6ML
gapB4CEJZwQpBdLr4YNggL6JcwkUU8iaRugdhcozkqAH2eMHAS07iomusMj15nfhpCTX3f2Pp9fj
5fC01vWE9sE/HT++PR0ui8B/WT4UOgH3P/Vz+jFUIhYPZwxdR+hKX7px9aJhpV4yeN0l74DF2PyJ
K7uycrD8pOqA+Vg+RWBbq1FVUF2XX+1+dXBuV+onY88wtz+3BecWcOsab73UwwaFR4oOWL0TYNl6
V6rNKKx7NgC4YCyw8mbPYWgSquH1pRS3nQTdrgwqh30pjg3+R+n3wABbvlSrhldUEyQGCoFdra61
tdNte2a07XJPQVfZrMzHIZJ0yaqtJK7Ptpu01UzbrhXTTX+eFmEe3LPqiETv2QogzBaGjjmrdgOM
K8SN3NYHd8ASUpjxYGUxdnalq2J0bbqbNCJNZ25WTijbIA0kwqTVS7l5eF7VdnWMcTeoVa9UBjBu
NSAUMZFDnkPhjenbF86KSbpij3FEZQ5sm0+AdQXunA2VRMGZDZ9xlgOcVQW33T0Z6h0HkLoT+XJ/
yeCdtPWd9CGbes9WANg4KPVxHwXHwHsjJi+0q2zlAocsv/r9XSHNREBxgh8sazuJQLx2AGlegQdL
TEjM8U6Qmf22EWeImQhFxK2BFJQTtvIGvnb4nTWqozK5v2cEzOCDhYW3bhpvRHC2I1MJRajDrImB
jYUMgl88ZzsN1BZ1fzlyHCe21+enAz1Y086os13cfKQHU/v6j7whGfr4Hy+nB2JPk8S+mIfDNF2U
EqHNrPknF12NFe+gZ02amDd0yZIrqWSoAKg2/O79zO6WZqnMeXBuATKvInTTmH2/cw3SVhLWOF2Z
5krGNzq3VeDcs/bszDK6PK2ujaqfLDmHqsUaWtsMSkRdSSNFazdtyztnRb1vBO0RtADB9LRzRU3u
au8bzdJijq7vdbMqk8T7FtyYBklDidYYoDUza1LHp1hDODdmdt/w3IhD1QTnzA+l7SqZEIcyCaEn
kskjnKuZbPEe3DefydSmreB+5wKEL9KN9eW2ar82qlJsxmTspaIEiTJJtlhALXIyOoJZMXsNELRD
HDob48A0onM9GyDBDHhD5WTMB7NyRudQMjHAY7PxJMwgDuUzOtd9OazeQyP+1gJwyWygC6OHsrRr
I0rVEpxbg2SLhHMPdSYMzbyEPKYwzh2GntC5sTPNA+otHPK3wud2mm4RUbGGJJNHkklNxsMwzwG0
mWnYTUcRRvC3wjt3Bmo9WCJz1r+CBLUgHnMKvGOzIUKMHkDUro2oxSF5LmbSwUgo1ySGtgZoe3Hn
SOtxFtzYbFwUMw7ymMTUYh3Qz/mMQzWyDdREKnLGZxIZ7dxocG4za/fbdNAZ8Bh8/cu5t26OSUF2
OreCtKYmdiif3TeSTFbDF3jmkTAzywINzWIW6ucTWvNuprcgrPnd2qs/RNzn2UaEP0TM/SxDe0fM
/TuKGqsVYFWefUJsSUGT3RavOtGMMgIDDc8WxyPR3NSldtK4qWozOHO/Mp91ZLVgZTtWDm0JatZm
o6oDNpN2o27QbrQiDDQcNXIGbAGwBcCgIsmWoDvRETYjDLcd9Rxue2h62RIR3Q1ILSvjbXtP94Wt
KwNsW04NeWqBAYVZNlsZbNt4QNtm0jLYDbrS1qsCZ/YMAJsJsBt0V3aprQ1u4WsLhW3TG9S8TbLh
1LCylrbBVTkLts1nnYcNWFlOgJs5oBRtY2DnAIXZCYV5190zwc8IYf3YNOKqALAR8MWQUJLYQdvk
urIDKzsghuxE9HoFgGdtx5WDwgBjmx5P224bPLHebIe4dU/s5HGX4JXUE2Fg6xjALku/qhWIMSwQ
vWby3LhCJNt4ppp3Etce3LOYbRuRp57csy1nDsqa0nvaBmc2CmpDk47iHghAMZEkumcMYtvgcTcG
UJiZiSEGgNXYjrYlm26sDU3eKg9o20yw7RRUpfCMTMbAVdkJeXoBXwy8bY/UCjW2/W1JOBqtLGea
vpkp64DCvAWMMZtIUEdgFksumU3i/r8+LebS/c8vh4fjajAJmH6aWow0DQU6dUHc0A2oKex3G9hZ
KxZRy/76vBaB4w8R1g46gAk86DvCajuExT1AhDN0Ux8x7zsmmiqvjrnFDR2mtBrCqlnnMTso6xFQ
5c+w4/OKGawe9NYW8/5UwnhwXj3pMTgoYxDQPsrntYCqJnhuSvE6phbzfmmiqfnwOy6acIIRgK4m
eNae7ocjYMZlXpfTRV9i3vVMmL4lo+gkzoSulKELQwVMKsuwlq55FPNWkMLYIR+JmaRrWuNvaVJM
at+FYYCeJ3TVtNfY3hGfrduUEvpWnxA39PlUY17gM1yNmuOLeV9IYZCcnMA2/Z3khvf5jBdGIwjQ
QPMsrTSgjAnnazFcddraTonhujP5Kun2Q+KGDo1agzdhsm7tndLrt/FuJzRlHXrxYSu+sXTFfaVE
04pkz7ezVRmQrRNYywBVTHhAqSHfqtlbYneNJ6JeysX9z6+H12NouR0BeaDrPzydH35JOmr8M+hO
uGzJZx1mk5ObIDUA0ytYmyFfFhQAUo0XRPvkZcHGs5HA0GqigIUc7Tx7M4Atb9Kn4/3rp8v5y/21
Q+PP6Z8ng+ol76Nlpu5IgnF+CbbGq7ankWCiX4YtORutvyPDcgRIhrHrohLB6m5R1cHiwKCsSQdt
+nOFRes2Sb2NWlH3jNatyUwEonAQVzZJd43aWGENgu0D33wLi4iKKXBenCoga+CZOC9OeJOcHLZS
YRGumrTOZr5tgGWRx76cXj9tJNXP6V/HT0QsCGekcy6DhlEQCNo1owk3qGQwmh2BDelsKksb5MFw
vHeYy83K0P3hNAPbVsgH65mmvL91XY5cZM5bgG2NvC6eq3bPLbes2AL3xB28J4+O7BzpOS7ADqK6
BrBijZje0heDJNLMr9zvm2NHvWOCiiOVfStMnPWefS3JKytDInG8j1SazcrQ7+yaCBZJnAoQp6Gi
SBXZ6KasNxBdHEYIXBMVYb1AZtPhqI5peM0SX7OdySAAbDhgSPnOwm1b0hFauVkDbpZA9kkcOHNN
fMATogATNufgoiQOwbtNbgrBjxwQmIO3jIVQHQxL0pfHzxQHF8XfOUgisjBzO9GivSqwchO+ot44
GJlwzEMicfCem5wFii2gVuBqYkvr4aqygOFXTgB0y4nsrGE3QvAqrMtIvGv4XPjmuaDIE0M7hYhb
Q6nNBWRnA9ElGJXj0YpORGAK0gjW/ZoQJ/leYBGG5e64FVOibQ+5ykJgIaA6g4FrSk3bG6F9YZEA
1HBlLrDmWeVQU5DcaVJIfuLXHROZVVB+Qq50zFHB2fbNAFKMTV8rRGR+JgLBTTepLRTCJBb7FiJM
Y+2xkEkIFii7Z2mEbQkRNrHnakSaUCDlO6jTuJrcRzyUkSsBsNBQjnl4VxKztMA6jYR3hVWxhin3
ZiifvLIc6zQTjVv1zwYnpAk4tce8wQU2NDhYW0E7ljmoHEwMQs+hSsTxq+M1fDfGTWgTlSnscsDQ
zgGUTdKJrPfYsMPuDlWJ1BCPFpaDvNfHiIcDHNpiE9xiYD3zOwB5UlOCCL+DHLdrTMAMmjnY4yFs
t7Lai2/03pmZpQK2LQxwO/AJtgXHjkCskUkNRRm2o4UE6E6yCL1ZWKDgZ4dOO2v1OQm40gJ8K2xs
WODNgwzpOcMXhbGl1EwnAtTZZOAPPGrI1VKz0XOTle09oZUdlPvY/HeYOCfWrHQzjCFrFtEXtP59
Nc5ITc5hny22KfE1cwMtYXxTQsGbwl59iyx4PvF4CN8lKas9dSKPB0bYRLFQHFIYZoxq/5NKN1Z9
nYFaIHZabNJAHaFNIRUSRyQmCqjSUB/C5C0cjqMAM5rzqfhESjeOhUyMcM8ANJ8FjxQ2VLD7wCkD
+RJ7Io2c2bOIvu02UznHLn0MXV6Or2+XZyJ46UHP8zTq2Qlq5HcBRUPGXR1tzmrXxASKBn67MmU8
OkX0ZkkIWuawB/eAdi0omqDtyEnhCQ5hx/Nuent3RDTr2zNq7nY5IgJ1dcnQj9JtQEetyhNsGU4e
XS/by0RzzW3F0LIBLTagCLm23mc4Nt+AokHjrsxEDz5rYzagHoGWoeghQLBDsUOgZSp61C1qJoCL
3PT+cjz8QjCTA0gMSWU8t8ndv0IODBqKkLl76d68dECVjZCurLl5A9xoxHsCM2XB3hPqwEiMBOkK
ZG+bOcC9CT11zT7BxgGmSJB2jFiAG+vGh1T4kKzDKtvcJID0rLtJ10JasKAdL6jxVmVZUG+xquF9
5GaR+zwMN5LfCau+IwC9IR1Eq358jRxC2rrVPmfIgWSTtKZYITdOUQeMhwTJt4hd84XE/Y+H98en
p+NjlRLXmjAE+x7EbD9Wsv1s4vb8ZXn/p88vr18J2TPOmQv6RCZ0XhGbP2ijQHs4P7+ent+OxHct
enJT2pQbpHrZWXuHdWS336n0FmVfRlAhx6Ao61D4QYKYRZMdIqgk22MlUDcBZWMcIdwKPl5S4yWF
HoPySaKjh6AwmbQmhPbC36JhKAlHfHyjKOVPuEGKo0U5wwlUjK8F91JaR2eToJBu2SC50aJZgwlB
cryknuzWDlJmLUrmT6Bmm+KbRYdqh3HsBYdCuamxSVsuW+G7h0kNZVmEyyVJfMfCCqWlpiX5CrpN
8VQpjfpCyVYeNjTm8KaviyB8GwoOqo3AiSjEavrZHthg4OQ7E4RrIwD7ybZ7YNkBCwCYYqCCMHUV
moqdYH13XNfvWGJgWRC99UDlWzLouKasvPG6ZVyhlbUHR+YO31LKJxtt2yJIBq6Ij/POE7bEBNWI
OCRDlCUwsCio3sa0Mk1zhGsFL4rhpdMjJPbKYACeXDIvdL1N8ldw+GY6c8H2tiYknxleVd31xr+Z
sY22LdCRx16rDOwQYfOJ7NKASDxemCt8UfCSBaIQJH0qYNO9prkkJEAUwzvWaMeFptsJJM3CSAoo
jo7LJ9QhwR05tGW4qsPn1RoQNAJkpgMUO0QhYOm7h3iPZSjxdHte4hWHosMhBjbjqbLpgvUMGnGS
suiixISFfSfzNhwBka0mjzHas5bgYUNMyKCwMxP9Ab0sHiOK1zvqfTfrwoiXlJgRJkPQavIgQjnr
J8opumPBOxWiXxmtypB0526ibAnADuiOGGRhqEgjKTkOTmYsKcS+Dgt3bQEbWSyymAN3ayd0wbqn
UO1I0iOKrBbAJsi30jOiKuVn4g5dlXJbXsp2nI5m3OkDYcVppFLEVBO5Osk2DKqh/lVSFJN/rb9A
DaVvqaBKoL1nfwE1cL/ZW7q3g/XQdItguoC5TjHH08iSH7Eu2ZvsGmqZJcsYgKKL8WDHCK56PdV2
SYPu0/p6n32arR56FyMY78hAtmAa3Ei/T92CKQBmC5jcER2mnELpG+bDM+USrOhW1TtYtC4HbIJX
VWMUoV4jEZaN8eQRzVqvx/cJwHLsjPfzUvNmGSZ1091Mx9MOgJVL2ZgWGqqtJcFujB0EqbbYyULY
3P8QejK/do7B69raIbYaXoT0h/OFkNImRjLQlfISDqN8gBHezsBztwi+06by8kOq4CUYmxbv2SdC
q4nX063AKvZM7IEdXtlV/2XvzjGppTs4cQ+5ObF4B72mCmJr4nPNE8n2TBSh/TuErNxbhe88E+We
ILRHROLeTa7Zus5ZvLlmBGkM2rabUqfdeql7fM/gvYTw6JHnJfY/pBU7A7fw0uzk7BrdGZ+dnEFo
MeFriHc1CS1UYuvlaHNpcHGFFrcTlCskkaA4Euiu3WRZj25aQdY2tsOXpogUisLCnRu9OcFDVFfQ
Pu3DpCEN4MAMMvbkzWLdJVHiCCLbIALxaGHZ7dpRpIlW9qIL1G1RzdDSPTvLHSiUQwrtW2Dykpgd
JyfW7Yu3xTUUAxq90COjNi3q4TML6FIwtuX/VRULGnnoXfPp9HQk+kOZ2Lhr6AAKyShODjpWRVg7
BvQcARrYXSs/QZYQ5AJ06EiwosuecT0sh229OGN97o3f7VqCle2gm9gKi9DsuxPLza5BslBBVfDG
yg2aUU+xutsti4ihQIkXKxGCxxGUCFvRK/aLco1uhnfY3S+LaMKhZR3Yr0BXilvEOQYJEdyp1+io
HLfC836yZURMFbb30qw4BrBOtz3qtpwD4vpx0xYJC8Bz1iFAxHCqIwm5QxNidA6PysA5FbocEM6P
wA6ShcRkUeUES4mO5Y1QxSA/PZM2+TggE5PEck7G8ukg832LSpzRkaD1Ch2Vf9tDjzXfBCwK8PJn
x3pgtGwOioZXOkR1ueKbbavJtt0KHx4ctzm0eQd3zcqu+4x4k0cuoH2XdQPPeLffNVzZFmgTvtBD
S7yyKhgLTw3v3hqcjJLWNit8cIIYv4eGOy+rBzZYnoMt0sDGfUF39K/1kApBWnRR6LCiUPWmTMOA
/LYEWUg6zprkTG1g0VFlOWpQRtzuqHDhcj/h5XJix4iQHQo7bWom4lSKRbw8nrMWSgkYjiRuTEwR
nGo8uwJz3N7XqNLydqddwdayEZh7uDQDoFJRLbJXUIPXFbrb9AZYoB2XTuS7R5EjVSkt67rj+s1x
0bKm27DYLYv2LCCwRpAKQVp0PbybL7EnC7ispIZTrMAOLSuoRtUFw7jNvJGOGqjRYBluup+bYDdL
o9uVmmqrX0Dhlg3CM2J77hCq1ISSBTU0ocEUFDjkJIBW4KATKw6h0RUpgWQGx8MPjLQIYWPjLAEz
xEngfU/QnuorvkJ7BCkntwwFx27T69Mj7v/P4XI6vCcfHREddqCozIzKnwSs1DJ8UP6UFgQ1d6ZW
sfVYELOaOyPGkB5UTbGuakptFgS1T0YO6q0ELLjTutunaME4Ku+Sg8KwsbUlStRrjFEHDujHqDHw
LrTvysLsZk0N1jTjUw4ziEQJKibI3tMwNIHTVnuw7VZB1ZxRg6LCoa8qLagGxY8CVhTqgpiNMBUj
7T2BFX7aRMWR+1GU0pQBeXNU4FuLCYOd7Wt9SdKBr19Orw9kE3GO+vSnl5APZGSA5VgyMzuQ6xkW
PShMDx5RfoPmjGDFZF1ywlPdM8IVM4OXKOMZ7pkNtP0MixQOLgevfoaFmo7Ad4TWZa5Tzex2XaRu
8Ko9r2WskWj1/V8Or6dfj/d/ff/fx4c1f0O/c/d/Prx+Kn96x5vfvjP3f/shE/X6F+A9UIIuiC+g
HIDWJ6GtLymgCoAakrsLqASgevugJFxFUHf/8//+6e+iO79DvnsuOCddxAVWIVjV+e/1FlYgWNF5
Tc0WViLYXUCowYGNOOD3PRaGZa6xp5dOV2k3XasKqAKgagXtUgMLKAegvIDuUT+s4kygooDKHQb4
/Z+6s3NIxrwvee9pkWNa5KR+WkAR37H2QRVsC4qYR2xZtjm7vP/xL/3NDzNlwnuwNtO3G5OygCoA
aguo3x1hmPSQQFUBbdOeC6gAoLqAZgHfnF4sp+esO76AyequqXRpdcUCKxEsXXhVYAWCVRiWI1i5
zdxuUKDuf/zrv4ueAcZ+eFaLk5gn9zJ2srKadc88yQJjNyurxXpsW05dYBWC1QXW7shABxxw1iNB
Q4ed33g3+82M04ATrCQVpQLLESwjlcoCKxGs2O65YkFUpSDUZR9eD88NOgQIKMUnRtQnZvu4C0AT
CZaRAcECi55UwcnoXIGFT6rH62q0riBD8QUWqhBui6t6C8sVBtSLDvd6iHtWC+iYJ7SjlE9sAXCe
+uMJWkzAiJtz+zRPYiEAo22rum29u7rAfUgW6CpHtmwgAAuxWgPHtt0yCiw6sTRDGYRSvlmtCGXb
ng4F1iNYMbljjYDdBNNIcuau7Z54ttPKaNtaYHRx9M6oIrMJ3h7XdbBa9ku+UTnHHgHLjrj2R0a3
rDmmTIGOrDUmEQQrdXdR+4URXWvT4WtPX4hElMXEiWCl7WhzJ38EuigtJ1yBxIBSGBhxlHRbNaYR
4Yshfjm/PT92MpzPvojIhk+oXcpOiNsdMFSrLBCHfPb2iMm2oSLpwPPBZ4TDJitDNdRvxUN7f+b+
euq1Hz5xbViy2V+FReYZ3Xytwo7jD0ryoS2aYC2AFWSbwQqLDFlHOpMrrAbrsqE5Glq4HX976TDv
sD3G6eYBBRbZY7X8f2dTC+AGarpBC0kKDwe7JbjaPKiLqRRYZAcOOqUUWIPW5dt1W6JX95fD8+P5
c0/3M5Nspw61n7w/vL/2n5so5AYo83yiVGsyC7jAQv/YLq+2PYW8fzl/6Y8hceDd1yQSQoEA03KT
ldYDiz0wsvEGgfsKLRC0olM6mrUdguZkHLxCW7RxNjSK8zBYhDPTpc/sgQVD+5Zk0KOBRvdVB2xT
r5gca3wJuqYMETQvcbaSl3T4okKj6xrk0jRLGwTtJ6Si0X252akRzqSe3Bd0vtht9GQDjA4t/IRI
uUd33ftfiFOjjQ/yRBpohPGagzTibMScTTbe3lXC5cRVRqchVWCEMykm+xYIZ8puSbyR7P7+w9P5
fOlEu4cRCMPb4MXmkfEw7mFK3CP2Od+BgmiLKdEWgk+H7c4TqC6gez7zI4GcQG2J8bSx+AIKoi1G
4A0bAGq6QE3/FMv7w1Yxl6CuXzDFyVYdBdQAUEU2lCigfAwq6TYfBVSDVWW3qt+CCgDKyIYLBVQB
UNG26xAbLY7dP50/9voPgzuRavu5lmUZRLt0ZF+ECovwLsnmDxUWIF5aQClpGMQYVneNUvawAPXS
dOfd6OTufuuG5w5Gu/LwPEvb8kP7IMH28Tm+gwUBujytxdIoGNpDCbaGFNX+TXUwHMlLYJB6Ex2M
R3LdBRX1DtYCWLddt7k2c/9wPD111zYxiS2ZZFVAQVxYKmCJY8eDNGTCXAFFfgc3zAIRkywQKYcx
cDFJ5ZAaeEomzo5d0L65L3v/cO7tVAsvX2jAZBbyZx5MTL+MFrKJkNtAdg8KuCRPsbNErFKMcy4S
ofuO0MUWFMgTUXmTU6CANUURJ6ua3UpFe3/9x+W1F4uTfJWiyxDRST7JOtHDhJUEi5JdHNCh+CRl
xQDVjVuo9uWM1jEs0sBYh6tetHF+//nwW496jvMvPCBbznHah+teBr2DRdKdD7NNcpIdgGVdkovt
USDuP2+9w7PEj9o6j/AQzDI/HNnNsQJD9yjr0lXMDhjmjdhh3kjIqz1spabAbs+mF+de9k2QwAVw
885wUFNn9pr8BAW1nS5xc5Nbr42p12eipFuk3OJ/fzq/PzzlbM2CyWmurG1ST3p7epoabAUjiokC
5Du55n8sv10+9Hh8OD8e//Onmhua/v47Ph5umzpb1CZMG5SVD3jYJ0Y4RXZxaj7AJzugO2c1H5Cw
74toWhr1Bkz+AG4sJDkn+2e1BxjOhktfYBxvgMfxBwiJtR9K7DFhtl+QEFyy2hvJDjagMQ6blj39
k5u/IMYj2/MWdNfDRm8/oN8pdAeWbM2ywSCiotqTq2v71nxBTMiwNOGRQYeQ2uyPgBDAFdmYZnME
eAflC0FhlxQSJmeoPZtU6KuhvCR4Ad4D3dms3YKc3EPhhZCqpDkpT+AZBDm1ZIMFhMfalk67+Iug
vwEZktVvxEGHxH3qCUHZ6UEmgs03JElJBf3OgrsUDMu1WVsqyQoxdLMeW1pCQomLjhIEIdPg6nYm
licSofbz2mjVBXsG7d5POYFPyNBW9JnwiyVfNniETiIotj8CvICKAEWJZIw/ydkUAxMOqP3+Iv1a
+guQDX33BU1KE3gJkmzc12AQPezcYWjMv5K5GQeKCQ8ofIMJgUig18Zl3fS98gWsHa7z0Xi1Lrcb
cBP81+eAU0IAdUNOLFDfdRZ/oYQ5mzwpVbty8RfiJibMwGpzwPSLIFEBd8FmmradSIPKDMFF4fa0
DNVcuuXehpaQSGT1OWI0MXCsXojaqpZWc5NQhUgsX9AhRKdNzeUL35D3x2fKEpJQARRF1lL1bgVe
YvjinyUUHwk0L1H0jerdFVto8Q4OIRV1VmY3X7nZPce7F2SBc4Ef6b6i6HwAWE4WryNCCTkpoZwU
xYYtuXEb60HmEfISrF881Zs0gRYe7V+SE3nbqxcA2g2yEcvpJ1dnMfZBr29RJCyAV/jsdW7u3uyR
ULKKIhVTRbfZ6Qhy0gtA+FFko+4d3bvHLC8nLF9nOI/OPhEZvtJd9JjqPdshmTEKJhVgA4Dr3vvU
9QIMSMYLTPBy/KqL4jOiokqtrEYkqzHLjAwjUbRSKpO2AGsArMkR2g0woDcvB7m0AVjVp+v78+eX
83NtX7D+ABJEKdlHOXKybPmAgoNpldbk8N4Czmfry7I+cTEKclTeAe+moZr9DvCAXCXtdpzqDgMS
ra+68bGKxABc3+MDgLcwX2E/4Xd3gChQ0Q5UucSuX22LAXgDgpww3K8PD1BQSEh01H0xLV/H4WoK
f2KKvzrSuY9CtRQEadjgCxiajBHadJOoN2q2wjZ/2n/5AKHJKeD0ScsLcshzgTZ4cSMx/w59Jgm6
on6vRyngA043Xzlnb2sqqAJnzJWLC2JQ+f3yiG30hO+AEpk/wDDqxfTm6/zpkFfHjd1/Yib/+xHq
luB9iAOJhefQ35SgHZYcciY7ld9isHkfRQ1y0e+jwGGCGFtKWwyOTcIdIrBDJX4gtZ9n+9yf+oHh
A5V2INYP6OCb0YxvPzHikgjuCjihvAgc6UkHkAUDgVF2HwAkluB9gd+/LgLHutIHWPmA3UU5BHSD
2Jq/zyTplhTwhbY1szrAKx9/UcQRGKaicgQd9EHt7f4THm5ClU1skugyvILQybPNJPnGCKim2Zqa
Hq8g3IY0FB/gT+hCRorHXwgsSryJQkiE2SlwjCZtobCiCrECxYhPOHwLZkZKHF+Ersxgdh45AWNE
tlYYMNqOEjB6b2slDJNk2FRgF31ixrqBvQUsxspGkkVVFu7dNgJqWrbWPjHa7YLaAKbVK/Te1BFj
VSUBFyFCvNUCBxnTzasqAmKBALG+BuvLGeV5fPF2Bu8wvL5hfcB7ymPkK/iI2iL9CDNT4LhQIluF
yVZCaKvw5kFk0da6uSh4gtwZ6ABIeNYPpDC9oiUP0kPKJ4iUEwGCqwkDAsteMcGALat3Te4b2gfo
dxwLvZGanoBZd3d+D4y27bHAkvjVlTNhPQ6gpDsrTEu4BgRONEofKCJPR0c/8QF877p8IB5Gk282
ejBZp/1agu0R+qvQ2bscBU6ISNuveoukdE8xeXBMkTuRASSxfSQ2bEc9ar/6hOnYlvqqeSNqOl9Q
wF8Ol+vxh86+STmXo5a6QYjbpnfa9j3NWZdD9ET4WiVBw9sJvBTbPNwePg4qGOcA5ykSET6GWLfw
wAJP+7eD/OOKPQ+wZwa1KeX0Ep/e4tNHx58Bu5d49xD3xvNBkUOG9u/GtQpWaby0HdsT6egKE44Y
SbWEeDFIOa/Q4NJZTf4OPnZJEh3YuzAYXmC0u0Gnw4J2QO9KYeBIMQBxtYqLhtdjSzgdXWN4Nfa1
p/X9IGe/os6Ci1Oz1Se755hf9YRoa71LvHga+2D/tZaNPr2Z3J5kU6YBtMO6eok908jxeM+0ezaV
lYNOBml5iy/PjhWJdHiHhaWaiPp9xREBjy6f4csDr6wqoEEH71wnq5wWQGCImZwGWFMTSRmxDrAm
PZZ18IEyfvJAysnz3pT4kHcOoY1Xg/LPSrAI7X66tgTQ8oaTA2prCqPIS7cTUScnip2ZMLtwnWIl
yP2D9ZnHonI0YzwRLe/qCukHGuhFkneHt6RWiF4pg69ewNWZnPErAFaj7svtvSN+NTO6wfcmJyql
fwfeN2W72ldFsIwFLGMH1aTtraPX3WJR5d8BvCk5e9rx69CUmo+khQZHn2jTeqaR9rtvs0SCgXv8
9fDU2YVw0oOtY8OEJN+NWJcJCuPyiDVBuVxyq66hfp8+IOoH9gjhOLJq65ip+IE9MfCcVQKPwLal
kcQODNqBHhQ0th+w6APmBhwo9IFdeSLxAYc+YPEOUGaNrXMsBOX/yjuYfcAPmqIXMkTQsiJg/why
nFhj66QztDyClmLGQ+j6pZttfsLCtQkhvXxkAUQ/spTGEjKN48wsW6cWjtEnJpdvsRRR7+Dudbd7
t4dGAkgazDvqHeJ9aTHm+JTw5A13h3AnPJY+fEY9XOO7Q5kZtg4HbXHQvEnq/nT9y+Ev3aOU8nXA
OFNdB78G9PTSJGXLIGhNjo1toNEcVi3JObkNtEXQvptLLLbQHM9x1c302Th2Xe+XR7OgtSMHMjfQ
aN6uNjPEwb2XEcEBCYYRR4d453UiNI+NaTs6ksnv/W9P50Pv+Zaz2V22NsIkWEzOxnfZppml2wkI
CfzueXVBTrQq4Bqvru2gS2EGt+9Azzxr5KAtZN07Apdu1J0g9yGb7L1ibu8Iinu3aO9m0NyxXptG
e5/gXcFhnFkMEDNB6rUhzOmKub1VLYGBlDevyJFiDebQ0Y0a9NSstw4x5/HiAu+96RyrKIrlE5rj
5LDoFhzd22CYabt5BK4YZjeNe3JojTGvJlTDMc2OHa959xOywQMDrXJYUOIZerY26KRZRmAxLSdi
WkzEtJ2Ce7R5Oej8W8kO9nHx85tDm9dYTivMclrhs6vJA+nJmdaNtEF7N2zQ1ZXDxpyyqksB1kSF
a78yunIj8L7xCPGsbI2fp1n/nf5xNAS3QGbTMxGPrsxMJIV9h9BuNCZ2jelFm62EbxQ1vSj8/3Z6
Pr0eOzVNj9VHW1uGM9qQ0mO919Ye7WTGbAYGmYpSDzMNMzBItZICbxvnnAg7TNHMSyNg3x1a7YFB
vorkXbqR3gODVCM5TlBcDw1uWrjtoSv58JrqEtKN3p4fjx9Oz8fHhpT4DU9J06V6q7LnoYiQsc2Q
t8BwwwwrB82168Yh+FiQ543DY+8GDVfELkb8D88fAl9+7ZA5zWJwdhgNzVMSEfA4tMbngTnnhiFN
MCgxgRoMKt+hgCAbzJnkcUBn787Ig0Khh4UPPSxgQmmCbVoG7tF/g2eN4aUnvqGm2+GenDmgR1uH
Kvdd82p7uxkr7AccpkvQ9z+/Xk7PH1dRobPU+Dn9ft45zw2V/ApuELge8HizOtDWnDYDPbmBR9vX
I4WrgZcIXkyPj8CVGMioCu4RuJufHsFrN1D6KrxGy6vp4dHkBrfxC7gtPKZqp/0UeWj0g9P99kna
Ewi+N84VAY9Or+R0+2j1jWuA3D1D8H56eYjxGkdg/xpVcIfA7cC4b3aP5EbjHJAD3KORPE7v1l8l
Yu74mb6Fs9VjjNTIQW8KvbbaGYJq0/WVsFtQBUD9oJOLhppR2rEZ9PLQY40sAepB75yMKLBfowZz
uvWakj4GrY1L+m5Iek0HH4PyQSt3vXajGiPYju8GaApp2b7xxe6wEl+PANBwkLrUbgtaqFo0VC0m
L1sYYaaa+aZiw2GTMGQEN3UEZV83o+HcsQSrBrN3m62jtevQzh1LCqzSRHClB5NdG3AE3wwrlRvJ
LLBkTeB8fnoI76enR8hvhpZupcMkBSbdnZjj3qDdu8HIzgaeIXg1mJ1Z4R0CF1Pka4Q8P5jaWsER
4arRFOUKDnHHBpNbK7hCq7vB5NAG9R5dPceUA97kBM+2s+h38Gj5OvS2WEir8NON8NMzj4dnYqib
6PGznPQKb4cqrZ7aUt4PPNcaeoLyrtlQIdMzVdozPt42mE6Zdq0xLFLBvRtEmDIssp28wbAQ0zvf
UKEVVW1hFWZCJAP53cvl/Hp+/fpyfPd6/vH8cHg6/nj+crx8f7geG+JSaWrG6KZU8UKkQRJbNing
YIYFH81aW8H9GFbUmR1qIxzL0mBcCKvjMyy59PhhViUxLI396MsKG3gweY3LycnHKo0qaXERfidd
E7wDmFPd5BCzXxuMShF1ZJyiz80AsOmQbnfAAGNCDuasrLBg3okQc2wDcF7BNbntoTRXJZGqghsK
HAyY4Www6KUlFYB03iPd7eCH8lSVLK7Z8gCe2xvgwfFFOf6mXUYDD4idF2LfPYB1eSAmdrtv4eWk
cscNizAC9KzuxwmqOnTdOt9L88vx5enwsJHhHIW4bU0GEpLmDqjk25pdEN25WxshwSuYaG0tG2Rq
N/s3aP+9L5uEB3mia3KcpPkTm5e25jMJyoGRP8DR8d0g07PZPlzdDlKsG3iN4P0cfej6DR+MOm/R
xxD92MGM9mYDDm1ADGIZ7QYE2sAoVXb9AKI+KwehkGb36Pq1HmQKN7tHm5d+kKfcrI/gtZkQr5hc
n1GDNOsW/QiDWg6yvNcPaIxBK7oTkPeP6EfpCQMqjEHjuyIJRSIACiA+F0BIgCszkQAI2Jo59yDx
o0ZlMgUeEY+1k9UVvnszqpFocY+4xw0KXFp4JP20muBe4cfH8gn7cvz4KTmIA6/wiPKtnvA+LpGy
xt4g+uHbI2bEM/ZP2pqaCOhHTuhHz4UXuj7FJ9Ib0Y5Vc+JF2FOioz3y+qDg2pW4NAqm2euXD+fn
hybLPv0Urul0lg1KsCv0OF3DmX6+KCegNYDue9Ps1wYrOzkow82wQG23apDckkEVVPrtaERzPbID
0BwYHAa8JAla4EPDomtn/KCGtUJLAG0w1sDCdpQPlEEReY7akTTkyQC4nIKDqzYaHxk2N3DGYnQr
yFnWYDIDN2U1RjdCmBN404C0HcOggK4dp4a9Fkk5k0JCjW8ZSgJFDWVeV/Vjd+x/vrxQ7lg/Iwll
ADlmcHCxSg+6JqzggJF0HSIt92aQhzdr2HzbHBxbz44NZId2kzNj0qhdA3ZR+QoOKEQrwEsRHjCT
ERNgmMGZ80YG0n7dO4LvppUPrg2Qm56RG1rcSCC/8uLg2tWou0oDDjQLZecUi+RCVWvU3uDzM51K
+Q5ck4gHdKPF/OKBNNV8fu+A2zUDKkoAB0ubXce6vUMVCIqmWWBdel1Z7+Xx9e39teaU/lx/EpiV
peG6C+31Ys/NzQXpqJjrEbhgOSzGaatIQ49aWN4X+E3D+gbegt27sjwRGtPILCk9ltPqjFxdwMOz
snmKsWH4N57dls0TvhQYei49liu43YOz8dZFuXbKF6CRMVlaY1e8OwrcAHDb4Z1EnAN4V2V1Qqho
5ISKeGcdzUlqdQnAfbl1wgeoxy70iHc54RcJ7nw5uZsgToKTL9yqJ7cuIDir4G7EbRywmzfz5RVY
nnXsxqjlwb05NeEXQHGiLE15nzT0PMetmzm8AeCFW6l3SA9dN/HO/UTKSCCklqXtnNccQLrvrnwP
Dk7N3ZxcgHz0rmM1QR0cXDkv5EJprBlvAHF8Jt0Bowk+wRpw08ej67mUQSRThBSVOKFRmC2SjJxg
jiPMLbsXk8dFAj5flvcTipWYV7mZL4+oVkxYXUIhx9kNyENUXx8YQ2sF4whxhFfb03ceBGSSIxNP
ziw8iRygsw6WTrhx+gHhvHiKroswZulw6R0XyB6K+diMDUZDZmgPQLtk/A2C/D1IMG/GgO75eeiw
SIvWmYz7N3vob0igHIPCsa3Se4woCxYW+LicA1gzgWUAVlPzKxsixH5KSfXSXDlPESbby9OpD1Hw
PL5w8CwFqjE5A2DZavCBqc27otKr6MEHUiP48IHglDFy94Gx6h/gdc7BCYOhRDeloT0BQyfg5QRh
CiCjTiDBBpJ3NW4gdGpyJDzCAC8YiKOsBYUBjzDgCgZt11+r2cBID44fSF2SY1po1BJIFEqEQlVO
oPZWe/oAwoCaoXAcy3ZNt8AxBoMmL9AV+AkRhTvU6AN1B3L4AcRHuWec3jVJa4iAIz6whQ9CcMQY
EocGXYItfMC6UXUtGVlERpUK+nZlzQ7QJchyguCNV5ZCAWJEU+4gBD+NJlEoEAqLJAghNWMpDCBG
dFWU9b3K2w0gRrQFg8E6dJqkY7SBcoAYpCIxaBAGCxHGQUOkKOMIA950fLQX5hILAlH4MCRnSVKU
CY42UGWhDHSw+wAgYKPdhADD6kgOMjZ5yxRmIaPqDparVKQgk4iJeX0NozQlP6DQB27gAYEEGdOT
D6ixuZVwUEWpC6KEImKHiLjIsfCueVKhQFLA8AkXIwI2rMM/rQ4hCVAfIk6+ZEGGovvTeo49hH5t
2eQdgZdXZfBAEwj0h7QxZif6pMSqgODzRwQdv15gnGpMi0Akg/1MnQw3iJ5BXZ9BNcIAEkKiwG8G
gjfwiIHFTIRybBJoaye6UMAAUqZ0eUVCkFiRRASZgJU7CJ/SNBEgVcaWHWz6trZUgPjY+VadsyQV
IDIySs8VSmTWaGdvwAFSp6zozAqSEwTagbcTWQjNsiqGB2Qs8DPg9EQblVgbFTONXk7sSskmbzl6
x/Xs9sREjDvXyTHaKETX71n3EpHPKCRAU1gghAYdbRIhQcbZRJRLqM2uQwACBQUU0JIYvSVazB9z
pE67apKxoE1QG0AyQOruJaAfU3QAVokgDD4l1XEkiIWeqOPoHdF+vnuB7o/J+TuC4KWdO3YUfEnZ
3LelEP656/wSnJQh0LHB5xQokUHB1dyzAk0afcMHEBVIPyFBhU1Ko8slxAH2jpRDiAutnlt1UCF2
E7eCwrqAUbIVxbRGiO5QulaODYxi9AGmJtqMwi+50VWntaRSLLEgE71/kPZNIUGkTKeT0rIEfYCJ
uVWK2ECqiXOMwzvUxkweQ4lpQNiJUSomXODl/AMSUTHzE0HA4VuiTfVtLV/yJBegG5T1NdcjfRDd
gFNzxwbavxNzz4pCTMTt5DEQE7vK6xtcM8go8b71DRjWVa1wQYSEjofLw6c+JiRmkTbju5DXhtIE
csNGeIdCmhxNqE3guut+xffLMxAlNJO1x0ZTWpx38JqCH0capdU3LA+2b91kedzEzs92D7buxw3w
yq0BcOeH3ejKyQHebdl5TBExFLgB4GpCMwKCO9dGpiWjwEFXPGeG/eny5t9NOM6BSD5HE/TS6eVk
fdznzqmuRx6Jew9Wt8MehhkcRfUrsBrxG4K3leyIhF0xyb6Qlg2b9BXMgdVdRbwn6QagzWuQWMCn
7QU9mwhpQO6+5kMQOT0ChSrTscWM3kcmRUK6mdMbWN2KyZ2Bpb2aSCkBGc3Z7Z217y/bv7+fD6/b
55chr0Oo7uIpCMgtTRkMpRNE+BQA4IOePQzGgeMHUjoBH/StYSgAE+HziCVLSwQ2DMCkxe0KTKUk
s3H4IkH7Ak2kGjLo/U/In31gHH5IZxfd2RW1AYQ7a7v1zQ4eUU7uhxaAxT4TnUGXcVp99oFx/DrB
F+xR4pihDICEvbI+pT8xZKUleDehPIFvL4UNCvEJCh4Rryv7p1zGDAbv0gYK+VCuAgadtukDfIJB
h+inHp+Pjs8hAZbVY2s48v7QBoyfwAsM72RHv+T6HLKfnMtOjTZQZG90M5AEgOCN6dY31PqIAZzo
bpCUAOgCjZ2QD7BxEwXImfjGEiTP4Rm/PWLCAE53IsiRH0Ak4OyEh+HTqecCFArgKsDcSIDC98ve
cnxEgZ5NZADEvq/7JzRiBsNeCftmggAxecKc2xLgPm8cta3zRIFoBia6iJ6eH4+//fVDp+LZaYte
V3s777sfWEQkAVwzNuzQu66O+gt7PmxPHMEV7G6smcGbB819NffDttARVsKu1JqNu1KvO4fgethU
esUb6grta2PjfRcGizzQaXXb9SPnu9VBP2wt5lcOe6l7O2yGHuE13jsXXS90CnOoGblzmGQ0JFjN
dXd4SVANJFg5bAa+ro6ohjPMLhqvzjk+Ozy4wbemIMFq5udEg27N4INbtHOLYSfN832hN0ILGLfp
zbzCu/7pFLHCxv/eTPeOWM3ZYf/1lVqhmFAYXMOnRfNK7HzXUXTYHDnD9p3jBfEsQRnjp3iDPf+9
7uSrIpZHJ2cTRpuMDPAS411NVnfTJx3SnMMyatI036upjEKCgqvt07Rv9Qt6S0gLev1IIir1dNq2
6p3OFnXNTFUitjGdWe7qZFTKqyanQ7qMm6yPxiw53y3OdsCTGVlWDyd8JXiJh1Q5O5wSVeDR+k4N
pxJk5ME2/eMRWQX1aMqT6XdvKXiEfWOGow0SPLp3z4fD2Srdwrtj3RwKkvDQcIU6unxMuHBAmlWD
8eHtB9CMMeOH0/XyBxC0H8/hKLSPBlNYM6ceNGOsmexLuHQkUh8T7esZ7U+GC1oxHI5YEIAo0MnJ
AfDw+tzoD68P928Ho5FXeIR95+a3B6cLWjmhXjyC3TkzEX2T+X5GzskXin4+Ed0Ck6+r754Z3T7E
n5swr8DC183YdzZf0fLhOJzyAQRvevg9+aHde7alnkY3IWqoHz4dLt/1RdSwejVqXDk3zZK1ArBo
L3oyclqQjd6r6ETbfkCixfkKHTlFbWHHXokErlbwcNFO7vbOAHBO8A7AC206RxxcoIPzevBgrHBB
fECiD4gec4JCvUcfcAV5+3pLWGuUwMv5gwLu9RbcIsTbsvS+ZlsN5y0l2EIxRGXHuDAhwZruwhVx
ZIeOPNm2R0v7sm1DbVsg2Epq4f+e2LZC25YFfF+Yi2shErzHGFeQ0h0ryydxvAV3CNZNto5EE+cd
yikC1+jYRTqEe/d7Bn+H2MMVpPEgZjij0G7R8qZ+IBiqTPQZF47qIzvoIOumRrSVwNsW4JFT3THg
sQrAaGWHPJR553DKp0XutvUDKCJh3eTsE1+h0cC5neER+iwD3pcIDz2VGjhf8uro9MYBR+l6euT6
sp3LkEYfcj5Z0W2AOD5ynDk1uTy0tBPDaZMJGPlpHR/OeqyIQzdnUUgmfwDOpzVzuoUzau0NB0C4
t2pOOiioZPyccdANWD7h/Inj0fot4zUCVtMK8vfnx+NGSQbtQaPdmq0Qepugx2UC9gV4z96wKWsE
zw4A2q8M2zwmcFnA9zO6YD/cBM5XcEKyjbtEpoObsvSeusfNDhOswusOn+60a1ZW3rvMYD/WBG66
G9uBI3xndwm6bY+W9njpMT8lcFvQtneW4P7DafesQzsj4NGNm8InhDgZN+ZMS+vpnQm0dMX7vmPe
uL9kWtp2hLojNoVgZYcxQWwbgRuF2RMd2VbeFNU70DRok7hBG2omLqYdCkszcCLVS0zzVDhqgD8d
r1j6zxNUKmfdESWYVzIa2JtaOjLQ0c7QQyHI6bwGy01tABMHYIFltpZA7nIzeeu021LVFnqsTaYP
sPaxpJbHLKEEEATrBtD5lZ/gbyLFlOkwoMgNIBQqBx4vbqZPvqoyRY42gN4gxYE8Ww+ArkCLbgMk
BpFAVXZGgZB+/QT/6O3WCshjbvBDoO0NtA/gJVL1Vnh0c7qKdCKB1kzff6XnvIOwp9SEctHiuixO
ORHM9AlXbEs1+663aNiP6Sa6SOJVQO+ZIoYUZWDCUfN0uL7+QGRPOjjAW9WhxPstutnMduG7welm
C60gtKrjoPdCxc0macs69nyfGetmM9slA2O83WwMtzR452Dbqp81r7egYGy5mqyKRmdrhm8Kj5iX
Cowdd9O53dJhcIBp5TC6hu+WKm1QMYVxQKCykDdRPeFAGEuVHq6jaeVuOmtd2m7WOkWhaNS6w/St
IN6UmmIdjFmXvBuzvj84OLXyeGUFuVoJMKHdzea7S41loYKnVrLFeJBH/291/XB2/9Px459+e4mA
8S/emfb3i5qffqDT1X/u5wXlHwST00wzNrFXdFdYMMrJNBMb+5d6BfYAlnf2D9/BOgDLBtbPCmvA
gd1kz2Dul7GSGuW3Aov9lRx/Oz701yFQunKMl5chF5tE7xUczk9Kc9GoWQkNOBg0kZL8qGkDKzwY
DVKHmlB3KvAonJwlg5aGU3ycZfOTO4C4MiZhI7pbxHmAON3t3lHwggF4MxjFs8IreO917NamNKLd
Pji+qVMierdXg3xwd+aGuwOrWz2hHDwjIw1SRMsrNPzK1aFjm1egXR7cnTbz5cHpfT8MiAQHlFcH
hAwkhoJXV0emDW6ej3v8ldxQdHgJ2dax+fJgvEma/Znge61+hQdzw5q5NuN7B0fXtpvqIyl4cHF6
NHOtYRoDmEYO5tI0946othkMM2Q6QDfKDcYhtcgD4HYwkqghG3B4N7s6gQ9v7QR5AkoMyweTrJrD
A6JVfnJ4NE2pGdpGP3RgvGIdcAi4DaDdiBvgwTNlZtcmsaDmk1uDQw6dZhOGQ6MxcyJmXZ0UtIDi
3YzdFRaUdoJ6CRUEN+N2AcGtmkh5NBO0Ge9I6zYanryZz9hHWhrEAZr1vWJoyGtDGrnpxkOSmh1Y
XouJnBTwkbBmcm8aEl0dSbqJKbYMC2je8ImwUZhl/PyJA+BWDCY8ruBgJCnrFQtSVoCldZ1j2/cR
aB8YgLfZ66iwalEH/g1oXsLl7U6jbeEn/QeFFINmbnFxPgVnAHzSEExI2fUTKxHKuLQkvB7H62tv
YstJvzShaqM9wn8gJ83mhPZdrzhHgYMWg8LoQa+5Bt4BcDnovrWCI1g36BTXIE6Du/ETcNhXUmg3
6P3VrM7B7rWY714AutR60OquvTgAbjrKJMkGUJ1Rk3szAHbUVLPFnAVb54PWki08IFlV996nxzZH
B3Rj2KDTXntxYHmt5hcPGFbeQPWgxaFQeg4PLk/dcHoOCEfLOTy4e3XL3QPk6UGrwRYcML2yE2mH
WMbPtg6Ixt6AdrBvaW9gOUB0yk0emckzaOayEohKJW64dLC8MoPmlg3DI3k1GjRalgcUVzvRDihm
bKMmfmETQQubsQptJ2Ie8JqxE7SNte2Edj9XDdDyu8achOKGiI4P+oImxQ1B7jrYVrXNtuoZbDEU
cz5UqVkJOrC3jQJo36n7z8tPn55Oz8fuq7NoE4j62GmYq8TI9vajnYWq7HYIcgs8LW9TmqgNXFfW
9yWDo8eFhvX0lptBOfUK7BCw3lbyt1sS9x+fzu8PT/1+xOSTo74QKzAqbre8Nkbos09XaIgKSZ2m
Xo/A5ZPKDcurCjy8XlvhY78Y9v/tyAOuXysJeSCRDbTE0JqRu19RJ+9PH5/Pl2OX+5n/ZYRU2wyK
kJRH3o4NlAzMCzBBDKDTgW3m3ezbA0dofn89v10eNqfhE+43gzTfFRiJnZLku3+JIiySHGqbnNyc
RbVHiNnGbuhE4sVo9Jz0IkX4cVCaFxU4wfMRvAPwOSlwDM/x+ilVG+zfY/hck8ApmbfiT6L9u27/
YgevMLzqzy8p/KH7y9mspBtuXZ8j/NXz7/I81vUN2n+F3xmAEd7g9bXs4C21vkLr2wIf/7yDH3vu
eTEBEf7VZP2C/70CoaBHLMGLDv+9FFnXR/tXlX931sh6fnj/akK/fIK/mfywmP90kR97Sbjev0Xw
bALv8fmNm9CvxPcvC/3tHdEr/hD/y8r/grw/N3YH8+I0RAToJgxoug2QAggSoJsIUI3XVzMCdOMg
DC8uMESBbpwnwIttlk6wS5MoH2DoA6q7Ak/xALwCNT8B4gEjJjJATd7wwkObWXzN+ogEDOt4wFA8
iC7AsokM1JM31HTwjuJhyINmLgOhDBBzFoQysMoQQ8oQh9fXfrJ/OdGhZjLYYR3A8A6+U651q5Dq
SemcMVS7whU4UjKAVWN9XE8q/owx43TXuLAEsHJQa7jCogOLzg1gdrBoz7yr6jCbAyNIvT1tvTDR
ZBOLd5zf//H4cPp8ePrT9eHw0llI8V+xs5TXqS571ijwGsCD+EaBFwBeDsZutfAWwLtuHg+9f+Co
Zqzz1nIS3oH1/djbW+A5gBddZMuQ8ArA6xvwbwD8bgJVQ2nv7P3/fjs8v54+nI6XnrIsUtyjT0LJ
wTSCFR5PM2DCDMZJrPAGjgNgtZn9YH2JpyEw5bpxAOQB0DQEJtVgIEW7A/QBzQYTKdYPaDiShdnZ
BhS+Al2vQO2Z0/7/WfvTJUd2I0EUfiIeC6yB+Klpqe/ompY2qXvuzI+2MmYms4o6TDKbZNYis3n3
L+BAwIEg3D3q9GczncqqU44AHL7DFy5xKWGQGqhQfV9N3AGoiSzVBjgasKo5QBcBHAKdEQ7ATyQa
jJd5gDu/UfL3ufObkZgIUfEQM9JkwJk0xP4tv3+viJlCNQtxF2CkC+DHaQ3aEkOVKgSy33eCELL8
950lhvLUBMjdgG+lWOiKAE6KhQ1imNuADgILWnas0OAHgQQ8r0ZwpkrPQBnZQfZJhhhBiFl+A27c
IMU5EpoEBPJznQYzCCzg+Aus5op5So9yJIwzfR7N9nJ+Tgg5RYw1qkmY3YEj5sLVO+CuwE7NZCnV
5UKOiarJdBN1BO4EOFno0XvR/BCQxIROtmW479uh1gNm6CKAI8JxEOSo4xUBztaimZClgWq63fBo
p7Nt+tMBJGvQ8TcwStYoP91vMEHgYsNLAetlMcwyoRMuwPP7x9mOhBjmh7MNWpKijjclg6RGLD+b
ayCns9VChDWGNTHcq1qAYwE7bjCGOSnmjWzNs4LYS8YMP59z0Ea2BjlN5ILsTnA3YLWgBzy//yC5
M47/Ps4XfcwRKqYIp0ZwQuVjHK/cIMcFOOOR1sXcDVgr+AOW50I3yaqck2I4npdAAD+jdNCToIaE
EZ+DkUjIClLA+w32OEuEdi0G6hWk2ruhVAdUMzKXr/tPv7vdDtf78XJugzVs95uAE3yiWIhX7FcX
41npGHDIWlwgShnvHxag9QvAJ0cL4OMdqwd4utYm4Hw6OMCMYOce4GkLK+AUIPh+bPg89b7vuO+r
BR5iFrqHQMPBTwt85FHrevhTHP50Of/8fWe6F8h9f2wIQHXhGQrKA7AAgUN3AbokNuB8QkBg24u/
3gB3AlVOEG0lO/YW4ChIFQqKesaa3g1wCDCFhWLk03YPELjvIwXO8N72KNhxFOwLvO1yoBMoCDlY
d7+v+f0PVsY/x0GqcFD0mO0jAVl+/xo5IEQq7n1/5L4v3Z/l4TUyQNuhv8IfK4ILfLQ0ne3RHydB
jBXOr1j85bmBAD/GNboMOHAIRAJUkYh6CGBF8CSLYPYARQCAt9olII6Adfn+atBAhQBOhanCQDFs
3FFBlmcA7QUVotjv5xmARQB0v88RkLbC/VleAGpkoPnPduoJIFaAKpmBFYtAJWyAiVQFHLFbWND0
KJATAYORWYjTgQpZ0Mc1ejfAGmGuocCuCOfgh0G2ArkbHIoIe8xTKRzMiZChsECMl5iphwAOgXps
dNjqNXOmv8P1rTWNnej1KjZy5OTY3cAFHpwcOdHEWPAKnoucKfTZIl59D559h1Xr79c4VfrTv3zZ
X/fP98P1X077262bhqDFNEdVUlRWw1bKAp7PEdIjnSZXFmATPUuSTc/+UFrMNFUTnamaFtD8DoaS
5tSzQJQWc0310OSZuccFhGTHwdCJSmUB9gjlGuPTq9VdHHBHUAOdLl12wOVKDXqd69RBIkuJeAu6
fwtCtppCJHYYVmkxZV9rOl2xHIHdQahx0FtA86Q8THTCYjkCy42Ig06gKXMjtwMd6JTDcgssITE5
c4WQWBzYJm82dBfgdjC4JmtUd3HA0oGXkKgFdg507UBZgGWmUWImIXNRaekWhNRXNUoLCPnfisnd
LaTM6gUlyQOhAkLbdfZto0DNSoGuVKdYbzxoujeC5gcc61LgQJSOan5Kpy7HozPYxOYMis/g46aU
6iIpiGpxLYxJ1YVCWATyXUW02oBApnRYazaFkJswrYuYEBHA3YCiuyRofs6qLsKePQDf5WGwbA6j
2NxkcBIF8m0eBt9Q4NhHIMMCatxAQRwJD2wSrNjpYWDq7rUwZ1kXk4U9gFC5r7zEA0IabhFCjz2b
ND/nXBdNR/S60PyIe10MX4kEufp/5bZcISPGld6wA4YGh1GiAcOqET3SrZ80P+xYF/eJ3T/fvEFN
W0iQ6RqiBi6Tefr0u/vlreecTuIkT1smeUIez0o+THKxN44ZjpdsevDcAFaLE1DnP4ehB88Wq7ej
hrv750YF2zIqOGZihbUB4z795XI+vL3ff4D98rf9+fNhbcXkMImjK8BdfoGj7IAc6NDMCgEr0Hsk
yI5egwVSgoSmFGE+xMQdIjSHGPuHCNwhxrJCT5nmFThEhoLILiezEaeEBtvg0fW3MHJb8GULPWGU
EWk4ROrmEEN3BepFGlYYzQZqMNwpJt/0JCCugjtF0BtWMBxNT0jTI8kViiPJEUmyp5rzHjiSnApJ
Pva8LStwC/iWpvt8pTnODK4mKIIcjOIOMdDtKRCR3ClGPEXPHWfnIyY0ID1Z8iYURw1joYbHarSy
gh04NEwbuILr1JGHRGrK1GID6mmBYQtrc4gcW0T2CVJxjDnqDTJScacYhy2szQmoyWw4BcfZPmxQ
V5q7y3HaQNKGY8zJbaEnTtuMqK56FYjsA0tCg97A2Zq7iWA2kLThEBmmLVqbo6cwbGEr7ipGt4Gv
ODR4s4GkreK6+Axb0MDRdAgbGJMTkV6tF6iN1QBuQGucBi61I6pMa1Qz3nUldkNyrbgFVCCmUlYL
MJP5zGSJ0YD1Bhy3AU+M1lsW0OxQSBOo0X7VBhR3AE3M5q3hOQwOgZgqWWOQ2YHVmpiiXdEAh0FN
zYWsTzBxVzAQYymXBfjJpAYnefeMqEwDhtuAFe7Asndotdtwh567w5EYUFkRITfa1EwDMRm03oHl
dtCOM+8uoLkNGPkOWTYaNqCQu8PBClRsaPcyEcEk3IFjMWCNkzegOD4avIBCQ5vhaYFJWMCystTq
UT4Bx4dTO2i0LwoH7gBqAwo5Rhy0jELNLaD0BnXCHUEpmY+4Mc12MII+sjwZai/oI8tOWbZGCwpZ
80QQrMzIhqVCaQF+yrIZg0yFmsOgMjINeI4Nxg00xGkDNQokYNgrNNMkkxCnj41Ego5Xh8bKRqFh
adjICp1TJpMnhk1XJMTZZKMXTCrLUoA1g6zOuQsMG4xizd2gHoh51dUGOG0eNsjRkbuAxibtCHLN
s1DwgjljWSFkdZBZ0HBiXCtBivIzs804ErPua4OOdQvaDfTNGQ4FSrJJNSsETJhkEuJIIIwCD2ue
B4MSeFjzaiAY2S3iWGh4YKHaWzaffn+8/ePj/PxYUmakqZyGmd2k+T72CZ4ZW6XZSTEJXNFTfDQ7
egHANY556xQ6GnH4khnl3TOTp3Rohi9N3c8z2zdTM+TO9eAZ3Gu74e6YsV+GmXOn2akf6fOeHtGn
+akf6fNmw+UxEwYNM7tKs7N20vZHenKWZsdXJHBmHK3mx1ek3XuZ8hnkaSPfHTdn0GCFqktlYM1j
8YDZbt1M8SH2xeMHoynDHTCuYH7hz6hGehzgsgehDneSVrDSHqZ6st5DlvAQuxIKK1iOTOMKTlhB
awmT6hd+MqLS9FjHZQV+3plS0ingNhlppcImTDIsp7x0Ci3twdGzbCt64NheSXdhhT1oZh7vchf8
6Dv1MEK8Yl5Tc6rhu67CpFRDo8TwjZcBXNNKwPB9rwGcYQ7Dt1wFcE8rUMN3DQfwgSYowzf9BnBm
3qjhe+4DuFqD4y2q+haV2HxqmOimJ4rVBan2aKRrp5TcrUEpuvRJyf0XlaF7NSix7mlgmhcqsWpr
8NLWuZ0PRvo22+hF2abkzHXAuZOrcvJoxrZVeErsWaiwaaWPKzxCcxQzjOLJ2WI9LaGdw9tg6SZD
SiwUHLRE7FxrkyHQrU0U62+kgz/0p1qY3n/6H5fL6bA/L32DfTWEZP6dNwnhHTXzoXtw0yO4FsGH
MuhnpZjy1+lYa/o6Tj0Kva/TT5cJfCjgrYuM4Jrb/NiADx1ww4EH8ezs5svXV1oQwbmvVzOf2s75
CM7eu2m+7jr3zqLuYeJUBU62zs6whhgthWhnwT1za0bceTXYyq4Pzu9bhZpY2w9TjcYz5MRgy4h0
Wk3TouiUY7JhakaLoc3gc8PxtJRm7g16w1WJeutTaLo/fIYNRAJLhtUcrCeSgDKs4WDH9XfL2Q0K
zWh4ZUmKQ4wr1Bi+k3waIp96upvmzSyDWgZ0bBrYj2tQxYBaHtQwoL5pX19NwEsDDemwogttwkzz
VfIuEiQVk09DGDnIh/yKcouquiYlUpIlqVDxplsCx+zGtchVvAmSwBXJP4o3OxO4ETfPcS/mA67e
tBCcZWC93vxyB7Psu173P8o92BxiYRvaBKKfyQLMteKw2E5KN+2kLB/cSV/2TR+L8QGY60FhVdMH
6BGYa2FiqSZMCzDXwcqWBi5RYITweGau94Z1RPucBZrt3TISnUcWYLb3Gzbeif/nH4C5rj3WdLrm
RNhs5aZfowaMBPipSO5P98vf79fj+TPSpGTMRimosIPgyjlCcMuBU31YrWRSJXCqBWcGj/9DQ1uq
nXyBdhy0lqDZnU8StOe+bYgGxog2w33cEmEMK1mTCdxLe+c+XjVfbl9TCjT77UD4pBnaCFsfiVBA
+fjIbd2uyQ25C4aLrHjqdrneG35SbKwLlMbgiFqhBX78hQNXmkhhX8C5ADSYRROVN40b4DS2ssIG
PG8wKKpqbYHXv2jeZhgsobWbFbg94PRV4g64+HdaYRBOwb0kpGvwROZ3cwqWkjRRD4F74PHgp7YW
oUeL7FUawglBcM+Bj8ItKAEDHktKVnY3rqCEFXRTb0ZQAkuNqqk3e9yDFSgpbKFF9gyTQAeOpyM1
EMVmeI2cFaycQAXcA2c6QBAkkhUYYRRE0vjLyB0gEFUc1edZCpiIwib8POfDKEkQGIGAPFEy2Ygi
Vgw8FDxWS/BsCCEjzA6tnO5lA+ZBa36cb1+OryvFaeLzLVeVHbAqHZ6z22MCOFdUHsqA+lXDZgTn
auIDNcB8ARcGqI9l92tfpXyeK6kPBiega+hs3lmA+34oNe0KRKV6RIDhq+KzrwwrxFteS1sj9gUY
yyEm+L/eDlj4aoh9mkTfQcLIISE0hf1j7xJZFHjhEi1/gKC6c+xXO2BR4IjWBogAz21gLOAzPQTT
OwBLRaWzQhTZ09S7QZYLRkSAAlru0RC7gm740DQW+vRooD8Imkk2K0Y9MCp5YkQFQBvHqOOJu+L0
cc1oo4kRFOnjmv+4YIyYgdHlk2xPjarowlVjm7J7ziI0nv+85uNx2jKKeBIVqR4lzHNWgDENtHqE
5vBmFNG1AE/O0Zx2POIcawAZNMTb8hb8OHdyXU6+GvqG4Cy3laNDI9Khc2vs1wPRbAEpnv06Gm/T
Q6RlEr157SVRwRGseagFbwwvzvJPhhdV0mCluG8CV4zd9hhBvL2fjs+H1mzT2bznXkcUlfWOK/C1
oBbz5nsejmbQDBvAIr5V1vkCDq42U3visHKgE1ZKR+CLFxxZDIpH8NwRRiLxvxyBvwMsvkmU1zkA
n3pvJ6oEDZHI36JTjqhAwj3wdeFukK6BFLIJiVRNNIKPHHgQyIi0CxK4J4oIGzbgKpDIctzmCrg9
VHXxfTKCK2DpWDdXYDtI4G6wqiLrywKBAsgaoAaJXBlamLZQIYfEQboGEAbsCoGopWsukiNlLGkl
xIks/IOAB97pd1pvuQmuNLpqkkDs4Be+LNVVFXGPz0PlLjksVFWVfXKGu+QkM9Zn96I/WirtdVVZ
YV+ucg/H6QyDSNFa0K8jUdnXrMDi0W7BIyvbvUhPAiarbgeMeOT2QLaMqO6SlW5KuAkr8NQkimde
z9uqWt91OUIL8tVukW3cGQZpBSNYKqOoZVl2MqKZIphK2Lym41AUMmJXMETvlOYaWdEoqTlJMDqi
zrO6BJYQvSDUuJh+wsEgMqNAimoSBYJASsMgKEktiDWnHqz2ykUaHzyk94/bl8Y/GsnsryGagYlY
h741FAd8UvYoQKfX6qEvLdhZ7+njAw/uBPCxgD/KupETNAlcF/DH24Wjaw564hGn+L0nK3LoOwLw
cc/h3TSIe9g6rabS3l0Bf+QtdrJxAvf13leMNXKOYAJXDeZCB3McuEbEP1qugDmWZgL/cSuQXCH4
zksZfNxx16Yb6OER2nLQBW8diQrQ3KXZYY22OtTyIEeeL+fb/frxfL9c23ALmcqZkl+o+qEMK6V6
Dc2026HZpHvY5D8ux3OzO0dzLSTYJq+nk5ubgUl5FaHHCaEfedbR1wefTtpoGLvCyrHeUvq4bZKZ
7ePHPfNx3Xxcd87NbH3ArT9a1o6Rs2njE481wx88pIgLwD/yO8CT8ibBW/7OFQ8/Tm1SdgfxTEb3
MPG3TqnXdGumfPlRVjm2TDd9XPOYoyRlAh6bjz9cm+UuPQyO/7Tjr9w3Vxa6V8bxSvl6J//P0VI6
Yb3QW8coWeiN27zhj84EBNLmx/WtP4bUOV8cG5RUyj1/PjyI0Ovh6+F6a0PqgQmhgZh2I1E5V6C5
rFY3MamhgQmBArRHDfN4PYEJYifogUkGDkz0Nu3cMVmpQdRu1jFpqUFMLHUDMQo+g1sB3IhfZ+9c
81/XPLid+GvTfBa2DUwWdmA88rR3z9+bY3O4XWBsGraDZQJXxDRKJBr25J4oqUbEsTRXWBUSq3yH
aNjN2zoLPHJ6bTUOjw90j+9zAx+HjboFO5j0QkYD/7YVF3BUWw1cwHC9DyZLdZBZFiBFWoQepy2f
V8znHdF6YVlACxh0E9GJAvdPd5CZQtvHwjxA87sfFdG8qLl/BvtVA52O1zDwcRbAH9U8AhdgO9xM
rrTO6MWKBk4+RRDvBfLhqW80RPOKhv45+mla26zTTwe+egsWGEQOZDtgTFUDqj4LCB1hJjcSXZCa
BZgdOC9cIRf/hwUKGUOdUejsQKACRfQQa5DIXKOxW3DAkbGTFmDFqA9EDzWUIszxRy8JMa4D2zQO
Ajj3OA3Ym2Qm5LavReQL2DPCAjwPj1YQ4VyWC1x+WaD37jBwpgJs34kyhF/AKlGGaF4JG+ECNasD
vayF2f5Jk6GalDUShLuBQVBDpHsBBOAEAtAC/rwWbpC0c+HzQVaB3MdH4eNawL4LovTkxa/VogoS
OGAQCYiXANgCq5OGmC6AswIKBnu5QQOfIwb7bztw9ciPMQGCEriPS8yB04d1G8XKV7C9CPPzvs2M
tpyMgtpjh9XacXB9yyOWM1QTuObBydrMBF2qpqO95YZHaK7m2pUS9079huXKmFPVdfl4ZBQ3PX6c
PbjhP07W0yZoslB9geYq7N0oHpz7uCWbEhRw7uTWd6rVW4Ljyuxd6S0A+tk/Hp2FLv0Bonj0nUvj
+ho4PPnQo1ahQ4AteF/qjSp+9I8vx5f3hhk9o65Mafra6xKVofmGQUFbovtO+bjhPl46HXVcJs/4
66Y0C+71iCrQloP2/Lc5Q8mUjq8M5jg/wZQ2osz+DdukKphh3XroAVxzX5+ITlEFeyP38RZad8iG
27v2/N5JF8WUHtfM1Vke70bxeNcC4hx/72SQxpQ+vwzD8P2mgh55cCOQHH7dPjxreC6QaEqH54S5
qu159aohZEkGJrNOzoeyYeTA5YzdXp5oPrvp9Dn50+V5fzp0up0YEc9VV7HH5yPDmCim9LRF7hgf
oTneUhyJGEbZmdLTFynEPUJzIrlqxvaYWWEY+8aUbsDMzgWBjG33Oo+dhrHsTGmH3GsEV6A5ttYD
I1PETpEBG+eV6XuFOB3245nF4qfT4fz5XmeHObYTS6zyNa4Mun/YnftFCyPOjaOm3CO0YaBtgZ5W
T06ObcSSoHG8+9ohdWzfnwQ9NMPZhw4082078dCkI5W+7Yi56hFaffq3j3tzh0p8U87M1X2Tdr/w
jT4AXmMmweN5FCtA0/cd/30hByMLpm4OSd4/n0Oi8U1/7dnj/jn82Wb/4yO8YfevB2n//P1pOhME
8cft3zcZPK4Lz6RzqLDOiUCSVBUxbumYUk3oXt8FT0kZfCBLZBU/hyCBe7I6eUujk0CNzrW/bOiX
4wNdJLulb1Iw3NnFTjPV7OGBADfc16k5rzY3LE2/zsucD9/W3QeXPqb8IxAOgXnQF1oiLojgDmQM
S0sXBPCGfIPQEn0AvG7moOjH/fPw1SCT9QVriULg+4o/v/SKp8M6AopXPKOu3Gs0JZq7FQrGIJdA
KzKHAxZQ0gKr3vahuwCXhKLojnj5CEISjB75IzByPC/gpAWEPBptNyzAZXTotp+hf0SikFGih3VK
SAcHXD6NDhsWYI/gm1Qk3V2Ay0DTE5mSg0hkcaCb3u+uS4ncEVRYkzJymqk4y2xI+KumCq59PrPB
tx17nnWCfswLr7cmNHn21YT2NZaN0JjaTwPZFs4IDbE9NpeOWQ1WrWFZ6yLw33XcntW6j0NzEfoX
9hao0YwZlqudrPowr61rs6EMd8RyObPy2+HTLO3RpcwAy34Xy+yW3LJlaor69IfrNVcewJ/rWTiK
9YqhEhd7cK8H8yg2GpCA0VnRTcJ3BP6F6wWXwA2Rb76AC1sfCFdrATc8uCY8hQVcOLta56uXK6m6
0sc/8NUcBrsrdsKdC7wW4HGSw2q8R4Y3Avy0DvbiYVR9GLFNt6/6+61mRalfNsFbwvBf4AXLv+qw
t5rNlOEFx+Ox5SuiwtaosHSjeSDJ7MlG4eqbRt0AyyFixPEYg+mRJznnIX3YFMgHvkgdhZmvBuar
bIf5EcehDI9KAcAtjy+9wD5KIks32B9xPsVgHsesqfR4SH+17Hg9lAcgDQPpGDTzJ7XCBXEnHTlY
gTDUGnahbf3pr0//ODzfFzWiKxGmiwTj5jJNrsmeRtWYwS1vrA+Uv5HBnWAkKqIRdQb3ArhrjFTf
+TrrbQ1E2rsuwpf7Og7zinlh9mHzwjyuyRAmOmKe/Xogih3w69xYqonysnRRXFyNCg4Ti292Vcd6
BOeKVHCs1apABjHPUp0XyYa9d8uTjeDhDpa/OCe46JrHvON9y2oAnSPunZvpNT3M9HqgOvbsI495
LdB8IOIbWjK3ErgmPHu8dxbznud3zWN+oMICCM655IPiRaUWGHZqZkT0wFnUjWuiXVRI5XhoZgYP
1JP70lw1yo+p1hb0JJ0EOWBXUg/NZVtYriWsL/1II/VOpYWeBns/acDO+CTNOtJg63jMklnfCef8
J1gqR0SzTniCDWu/Aa9DVQcohi8XSXCBCHrrYnhzQQyPQe/Wm8PPT9zXjQjObd4GYrQRgo/c1xUR
zahwx0VDnCe6mSI8FxCxONsoRpd17/MD93nKadJbJjN5Sw1pwJvnDu+ph6Zq9xzluFFEHuex2WZG
RvfuAvd1qguv3jJXyltqqhV+nTu7HUWyV9zhnRNvnrs6qxrw3u5ZcE80o0Vwz21+EOmOPfvE406I
NFiqc7TeMg3NW73uIVzg+airabftUQ3ZSmSTzqcqU0/XCewJ7pfxQZXF394P1/uPP97+cP54O1z3
T6davwlteJLyxK72IKMaIQULTBz01Ch8u4alpFvqI46dzE0PmOui7ksb+FVSs5b6LiXwMgoATjCs
wQMHix3s59/C9HBmtne6ItrXZ2Cudb4vndthUJvpnJk1zty68XxFXO6RuL7sb3/9dv63TGINWTny
cmKnHTOWtlTwZ9Vs1JHYTbAT0Z4ow1IUBcBBEf2wFmC2sZIZnfBtxX2bam2E3zbctz3RiyuDjxws
tnRai2uAnbhtUx3IcNvcqUdsB5Xts4qo7CNRfd2fPg5/fW2oyTITuqEhiDNE8pAWCiAA2oamfY1f
QwfmwyPxlqCFipUErYiGRVqoXkjbntajUFvokfmwJx5gMujEgAai8UwG5W7J8V9VzB35gf+sYhss
Oao9E0I7BhpbQ6399gWaw7UVLnlgYKfmpas2NaRmYWXgdC9XR9PBcVVGTffK/DQzMLrMNQfAqv4r
b1c/MvvDuEud4+Cczz2WJOrV9IoFeOCASxb0Q+AQgCcOFisjpgc60KTGM6jWOzPTM2zgYA0ZZGBe
DTJsSZ1e9aTJsCMH+zBwvCEDgfYCUeyq+bqsMvd7nSOW9+wfqeh4+7fl95Xi8OQBy0tbr6dEBlXM
8RRVSb/ADgxsoLkrwk4M6EhzdAQNDKgXTsuAGv6rTMcBZXvpcq0E4yihl+2XgU1PnnTLStK//h3n
kXpD+oQAy0WwvG/8urCGZSM4fiSDbwDMRTC84zfNBhB8IMYyZmAuauapHF/NvdhmWL0eZFhil+bT
v36cn+/HC2ZOpmogLoY1tkEkJE4jRjFG3TlGhMxlIX9Pv7PRnGSdeML+jNBGsl6rfJbWkDMbGm4O
awuh+jL3CAjQoyIyafK+NWsXYQoReWoGemyaXq6+rSTj12vCllxwxrWrVPy+eehg6H1LnkYIzJm5
2XoJmnI2kEY5C9oS3SoztOEpfCLSxfCuGTepSrmi7pr7NtUuEmmcOfc4EI1d8dsc1gQO4W1/zBV7
vDEhTW2ctADLUbjh75qncO/4M/P7Dp6nUn7nPtDyTJIJYeK5S/NS2DH7ltIps1/Rl0dsMVyCNvzO
ef4YR6KDLmKco/CRuW0ldLHNPgKhf7R0Y6MVuYsJn4yBoXIjftuvoz5F+9tK+wtGKjhH3hETr0z0
dbgREqMhcpqN5N+nD1ODmgzftyMBl3zqpZN4DSwUm49DPyXegAG4mHGVab5/fz/9aPAajVu2uNUq
okQ0Q3sWOhcKmd6l5G8z5almaqBtB5opT7WahzaUJAJopdfFrS30SNlVaeeGh/bsuTUW1ra+Ke6c
ObcaxJ0z5zalmPnBLuPLvAF6MCLOGWoZJqIMG6EZnCslYm1koNsScN+5MaYMW3uRUpmdW/x2G8cw
QiuGhLVRxBqz8xwiMh2Nu5yboTUd5J0PDNJbtD2QqmO3rvDja5W7fHxioB0v2Pi6+6Fhkw40V3Uv
XJijzPiEcsvjbGQvzOiGvXsXxnxbWR5nI8veRvGk5lhoNfHsPfIiVYAOrFC0VhSpDKWZsWGSqfNt
htJs2+HhgcoVBxuarhgP++Z40xbeXAWt8czMl83Ai1PH3pYaG87u0Rm3dRPE62KI3PgG+kGWMzdt
HdGFxAjtXZJMcbw8cyyNasHccaz600a8L04NDDzKRvbbxvHf1rwk9qI0ZVSvVmsF1hjgXDnjqDsj
CPN3dc/6fnhoM/xbWalz6XUaMOyTValE6hXpG/59rxTmJNhHUtTsY4OmavuXz/KdBYamxfrDh5ln
GW15VDGPUFqvUbX24bjiUt8bv5e/a3uE8Lw/nRoisIxNnzI4JkPkzGRwz49CUwMPPvKzzNQkfn3i
wKlBbHh2LtloGomcHdw8N81Ma/7rnsW8VYpI+TFcmkb+NM4dbKtEMqzjb23QRKaTkRprpqShkZjd
hwfnhvcpw4M79tbsINya4Tc/KWJ8nmHzVDLekeDWgcDl2477thUphuOWYSKStYzUOzhdW+BPbvgU
tUmLeOcyzabAgwuzLodB3DyXkzg5ntk8WUiQSFa4OCFNLghkM/LsqgeeYQy7eTN5YlKnkToAp80L
VKfYYZUjL2mcQPFKlDQs0QRiWqVhs7Py1p3I62w26jQRQ0bx6BzJDb5Bu+qAc8ppsM3uQ4fkOBmt
qQGrRuozns4+8DTj+c0rLSpm7tpVK+h67MYpZq14mvX8xVs18vzm+M8Phgf3vHpUKOke3TXLOHv5
627NcWuLlX2yGIl2KIbXzMnvUUQfH0NXwOfP+vV7RbGUTWUPy44yHeGW3UVFuotkzkwE1BP2ylxz
Kln5mL6oO28gCe4X1XEPakwwpY9J6NNuAVe+mGAtKbS5sskE2+ppi6WPpmpeYKQKfAgFTmOd0dk8
gQk18ClBclp3bG7BGfkPUdDBEX1tET5w4FSPdCOVI6fDG6LRt9nUumaUccc0M86pEfTXDV20mg4/
NQm1XXi2mfJAdCRG+In7vCXyeRGcxf1Ef51N6M2zV1m8ca2UB0UUHeOtcSnBwfAUr3iKz8khnSbU
RiqBT2izPMMoHuth4A9v2K/nIc/05hWL+pwExbIrBz45mWG43uPDKB6ea5s+aGImQXXznKgNgT89
P48hDxYvN286yGMFPTZ9N6sUS6F3QgLXItlzhQPBEb3TK9xxojaMRMN7IzWKSZI68JQj9BibBqJh
frV7DnlhEk/PVT8EKypJdvfUMIwKnGv4PwSe7g1/d3lQd336Kj9ZqK8fLZEbbjZUOfuJ6MfGZXHk
77YdoO0KlMujH0tWeXyQsuuvcnXVoyMK6o1YED4aGlRoIjAqohRdSGMf2/abY3Eopk+/398PS0Ot
qUoln2IK48BmVFhL5d8k4JEHnoh+/gCs2Iwn69GzaQPGCXjigRXxApiAWZ/KVkMMVP2IMcP+EgCb
TH1o+keC45jLO9TU21+eMG048IGYjYLg3Nfd1Hmuq8B5lzk3WFGP0Qb8OgfusG8qOIVrcCN8Hd8a
W68VwVnU2fXZq9tV0/p6Px/u//Hv//I/Lx/XW3PF878UCqSdH4gI7ALPh/2dNwI8H8LNs8g68bTq
++z+LeFQV9/n9u8wmugeLip/n9u/10RYaIHXAjy+Vo3NIPQIr03/pv9+eL6cX9q71kbyvCdvCWty
gecd/wn7NnUYWosjZSavCZNqgdcCPDWMp9o/C+8b99P19s+e3xCDiKrvs/h/7D+Fd+3XV72U5cW/
XuUhpH/PHFeVRCTofdJBl+duS5W0GgBfvewjuOHAQwF/ZEx2ip8qqcQJ/JFWPHdVqqRwMWc3/OZT
txqlHh44EJz7euoTpKp5161mt7xm941NEVqzwPAGSaDmCwGw5m0Kb4lYa7KjPG9Hhc6XF0FoO4Ks
WHx/x38lsZDjRJiyIgvbiXAKq+9zIsRRDn31fQ7ehnV1+OP3uf07Q0wzq77P4m8Qzi+IYKdq/Fcv
AgC/vuRZS93u14/ne265Xj7E3XNcthr63EETX/88Q2ti4vMklPYkaEdkNE1C6VuCViI0d26qZnwS
ysAStG++PayhNb9zux6zXl2tebjbG2mJGPGY40C0OVjA+Z2OikiUW8B5NI0cko18w+046rH3de7s
ttm86X2du+NJ2DxP3KNe9zNoNZPjNdPYSRtdvm36FPLn4/njflhRCGerQsBnwkbjj3LWcKZqAp+I
vt/V1zlwbFb+qGUMZ6gm8FH+Ogdum7Or3tk58CCDk5jXwzCsG8vXEl539PifL+dq+mP+Z3ztZhqI
1av8rMANA14KR1c5qxW4ZsAtURu9gGt+855ofbWAG/7rgaiZrcC5s08yOLf5cV3Z3VqIA28hai7e
pflIm5+4eJfmY3zedWzT5dRj30/+fTUpLv87mrBs6YsRprGrmRTXAdGWQG4CfwhEAjhJGbbMIATw
yB/GPoAr/uuufP1RM+WvM2cPqj772nwYGaayJf6dwKcuuOE3PxXwKhCC1MGHUkdFFDQkz4X3mXAm
azuFGdx63yGtfz++Hf55OR/++vo6K7k2DOPlkNFE5IAt8ELIzDsm5KW9HPIbiQS6BV4KWQUiCa06
P/f9UcnnZ0OOnsgjq77PwY/DOhGsdbB5H3mkCgkTmfI+sm8rIHUjxHzXR15JMC+pRqs55eQl5WQd
MZG2+jqjXSz2DXkM2ygvaVZLtaSsNs+BW3nz3NkVZ5R4STFb3+s7uBheY988fgiCmFF68wvYO76D
ZDNKbawDtl/v2aej9HAY3ER00V7gtQBfnjtXcxar/XPnxw7oPfN8lF6IA3Zg7wRRzCg9Eoeqi7jB
Fn8L/ET4QQ9WspnEdyA3Mo9YZpLf0HSn0mn1ffYVzDFPeGYSnwCdaZ7B/AO88IjnLPMGaCbxBdN5
ef/s91XvHQ5VBW+UBNXMmW8joo4yWddBUSfyg/FN0sJKbjmRH7DFek9oO1GeGEc0tlvgBXlgRmII
XfV9Ft4K8II8M4HojF/Bc/h/bI3fWp98UMWOREuGBMxbI1Wh+6PpGjqS6M/H0+l4670fBlnuUpMr
FniBzqqhJY9utw4inVVzPx7ltg6y3lHC/gU6w6kp9PnZ72tGb+kg0hnOLem8H5rubT8qnSA/veHj
1+OTvgniu2OK7RAvfybIb3dDA69732dfHh3zeGeC/HKp6vOvzYsgvv4lcaSI8HQQH1711LxdPvgn
fIRmxIYhD0z26XeWBw6aewA0/Lvl6JkITeiou07CSpBf4CbuBTDIj/CKSQJQQU6CGIis1gVeekEL
TBKECuILpvNERnIFz74AjkwShQriC6Zz6++3Lwg8gTnNxWk0T2Ded4KPi/gcepHpztvD/A8lD3oi
OgMu4LwH7TQTn81f55zQQHTeXMB5D9pxDnj+OudBj4wLnM/OfV0RIwMqcAbzjxMpqht2VIJMJzlG
tnk9Z3PKJif2Y+7E0GSL1zvGA5cNfuwk3YlSy/Z61bbbNsMVEHXs5j3jLsjWsg/r6EHNxqrvFnU5
WcmW+ch4JlrJFqdmjqrFmVuhHba2FiVKtjgVQydanDUXcOJYz2IVp3YFHNdGnF+g82pUXlVAis4N
L++xo9VjRpF5lAZEopwRsxG4ZBMjZROEgZgQMAkdcNO3HdF8ZxK6BidoHPmgHgNpYhoFNVEBv81g
LSgemk9jGP0a59Xd2se7jS8unbsVu2u4qvD1kQPEliwuUC0iMrjwVILTq/pfF16KsFo4eQYdcHbz
lnkoseI7EY796tgCYnMOhyPHuqkmWvG2nqFTTSyRjPSvH6fT/zns21wzq/h8Cz0MikmYsIrP9pjB
MV3j0ZKwik9VmcG5TBerxHQNzDXpXJLi82xmcMOkqljFJ8rM4LpsXlNn51CHeTY5obr1JfjHNBea
qp9VLoLh0wlG12lJsGxcPwqgmOvWkT9iugW2+u4Rl5hqMirmQcyKeTJVG//HyLAVM1VGw+TJWDHJ
x3OujBUTXcg+59XXmc37iXEmjO+IkMe3OC9lbEy2yVpY6W8vJT1MpiR86IeED+OldJNJF/DOQ5qX
8kXCJGyeT/iYBhmcSTeZFJOtYryUrTK5Jt2kdSPs0LnevnoYxIjNyEWc7CBGnKoSdvNQNmIHMeIz
cmU3dhAjVkExESM7iBG3VQMA3ds/iz9P1CJX8Bz+sBK7Hw/lDYnRdGpDFw/mUc53hLwWI8baMhFr
LQbctWMCzlqMN+uxiXcPa3Ap3Izh/scKPC1G67VhCnW0GKzXofn62AFnN+/Xbw319ToqmEC9gTkx
sbgYPB2PSzsprTlMjLWmnZhYPDB5ydrxtuIMbtapvY+bZ84eQmMrqt7Xuc0XM7sXi3FSVnQYmbzk
kYoNEn6jmAc6cYmcUi7jOKBmfDSLxUTKaWT0qpiCOqFSt8TONbNz1VgUqrNz7tueUelS/uk46HXu
bRss4pMtnOp4A4s1YTvmwOPrk9ng1GrGpTayT42DnXuxJjkeMRom99PIAYmxzR3VD/BS7uRItAut
4NnzB+H8QkRkfOj4WV3zRKTqNpc8ifYetlvqUPEkm3tTAx7W4IK1R3Zuwa+zmx+Jlj/4dRbcMK+D
k2iqVT17Hk2RSbZUA1dd2Hvh69r0apDctrH1u1aPsINYJTA0MtY9gAtVAihkFfV1BtwHRruoQVIv
HhWE6YILefqa0U5qkNy28cFhruW07mYsdQrItMiGOLO6l8WiZa9rYCptjRYZcTQMKxgtN0uYhP0L
vFTN3e68S2jZ6+K8RqNlr1mvz9+Gf/mSjHFgk+J4l88aOrane3nYD0pCj1JsqxpQ37HkRykw5zz3
TD9KsS3niCF+C7iQJDAycT09ihkOXAWaHqW4nh/kr3Obfxhg2IYD+Bq0cSJa0SZgPlVzHBnCovK+
SWeTtUTgxSn1HI4cEPVyWFXqsKZIgg8Ffqa3MD7A0zIwwZsFHqTp2Ps+u39f4GEnve+z8Fo+P7v/
sXw/SjPd+z6LP7vAgzReyzDL5+YG2xkutHy8V0jbbeujxSR7MxHjMBd4Icnecn26tBaT7K0W4IUk
ezM2RQq2933u/BaLDB4fObQWiyRMaJL8Te/7LP7UGv8tlfDKKhjGb+2FsbstFwaRSqznSjEG+ZYn
BktmEG/ZWqYjmhlkKh1rLK+zcgf5lkLTBT309s+e33GlKINcylO4rNPoSxFpT333Rs57MobJO1Jy
3pMOTN6RkvOejOIqQuS8ITMwmfJKzlvSU1Nhpnr7Zytamkz9zvmFvC099nLc0MzgH7bHQAzhTa/i
/MO2c7TWUUQ/uU4HBzH3yJXsoR6KxcQnV9qgxMCd0z1wJvvIeSb7SImpT25kGtAoMffJD0wLGCUm
PznH9K9RYsaZm9btjWqV4fpmaCfa6SRLG0fa91xIJz7/c+W0xkkukjeMl2Gc5ON4yyReGCc6KSOT
u2CcmHyASeDmIcXWOMnD8n7tIrUigDcpHOf/2m6ePOWjWLFpRGCiSdpKwajABeK0lYJRwTPPNNpK
gbjgmJYV2kphwGCZZiHait0+RgFcyN7Q68eWNsDCu7J+JCafJgLjnWj30DK5UJit6MeS80ySkjSk
kqcneSZI18l/T4DlTX9/vdUxHfuLmCylA8mz9hcx3UjTMRX7i5jnpScy18n+IncUUvy3hY5AA9kx
gh8AmnbuyZ4L9he5mZFen7u6ymytzNqruUjZNKFTk62ckm1HMiXbysnkdiKTya2cku3oxnhWTqq2
gd85b9Q4Q1olVk6Dd7pnlBRuZo11Szoblm0nHzSa6ZhZlXe89qgaEuI8iBRC1qR4tGwDygStyCas
lm0hmaCHdZusBiGOQwjWe/hVD0dTIcDwSUlRCuhc59hLTYRBCvSoOQDPZY5jJ1HGlB6cmlkgR4V6
70yGz2pK358YcHb0Sfq6KuBrRlxOz37dltPPEsj4DrjlwPHsa/8CwC3JyAl84DcPuOe2n1s/j50m
psv32bvX5fTRA3drcOHqtG1OHzrbN+z27cDTnuKxr8fm9EMHnCOdnM03drrPLshj7x4pb628FnD2
7EEkXG7zzvGUB4NMuAXsWH//EXmC1DEDDw4zWNjzI+0NPdJVPOnqIIoNDtwIfA86lJU7KLbWLvdy
+yz2J+b29Qap6zVP+8B77A6UKPctv4DhCZieF5YucGq+bzr0z4pOlHxr8w0RyKpNJRIQ932jme8v
w9ZY+kfhufbHDT/eMH3fiOzDbV97UXw4/vYdL/1A/rDn9w3+x875OfIxjmdgy4M701xfn/9Z+fcg
f4oBpysDTjNzRsETcGSXaM2MGQVQv3Yili2Mn/7y8fZ0uC5TmsZsU6ZfZxch/edf/vzHv3z6X7/7
03/8oWx4zINemYMPFN+M3KDXDIv63jb2RoblCH4wDb88wHLUPhRmXTmvI4zWzej4y/4vDSL4mbsu
tC3fxmZDtCeVYPEluB1QkmE1BxuIEcMZ1jKw07BuM1cBsy5cnnPXqTAHSMbXyZNYO29MADlykI6Y
1AaQnoO0RMgKIAMH2eu5mLGrC+f87n93OEdTlx4XChNGb9pBVRnUMqCKCHiN3ERVAA2BiPpkUM2A
PrRXqVChFlQ8+u2jYH2D76xw/MkDUbBuX4I2RO+kUXBcAHqY6s6wLXHIEQeliBl2IzfdOYHaZtL1
2Dk0s22l1yir7sMVKfaH/+d3//7H//WHT3/8y7/+8S9//Pf/09yLY4ll0gydOZ5EqUS3DMrQ2YTv
R7FUSK9BOZ6ya55q+FxzfD4QfWVGRpuMOG1Vm57wZsPhedDqShLmg/rlAv/tr3//I32BniewkZhI
lEEtAxoa6prWoBxhOqJdfAblGNk/hNAKTnR1cM6OSlrREA1YMyyrjV2TcTKuYVltbPnvcto4YNPT
6vEQYFV1dkXvIYmzQIRAMygnCR8el8oOXLWD9Io6cDwciCfkAjzSbwsD1Uy6ADsGWJEKLgNz8mNq
XlTcI7Blvjw0Zw6PwJyoHYlH8wLsmS/r9ZnLtVm09C2atvSA0fTPouYZuHiJGohwQ4anT5stcEu4
y9X3WQs+yPDs9z0PT5N3hqfc3er7LPxIBGoreNb7mZrvj7Wis6yHqS2RAjMmJ8XRoGZonFO3BvUM
qCKGJ2VQ5nlLB8IlzqCWAZ2aFk8PoIw3rUfiUW1k/DEAdERbqfzNkUGS7nwz08Sjfd0d0jbmdypG
0Hji4TaCusev3C//evx+eGm+AFYjwyIjzrDvvA6WFQy/QhiotsV5BYbJE7wmBoo3Z+Cc3GkkjcLq
DOwKU+els1nBSqd4SMmsLkz3LmxVNz2WPAZKpKdYAB1HKHkQDLwfZHjtGXg1kZZT2T9ntU2eaJlf
7X/kvk9l0yO84fKEtefPb2mRnrLZXWP9jb3zc/sfBtJqLfvn8qw15nmvfYVyfxMHr0X8qcDhXxFD
y6v9D9z3DVGNUMFzeeLayfTP3f+A99++f1Tf5+5fj2vr/xH/3PeVb2KIvkd/bDWFWee5P56fo5/B
NtUc3f1z968Vz79G4h9FVNNU/MN5jJNt7l/3zs/Rv9L8/Rv++14Hnv8Vf39uoibXV/fPViNZHl5J
8teI8ltx/DvI/Ks4+h1k/uXx53j5qST6UUSdS3X/rPyZiDqfin84/Ckjyt+B479B8ee3vP3gjef5
zwr0bzRRp1Sdn/u+CuL5NYd/5Rr517U/OP4ftCh/NHd+RY3Mqb7PvuWMsv3F2Q96kO0nTv4O7ftX
T38Mntv/xJ/fSPJrEO0HxdmfwyTjjzu/Gqlqwuz5cU75Q1VMjnuaT//6cX6+Hy/nT78/vB7Px/hr
tuxNqidgaNrgGKXao4wPPf9yPezvs5eA6//16R+H5/tSRhCd4yj0mE4DHvvjNTe2gDq2z4Cv+qXU
/GZSnNTzwG7oNmnIwNMvSgAP3c6A1c7Zc/tmksTYQo9seweP7R0aNblkdjKg4zBSoLDricwQMaW/
FAnthV3rblOJ5dMcKHYxbPRKvqrAfxeHXjRG2fJdz1/UNHBHnrjz4rCPWhlX32WPPJHkxeYRArAd
G3yFDmmzGJu67UMqInEciQ3rlo0NdSoO1LMfdvypw0gytBalAbY86QHHM4/cxnV3MEyGFqQYdntp
rBYh0zl91wpUwn3X2oZAXbtpAdgjsmtXcyExnsCqOTz+UfrRBUiZJRWFrwgdhHt2Em1zG59GTuFY
Htg64bI4OWQ9J02EL/tAseQvYjMk742EMfayfLeVEZPZkik7kIaBAgXJSQLnuv2bMrCg2K2RJAGr
LwKLLUFXTY41KuZvBw5nhr1mJ2gcx5oGrB02kMJAbJblvSPtAiWaQs4Igpe1SAYWXxOZ72lKu0xa
bLNWmOOEpyD+nOaABbPCKY7ABOrEZs5di1m4ZtaQUsI9T7o7uS1/WrhnO3EcbQTx5zl0C6rdBk7F
KtaaYcWuQCPYgG4tPSVdMSrSLSJTMhNcO1vPPt4vKzYNB83ejyXN+8RL3GedbS53fFCMLEXzvqtg
cFb9LjvMJFgxq0GA+oGNuUNXPeV7Skb49GRJ3RqhB+7DE2X2SebmOExrXGdY+pMpetHPpTKsqQeQ
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
Y29tcG9zaXRpbmcvVVQFAAM5PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA/aiISQAAAAAA
AAAAAAAAABQAGAAAAAAAAAAQAO1ByAoCAGNvbXBvc2l0aW5nL3JlZ2lvbnMvVVQFAAMuPEpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/aiISdfSMa2sAAAAFAMAAEUAGAAAAAAAAQAAAKSBFgsC
AGNvbXBvc2l0aW5nL3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItY29tcG9zaXRp
bmctc3RkZXJyLnR4dFVUBQADLjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAWpiEm11oSk
vwAAAPIGAAA8ABgAAAAAAAEAAACkgUEMAgBjb21wb3NpdGluZy9zaG93LWNvbXBvc2l0ZWQtaWZy
YW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAUAAzk8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAD8qIhJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UF2DQIAY29tcG9zaXRpbmcvdmlk
ZW8vVVQFAAMrPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+6iISVeOzKewAAAA3gMAADAA
GAAAAAAAAQAAAKSBwg0CAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJvcmRlci1yYWRpdXMtc3Rk
ZXJyLnR4dFVUBQADKjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPyoiElkGaUDvwAAAPIG
AAAyABgAAAAAAAEAAACkgdwOAgBjb21wb3NpdGluZy92aWRlby92aWRlby1jbGlwLWNoYW5nZS1z
cmMtc3RkZXJyLnR4dFVUBQADKzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAACpiEkAAAAA
AAAAAAAAAAAHABgAAAAAAAAAEADtQQcQAgBjcnlwdG8vVVQFAAMwPEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAAKmISQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BSBACAGNyeXB0by9zdWJ0
bGUvVVQFAAMwPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAAKmISSXg0wgsAAAALAAAAD4A
GAAAAAAAAQAAAKSBkBACAGNyeXB0by9zdWJ0bGUvcnNhLWdlbmVyYXRlLWtleS1tYWxmb3JtZWQt
cGFyYW1ldGVycy1zdGRlcnIudHh0VVQFAAMwPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
AKmISTA7uLFLAAAAaAAAADwAGAAAAAAAAQAAAKSBNBECAGNyeXB0by9zdWJ0bGUvcnNhLWltcG9y
dC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMtc3RkZXJyLnR4dFVUBQADMDxKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAACpiEkAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQfURAgBjcnlwdG8v
d29ya2Vycy9VVAUAAzA8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAAqYhJAAAAAAAAAAAA
AAAAFgAYAAAAAAAAABAA7UE+EgIAY3J5cHRvL3dvcmtlcnMvc3VidGxlL1VUBQADMDxKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAgAAAACpiEkl4NMILAAAACwAAAAxABgAAAAAAAEAAACkgY4SAgBj
cnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLWdlbmVyYXRlLWtleS1zdGRlcnIudHh0VVQFAAMwPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA/KiISQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1B
JRMCAGNzczMvVVQFAAMsPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA/KiISQAAAAAAAAAA
AAAAAA0AGAAAAAAAAAAQAO1BZBMCAGNzczMvZmxleGJveC9VVAUAAyw8Slh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAD8qIhJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UGrEwIAY3NzMy9mbGV4
Ym94L2Nzc3dnL1VUBQADLDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPyoiEkAAAAAAAAA
AAAAAAAeABgAAAAAAAAAEADtQfgTAgBjc3MzL2ZsZXhib3gvY3Nzd2cvZmxleC1saW5lcy9VVAUA
Ayw8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD8qIhJraRE+6wAAAAUAwAATAAYAAAAAAAB
AAAApIFQFAIAY3NzMy9mbGV4Ym94L2Nzc3dnL2ZsZXgtbGluZXMvbXVsdGktbGluZS13cmFwLXJl
dmVyc2Utcm93LXJldmVyc2Utc3RkZXJyLnR4dFVUBQADLDxKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAAKpiEkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQYIVAgBkaXNwbGF5bGlzdHMvVVQF
AAM0PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAqmISaNX/ehQAAAAjgAAADIAGAAAAAAA
AQAAAKSByRUCAGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1zdGRlcnIu
dHh0VVQFAAM0PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAqmISfKWldVHAAAASQAAACkA
GAAAAAAAAQAAAKSBhRYCAGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1zdGRlcnIudHh0
VVQFAAM0PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUKqISSToaVGmCwAAl0QAAA0AGAAA
AAAAAQAAAKSBLxcCAGVycm9yX2xvZy50eHRVVAUAA6c+Slh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAcqYhJAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UEcIwIAZmFzdC9VVAUAA2g8Slh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAAPqYhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFbIwIA
ZmFzdC9jYW52YXMvVVQFAANOPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADqmISaEZZj2v
AAAA3gMAAEwAGAAAAAAAAQAAAKSBoSMCAGZhc3QvY2FudmFzL2NhbnZhcy1jc3Mtc2l6ZS1hZnRl
ci1oZWlnaHQtY2hhbmdlLXdpdGgtZGlzcGxheS1mbGV4LXN0ZGVyci50eHRVVAUAA0s8Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAPqYhJRUZEA4MAAAAYAQAAJgAYAAAAAAABAAAApIHWJAIA
ZmFzdC9jYW52YXMvY2FudmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAUAA048Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAAbqYhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UG5JQIAZmFzdC9p
bWFnZXMvVVQFAANlPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAGqmISVGnghgxAAAAMQAA
AC0AGAAAAAAAAQAAAKSB/yUCAGZhc3QvaW1hZ2VzL2xhcmdlLXNpemUtaW1hZ2UtY3Jhc2gtc3Rk
ZXJyLnR4dFVUBQADZDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABupiEkhj704MgAAADMA
AAAsABgAAAAAAAEAAACkgZcmAgBmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3Rk
ZXJyLnR4dFVUBQADZTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAB2piEkAAAAAAAAAAAAA
AAAJABgAAAAAAAAAEADtQS8nAgBmYXN0L3hzbC9VVAUAA2k8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAcqYhJcv1l8oUAAADpAAAAJQAYAAAAAAABAAAApIFyJwIAZmFzdC94c2wvdHJhbnNm
b3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQADaDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ABypiEnOCSgCjQAAAPAAAAAnABgAAAAAAAEAAACkgVYoAgBmYXN0L3hzbC94c2x0LWJhZC1pbXBv
cnQtdXJpLXN0ZGVyci50eHRVVAUAA2g8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcqYhJ
z49mDlAAAACgAAAAJAAYAAAAAAABAAAApIFEKQIAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1z
dGRlcnIudHh0VVQFAANoPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHamISYFKd61LAAAA
rAAAADQAGAAAAAAAAQAAAKSB8ikCAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50
LWNyYXNoLXN0ZGVyci50eHRVVAUAA2k8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRqohJ
9mUt58ABAAA8AwAAEQAYAAAAAAABAAAApIGrKgIAZnVsbF9yZXN1bHRzLmpzb25VVAUAA6o+Slh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAgqYhJAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UG2
LAIAaHR0cC9VVAUAA2w8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAArqYhJAAAAAAAAAAAA
AAAACwAYAAAAAAAAABAA7UH1LAIAaHR0cC90ZXN0cy9VVAUAA4E8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAhqYhJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UE6LQIAaHR0cC90ZXN0cy9h
cHBjYWNoZS9VVAUAA208Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgqYhJwk3IHXQAAACb
AAAAQwAYAAAAAAABAAAApIGILQIAaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2Utd2l0
aC1zbG93LW1haW4tcmVzb3VyY2UtYWN0dWFsLnR4dFVUBQADbDxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACCpiEmN7YjsQQEAAE4CAABBABgAAAAAAAEAAACkgXkuAgBodHRwL3Rlc3RzL2Fw
cGNhY2hlLzQwNC1yZXNvdXJjZS13aXRoLXNsb3ctbWFpbi1yZXNvdXJjZS1kaWZmLnR4dFVUBQAD
bDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACCpiEko0xV22AAAACcBAABFABgAAAAAAAEA
AACkgTUwAgBodHRwL3Rlc3RzL2FwcGNhY2hlLzQwNC1yZXNvdXJjZS13aXRoLXNsb3ctbWFpbi1y
ZXNvdXJjZS1leHBlY3RlZC50eHRVVAUAA2w8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAh
qYhJ+nB6lQoIAAC/GAAASQAYAAAAAAABAAAApIGMMQIAaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQt
cmVzb3VyY2Utd2l0aC1zbG93LW1haW4tcmVzb3VyY2UtcHJldHR5LWRpZmYuaHRtbFVUBQADbTxK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACWpiEkAAAAAAAAAAAAAAAARABgAAAAAAAAAEADt
QRk6AgBodHRwL3Rlc3RzL2NhY2hlL1VUBQADdTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACSpiEksGWtY7AAAAH0EAAAwABgAAAAAAAEAAACkgWQ6AgBodHRwL3Rlc3RzL2NhY2hlL21lbW9y
eS1jYWNoZS1wcnVuaW5nLXN0ZGVyci50eHRVVAUAA3Q8Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAlqYhJU+zZ0oIAAAC+AAAAPQAYAAAAAAABAAAApIG6OwIAaHR0cC90ZXN0cy9jYWNoZS9u
ZXR3b3JrLWVycm9yLWR1cmluZy1yZXZhbGlkYXRpb24tc3RkZXJyLnR4dFVUBQADdTxKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAACGpiEkAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQbM8AgBo
dHRwL3Rlc3RzL2NhbnZhcy9VVAUAA208Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAhqYhJ
AAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UH/PAIAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvVVQF
AANtPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIamISfzFMCDIAAAAMQIAADsAGAAAAAAA
AQAAAKSBUT0CAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25mb3JtYW5j
ZS1zdGRlcnIudHh0VVQFAANtPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAIamISQAAAAAA
AAAAAAAAABkAGAAAAAAAAAAQAO1Bjj4CAGh0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9VVAUAA208
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhqYhJLimRi4EAAAC+AAAARwAYAAAAAAABAAAA
pIHhPgIAaHR0cC90ZXN0cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdhdGUtYmFzaWMtMzAy
LXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAA208Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAi
qYhJAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHjPwIAaHR0cC90ZXN0cy9pbnNwZWN0b3IvVVQF
AANwPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAIqmISQAAAAAAAAAAAAAAAB0AGAAAAAAA
AAAQAO1BMkACAGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvVVQFAANwPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAIqmISROK0gDfBwAAZSsAADcAGAAAAAAAAQAAAKSBiUACAGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtdGltaW5nLXN0ZGVyci50eHRVVAUAA3A8
Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAxqYhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA
7UHZSAIAaHR0cC90ZXN0cy9tZWRpYS9VVAUAA408Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAkqYhJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UEkSQIAaHR0cC90ZXN0cy9tZWRpYS9jbGVh
cmtleS9VVAUAA3M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkqYhJ1hmKAlMBAAB6AwAA
OQAYAAAAAAABAAAApIF4SQIAaHR0cC90ZXN0cy9tZWRpYS9jbGVhcmtleS9jbGVhci1rZXktaGxz
LWFlczEyOC1zdGRlcnIudHh0VVQFAANzPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAKamI
SQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BPksCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL1VUBQAD
fTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACSpiEmEte/mvgEAAMoEAABAABgAAAAAAAEA
AACkgY1LAgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYWNjZXNzaWJsaXR5LWRlc2NyaWJlcy12
aWRlby1zdGRlcnIudHh0VVQFAANzPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJKmISQr4
VUrSAQAAPgUAADoAGAAAAAAAAQAAAKSBxU0CAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRp
by10cmFja3MtaGFzLWF1ZGlvLXN0ZGVyci50eHRVVAUAA3Q8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAlqYhJhMIal9IBAADwBQAAQQAYAAAAAAABAAAApIELUAIAaHR0cC90ZXN0cy9tZWRp
YS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1sb2NhbGUtc2VsZWN0aW9uLXN0ZGVyci50eHRVVAUAA3U8
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlqYhJWHAdBMgBAAA+BQAAMAAYAAAAAAABAAAA
pIFYUgIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1zdGRlcnIudHh0VVQF
AAN2PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJqmISTJNC1ofAQAA1wMAACwAGAAAAAAA
AQAAAKSBilQCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1wcm9ncmVzcy1zdGRlcnIudHh0VVQF
AAN3PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJ6mIST7MEZgtAAAALgAAADoAGAAAAAAA
AQAAAKSBD1YCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFt
LWFjdHVhbC50eHRVVAUAA3o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnqYhJuN7YxysC
AABdBwAAOAAYAAAAAAABAAAApIGwVgIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJv
bHMtbGl2ZS1zdHJlYW0tZGlmZi50eHRVVAUAA3o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAnqYhJzuug8qcBAAALBgAAPAAYAAAAAAABAAAApIFNWQIAaHR0cC90ZXN0cy9tZWRpYS9obHMv
dmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tZXhwZWN0ZWQudHh0VVQFAAN6PEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAJ6mISdhy6hBxCQAA9S4AAEAAGAAAAAAAAQAAAKSBalsCAGh0dHAv
dGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFtLXByZXR0eS1kaWZmLmh0
bWxVVAUAA3o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnqYhJNmXwi4EAAAC+AAAAOgAY
AAAAAAABAAAApIFVZQIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1z
dHJlYW0tc3RkZXJyLnR4dFVUBQADejxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmpiEk+
zBGYLQAAAC4AAAA8ABgAAAAAAAEAAACkgUpmAgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1k
dXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWFjdHVhbC50eHRVVAUAA308Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAApqYhJplfZlzQBAADIAwAAOgAYAAAAAAABAAAApIHtZgIAaHR0cC90ZXN0cy9t
ZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0eS1kaWZmLnR4dFVUBQADfTxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmpiEmRn80frgAAAH4CAAA+ABgAAAAAAAEAAACkgZVo
AgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWV4cGVj
dGVkLnR4dFVUBQADfTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmpiEmFdEpgaAgAAJ4k
AABCABgAAAAAAAEAAACkgbtpAgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1h
Y2Nlc3NpYmlsaXR5LXByZXR0eS1kaWZmLmh0bWxVVAUAA308Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAjqYhJ4NfoZBQBAAC5AgAAMgAYAAAAAAABAAAApIGfcgIAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1kb2N1bWVudC1yZWZlcmVyLXN0ZGVyci50eHRVVAUAA3I8Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAkqYhJuG0d4S4BAAAuAwAAKgAYAAAAAAABAAAApIEfdAIAaHR0cC90ZXN0
cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAN0PEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAJqmISTNYWV/pAAAAvAMAADkAGAAAAAAAAQAAAKSBsXUCAGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUBQADdzxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACOpiEkAAAAAAAAAAAAAAAAeABgAAAAAAAAAEADtQQ13
AgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9VVAUAA3E8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAjqYhJnkuwG4sAAACbAAAAXAAYAAAAAAABAAAApIFldwIAaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS10aGVuLXNlZWstYmFjay13aXRoLXJl
bW90ZS1jb250cm9sLXN0ZGVyci50eHRVVAUAA3E8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAlqYhJAAAAAAAAAAAAAAAAJwAYAAAAAAAAABAA7UGGeAIAaHR0cC90ZXN0cy9tZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvVVQFAAN1PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAJamI
SQAAAAAAAAAAAAAAADkAGAAAAAAAAAAQAO1B53gCAGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL3NraXAtYmFjay1zdXBwb3J0L1VUBQADdTxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACWpiEnk01WJMgIAAJcJAABiABgAAAAAAAEAAACkgVp5AgBodHRwL3Rlc3RzL21l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9za2lwLWJhY2stc3VwcG9ydC9za2lwLWJhY2stc3Vw
cG9ydC1idXR0b24tY2xpY2stc3RkZXJyLnR4dFVUBQADdTxKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAACapiEkAAAAAAAAAAAAAAAA2ABgAAAAAAAAAEADtQSh8AgBodHRwL3Rlc3RzL21lZGlh
L21vZGVybi1tZWRpYS1jb250cm9scy9zdGF0dXMtc3VwcG9ydC9VVAUAA3g8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAlqYhJFvTJ0WEBAABVBQAAXgAYAAAAAAABAAAApIGYfAIAaHR0cC90
ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc3RhdHVzLXN1cHBvcnQvc3RhdHVzLXN1
cHBvcnQtbGl2ZS1icm9hZGNhc3Qtc3RkZXJyLnR4dFVUBQADdTxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACapiElNBIvuggAAAL4AAABXABgAAAAAAAEAAACkgZF+AgBodHRwL3Rlc3RzL21l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zdGF0dXMtc3VwcG9ydC9zdGF0dXMtc3VwcG9ydC1s
b2FkaW5nLXN0ZGVyci50eHRVVAUAA3g8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAqqYhJ
AqwHjO0AAABfAQAALQAYAAAAAAABAAAApIGkfwIAaHR0cC90ZXN0cy9tZWRpYS9wZGYtc2VydmVk
LWFzLXBkZi1zdGRlcnIudHh0VVQFAAN/PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALKmI
SQFDaxsHAQAAFwIAAC8AGAAAAAAAAQAAAKSB+IACAGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFm
dGVyLWRpYWxvZy1zdGRlcnIudHh0VVQFAAODPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
LamISWHSMnFHAQAAcQIAAC8AGAAAAAAAAQAAAKSBaIICAGh0dHAvdGVzdHMvbWVkaWEvdGV4dC1z
ZXJ2ZWQtYXMtdGV4dC1zdGRlcnIudHh0VVQFAAOFPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgALqmISTKe3nhrAQAAngYAACYAGAAAAAAAAQAAAKSBGIQCAGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tYXV0aC1zdGRlcnIudHh0VVQFAAOHPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALqmI
SZrrwq3cAAAATAIAAC0AGAAAAAAAAQAAAKSB44UCAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJy
b3ItYWJvcnQtc3RkZXJyLnR4dFVUBQADiDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC6p
iEkDhO1xEQEAADoCAAA2ABgAAAAAAAEAAACkgSaHAgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWRvZXMtbm90LWV4aXN0LXN0ZGVyci50eHRVVAUAA4g8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAuqYhJZUChYcEAAAAcAwAALAAYAAAAAAABAAAApIGniAIAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRVVAUAA4g8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAuqYhJB8y3Kt8AAABjAwAALwAYAAAAAAABAAAApIHOiQIAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1wbGF5LXByb2dyZXNzLXN0ZGVyci50eHRVVAUAA4g8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAwqYhJpkChSIQAAAC+AAAAPQAYAAAAAAABAAAApIEWiwIAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1wbGF5LXN0YWxsLWJlZm9yZS1tZXRhLWRhdGEtc3RkZXJyLnR4dFVUBQADjDxK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADCpiElHeYYPuQAAAI4BAAArABgAAAAAAAEAAACk
gRGMAgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC1zdGRlcnIudHh0VVQFAAOMPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMKmISYsNGSrpAAAASgUAACoAGAAAAAAAAQAAAKSB
L40CAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUBQADjDxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADGpiEmYIoFl3AAAAEwCAAArABgAAAAAAAEAAACkgXyO
AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIudHh0VVQFAAONPEpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQKmISQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BvY8C
AGh0dHAvdGVzdHMvbWlzYy9VVAUAA6c8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAArqYhJ
2bwQ68QAAAD+AAAAPwAYAAAAAAABAAAApIEHkAIAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFt
ZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1zdGRlcnIudHh0VVQFAAOCPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAK6mISc5kFc3EAAAA/gAAAFsAGAAAAAAAAQAAAKSBRJECAGh0dHAvdGVz
dHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utd2l0aC1nYy1hZnRl
ci12aWRlby1yZW1vdmFsLXN0ZGVyci50eHRVVAUAA4E8Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABAqYhJFTU1knoAAAC8AAAAKgAYAAAAAAABAAAApIGdkgIAaHR0cC90ZXN0cy9taXNjL3hz
bHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAOnPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAJKmISQAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1Be5MCAGh0dHAvdGVzdHMvbm90aWZpY2F0
aW9ucy9VVAUAA3M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkqYhJpcmF74EAAAC+AAAA
OAAYAAAAAAABAAAApIHOkwIAaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL2V2ZW50LWxpc3RlbmVy
LWNyYXNoLXN0ZGVyci50eHRVVAUAA3M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA4qYhJ
AAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHBlAIAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAA5w8
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAArqYhJNyyZgscAAADYAQAAVQAYAAAAAAABAAAA
pIEPlQIAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVv
LWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUBQADgjxKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACypiEmepJj54AAAAKUCAABIABgAAAAAAAEAAACkgWWWAgBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVy
ci50eHRVVAUAA4M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAtqYhJoubwIuAAAAClAgAA
RwAYAAAAAAABAAAApIHHlwIAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQt
cmVtb3RlLXZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAA4Y8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAyqYhJAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UEomQIAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQFAAOQPEpYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAJamISQAAAAAAAAAAAAAAAC4AGAAAAAAAAAAQAO1BjJkCAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9VVAUAA3U8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAlqYhJb5jl9tMAAABVBAAARwAYAAAAAAABAAAApIH0mQIAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2Jhc2UtdXJpLWFsbG93LXN0ZGVyci50
eHRVVAUAA3U8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlqYhJtl89B9UAAADzAQAASwAY
AAAAAAABAAAApIFImwIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
YXVkaW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAN2PEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAJamISbeNMofjAAAAPQIAAEwAGAAAAAAAAQAAAKSBopwCAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0
ZGVyci50eHRVVAUAA3U8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlqYhJCeZ+9qcAAACK
AQAAWAAYAAAAAAABAAAApIELngIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvYmxvYi11cmwtZG9lcy1ub3QtbWF0Y2gtc291cmNlLXNlbGYtc3RkZXJyLnR4dFVUBQAD
djxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACmpiEkAAAAAAAAAAAAAAABEABgAAAAAAAAA
EADtQUSfAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRl
LWluc2VjdXJlLXJlcXVlc3RzL1VUBQADfTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmp
iElhT4E48QAAACYDAAB5ABgAAAAAAAEAAACkgcKfAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1
cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQFAAN9PEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAKqmISQAAAAAAAAAAAAAAAD0AGAAAAAAAAAAQAO1BZqECAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9V
VAUAA388Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlqYhJP5+p1tQAAADzAQAAUwAYAAAA
AAABAAAApIHdoQIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNl
ckFnZW50U2hhZG93RE9NL2FsbG93LWF1ZGlvLXN0ZGVyci50eHRVVAUAA3Y8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAmqYhJxUmh/7kAAACOAQAAUwAYAAAAAAABAAAApIE+owIAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2Fs
bG93LXZpZGVvLXN0ZGVyci50eHRVVAUAA3c8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAq
qYhJcJUE8IEAAAC+AAAAawAYAAAAAAABAAAApIGEpAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2RlZmF1bHQtc3JjLW9iamVjdC1k
YXRhLXVybC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA388Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAyqYhJJ/iTwN0AAABMAgAASwAYAAAAAAABAAAApIGqpQIAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0
VVQFAAOPPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMamISWz87Je6AAAAjgEAAEwAGAAA
AAAAAQAAAKSBDKcCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Zp
ZGVvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUAA448Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAyqYhJJ/iTwN0AAABMAgAAZgAYAAAAAAABAAAApIFMqAIAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1hbGxvd2Vk
LWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQFAAOPPEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAMqmISYsjJWSCAAAAvgAAAFkAGAAAAAAAAQAAAKSByakCAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1i
bG9ja3MtZXZhbC1zdGRlcnIudHh0VVQFAAOPPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
MqmISWOqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSB3qoCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA5A8Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAyqYhJY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIHaqwIAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnkt
c3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQADkDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AC2piElUe9BnggAAABcBAAA1ABgAAAAAAAEAAACkgeisAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
cnMtcG9zdC1yZWRpcmVjdC0zMDEtc3RkZXJyLnR4dFVUBQADhjxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIADKpiEmXs2CsugAAAI4BAAA9ABgAAAAAAAEAAACkgdmtAgBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQFAAOQPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMqmIST+K4J2CAAAAvgAAADoAGAAAAAAAAQAAAKSB
Cq8CAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3JjLWZyb20tcmVtb3RlLXN0ZGVy
ci50eHRVVAUAA5A8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAqqYhJAAAAAAAAAAAAAAAA
IQAYAAAAAAAAABAA7UEAsAIAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvVVQFAAN/
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKqmISVqNfW32AAAAfQQAAE4AGAAAAAAAAQAA
AKSBW7ACAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZp
ZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUBQADfzxKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACqpiEl/W41cgQAAAL4AAABCABgAAAAAAAEAAACkgdmxAgBodHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1jc3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAUAA388
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA2qYhJIErLlOEAAACMBAAAOQAYAAAAAAABAAAA
pIHWsgIAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy1zdGRl
cnIudHh0VVQFAAOYPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAN6mISfY9Dg8SAQAA5QEA
AD8AGAAAAAAAAQAAAKSBKrQCAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tcG9zdGVyLWNyb3Nz
LW9yaWdpbi1jcmFzaDItc3RkZXJyLnR4dFVUBQADmTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADipiElgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgbW1AgBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAUAA5w8
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABMqohJWwRYDqIFAABNEAAACgAYAAAAAAABAAAA
pIHFtgIAaHR0cGQuY29uZlVUBQADnz5KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAADmpiEkA
AAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQau8AgBpbXBvcnRlZC9VVAUAA508Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAAxqYhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UHuvAIAaW1wb3J0
ZWQvbW96aWxsYS9VVAUAA408Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAxqYhJAAAAAAAA
AAAAAAAAFQAYAAAAAAAAABAA7UE5vQIAaW1wb3J0ZWQvbW96aWxsYS9zdmcvVVQFAAONPEpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAMamISQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BiL0C
AGltcG9ydGVkL21vemlsbGEvc3ZnL2ltYWdlL1VUBQADjTxKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIADGpiEk9qItaHQEAALAHAAA2ABgAAAAAAAEAAACkgd29AgBpbXBvcnRlZC9tb3ppbGxh
L3N2Zy9pbWFnZS9pbWFnZS1vcGFjaXR5LTAxLXN0ZGVyci50eHRVVAUAA408Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAA9qYhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UFqvwIAaW1wb3J0
ZWQvdzNjL1VUBQADpTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAADmpiEkAAAAAAAAAAAAA
AAAaABgAAAAAAAAAEADtQbG/AgBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL1VUBQADnTxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAD2piEkAAAAAAAAAAAAAAAAmABgAAAAAAAAAEADtQQXA
AgBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L1VUBQADpTxKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADmpiEmPNBpwRAAAAKAJAABHABgAAAAAAAEAAACkgWXAAgBpbXBv
cnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBLU9BRVAt
c3RkZXJyLnR4dFVUBQADnTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD2piElUAsmyNgAA
AMACAABQABgAAAAAAAEAAACkgSrBAgBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRl
S2V5L3Rlc3RfZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYxXzUtc3RkZXJyLnR4dFVUBQADpTxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEypiEkAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQerB
AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUBQADvzxKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAEKpiEkAAAAAAAAAAAAAAAAlABgAAAAAAAAAEADtQUTCAgBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvVVQFAAOsPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAPamISQAAAAAAAAAAAAAAACkAGAAAAAAAAAAQAO1Bo8ICAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vVVQFAAOlPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAPamISRb2R6rBAAAATgIAAEcAGAAAAAAAAQAAAKSBBsMCAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9kb20vcmVmbGVjdGlvbi1lbWJlZGRlZC1zdGRlcnIudHh0VVQFAAOl
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQqmISQAAAAAAAAAAAAAAAC8AGAAAAAAAAAAQ
AO1BSMQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvVVQF
AAOsPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAARKmISQAAAAAAAAAAAAAAAEAAGAAAAAAA
AAAQAO1BscQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9VVAUAA688Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABKqYhJ
AAAAAAAAAAAAAAAATwAYAAAAAAAAABAA7UErxQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL1VUBQAD
uzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEKpiEkSgHFq4QAAAD4FAABnABgAAAAAAAEA
AACkgbTFAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0VVQF
AAOsPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQqmISX4bdnzoAAAAmAQAAHIAGAAAAAAA
AQAAAKSBNscCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5X25vYXV0b3BsYXkt
c3RkZXJyLnR4dFVUBQADrDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEOpiEkicGQn7QAA
APwFAABuABgAAAAAAAEAAACkgcrIAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxh
eXRocm91Z2gtc3RkZXJyLnR4dFVUBQADrTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEOp
iEkypQBz5gAAAJgEAAB5ABgAAAAAAAEAAACkgV/KAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOtPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAQ6mISbIirbboAAAA/AUAAGoAGAAAAAAAAQAAAKSB+MsCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhLXN0ZGVyci50eHRVVAUAA608Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABDqYhJw+WnkugAAACYBAAAdQAYAAAAAAABAAAApIGEzQIA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQFAAOuPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQ6mISQ0+KHnnAAAAmAQAAG4A
GAAAAAAAAQAAAKSBG88CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0
YS1zdGRlcnIudHh0VVQFAAOuPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARKmISSSyzo7r
AAAAmAQAAHkAGAAAAAAAAQAAAKSBqtACAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fk
ZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA688Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABEqYhJJ7XgyeYAAACYBAAAaQAYAAAAAAABAAAApIFI0gIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydC1zdGRlcnIudHh0VVQFAAOvPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgARKmISSe14MnmAAAAmAQAAHQAGAAAAAAAAQAAAKSB0dMCAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOv
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARKmISWzFqxntAAAA/AUAAHwAGAAAAAAAAQAA
AKSBZdUCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2NhbnBsYXl0
aHJvdWdoLXN0ZGVyci50eHRVVAUAA7A8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEqYhJ
gFDk3OsAAAD8BQAAdQAYAAAAAAABAAAApIEI1wIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X29yZGVyX2NhbnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQFAAOwPEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgARamISancAivwAAAA/AUAAH8AGAAAAAAAAQAAAKSBotgCAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9ldmVudF9vcmRlcl9sb2FkZWRtZXRhZGF0YV9sb2FkZWRkYXRhLXN0ZGVyci50
eHRVVAUAA7E8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABFqYhJobl07OgAAAD8BQAAeAAY
AAAAAAABAAAApIFL2gIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRzdGFy
dF9wcm9ncmVzcy1zdGRlcnIudHh0VVQFAAOxPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
RamISWqCMdPwAAAA/AUAAGUAGAAAAAAAAQAAAKSB5dsCAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9wYXVzZS1zdGRlcnIudHh0VVQFAAOyPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
RamISS4JcrbmAAAAmAQAAHAAGAAAAAAAAQAAAKSBdN0CAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9wYXVzZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA7I8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABFqYhJLxfYf+YAAAD8BQAAZAAYAAAAAAABAAAApIEE3wIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUBQADsjxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEapiEmXSZWp5gAAAJgEAABvABgAAAAAAAEAAACkgYjgAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA7M8Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABGqYhJPIlGsucAAAD8BQAAZwAYAAAAAAABAAAApIEX4gIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADszxKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEapiEmINwk+7QAAAKMFAAByABgAAAAAAAEAAACkgZ/jAgBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRV
VAUAA7Q8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABGqYhJSC2UP+cAAAD8BQAAaAAYAAAA
AAABAAAApIE45QIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzLXN0ZGVyci50
eHRVVAUAA7Q8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABHqYhJEZJavOYAAACYBAAAcwAY
AAAAAAABAAAApIHB5gIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzX25vYXV0
b3BsYXktc3RkZXJyLnR4dFVUBQADtTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEepiElb
swry6AAAAPwFAABqABgAAAAAAAEAAACkgVToAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
dGltZXVwZGF0ZS1zdGRlcnIudHh0VVQFAAO1PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
R6mISQNP2zXrAAAA/AUAAHUAGAAAAAAAAQAAAKSB4OkCAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF90aW1ldXBkYXRlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADtjxKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEepiElCTrqDggAAAL4AAABsABgAAAAAAAEAAACkgXrrAgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAUAA7Y8Slh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABCqYhJAAAAAAAAAAAAAAAAWgAYAAAAAAAAABAA7UGi7AIA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQFAAOsPEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAQqmISQAAAAAAAAAAAAAAAGQAGAAAAAAAAAAQAO1BNu0CAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAUAA6w8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABCqYhJF2N0y7gAAACOAQAAeQAYAAAAAAABAAAApIHU7QIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUBQAD
rDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEKpiEm6AaG9ggAAAL4AAAB1ABgAAAAAAAEA
AACkgT/vAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWRkQ3Vl
LXN0ZGVyci50eHRVVAUAA6w8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABIqYhJ4qNO5+AA
AADaAwAAdwAYAAAAAAABAAAApIFw8AIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0
ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA7c8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABIqYhJa8JcdIIAAAC+AAAAbgAYAAAAAAABAAAApIEB8gIAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL25ldHdvcmtTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUAA7c8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABIqYhJH0gNSeEAAAA+BQAAcgAYAAAAAAABAAAApIEr8wIAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQFAAO3
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASKmISW+kC6jmAAAAmAQAAHIAGAAAAAAAAQAA
AKSBuPQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3Rk
ZXJyLnR4dFVUBQADtzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEOpiEkAAAAAAAAAAAAA
AABqABgAAAAAAAAAEADtQUr2AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVk
aWEtcmVzb3VyY2UvVVQFAAOuPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQ6mISVJbmq64
AAAAjgEAAJEAGAAAAAAAAQAAAKSB7vYCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRo
ZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXRvLW90aGVyLWRvY3VtZW50LXN0ZGVyci50eHRV
VAUAA648Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABDqYhJ8E9B59wAAABMAgAAjwAYAAAA
AAABAAAApIFx+AIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291
cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA648Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABDqYhJnl1J/dwAAAD+AgAAjwAYAAAAAAABAAAApIEW+gIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92
ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA648Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABDqYhJ5XnSoIIAAAAXAQAAgQAYAAAAAAABAAAApIG7+wIAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BsYXliYWNrUmF0ZS1zdGRlcnIudHh0VVQF
AAOuPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASKmISbaAKlmFAAAAvgAAAHgAGAAAAAAA
AQAAAKSB+PwCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wcmVsb2FkX3JlZmxlY3RzX25vbmVfYXV0
b3BsYXktc3RkZXJyLnR4dFVUBQADuDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEipiEkd
cQ3C4gAAAD4FAABzABgAAAAAAAEAAACkgS/+AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlT
dGF0ZV9kdXJpbmdfY2FucGxheS1zdGRlcnIudHh0VVQFAAO4PEpYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgASKmISYJxVV/rAAAA/AUAAHoAGAAAAAAAAQAAAKSBvv8CAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAO4
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASamISZXHknLnAAAA/AUAAHYAGAAAAAAAAQAA
AKSBXQEDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRh
LXN0ZGVyci50eHRVVAUAA7k8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABJqYhJerTrEuYA
AACYBAAAegAYAAAAAAABAAAApIH0AgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVf
ZHVyaW5nX2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA7k8Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABJqYhJcgEc0uwAAAD8BQAAcwAYAAAAAAABAAAApIGOBAMAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUBQADujxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEmpiEkoCjI4gQAAAL4AAABsABgAAAAAAAEAAACkgScG
AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUA
A7o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABJqYhJy4nkNNgAAADCAgAAhAAYAAAAAAAB
AAAApIFOBwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3NyY19yZWZsZWN0c19hdHRyaWJ1dGVfbm90
X3NvdXJjZV9lbGVtZW50cy1zdGRlcnIudHh0VVQFAAO6PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAQ6mISQAAAAAAAAAAAAAAAFUAGAAAAAAAAAAQAO1B5AgDAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy90cmFjay9VVAUAA648Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABDqYhJAAAAAAAA
AAAAAAAAYwAYAAAAAAAAABAA7UFzCQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNr
LWVsZW1lbnQvVVQFAAOuPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQ6mISb5zkmWhAAAA
NQEAAIIAGAAAAAAAAQAAAKSBEAoDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1l
bGVtZW50L3RyYWNrLWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50eHRVVAUAA648Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABDqYhJAAAAAAAAAAAAAAAAXgAYAAAAAAAAABAA7UFtCwMAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3VzZXItaW50ZXJmYWNlL1VUBQADrjxKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEOpiEnPQeCYggAAABcBAABuABgAAAAAAAEAAACkgQUMAwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvdXNlci1pbnRlcmZhY2UvbXV0ZWQtc3RkZXJyLnR4dFVUBQADrjxKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAEqpiElGD27+vAAAAOcBAABjABgAAAAAAAEAAACkgS8NAwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fMDA4LXN0ZGVyci50eHRVVAUAA7s8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABKqYhJAYbUz4EAAAC+AAAAbAAYAAAAAAABAAAApIGIDgMAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3ZpZGVvX3ZvbHVtZV9jaGVjay1zdGRlcnIudHh0VVQFAAO7PEpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAARKmISQAAAAAAAAAAAAAAAFIAGAAAAAAAAAAQAO1Brw8D
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAUAA688Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABEqYhJ2qBkUd0AAADQAgAAbgAYAAAAAAABAAAApIE7EAMAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1l
bGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAUAA688Slh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAABVqYhJAAAAAAAAAAAAAAAALQAYAAAAAAAAABAA7UHAEQMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvVVQFAAPRPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgATKmISSAUom+4AAAAPQQAAFcAGAAAAAAAAQAAAKSBJxIDAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFjdGl2ZXNv
dXJjZWJ1ZmZlcnMtc3RkZXJyLnR4dFVUBQADvzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AEypiEnpucxviwAAAJsAAABQABgAAAAAAAEAAACkgXATAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hcHBlbmR3aW5kb3ctc3RkZXJyLnR4
dFVUBQADvzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEypiEkyG35TIQEAACkDAABMABgA
AAAAAAEAAACkgYUUAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1hdnRyYWNrcy1zdGRlcnIudHh0VVQFAAO/PEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgATKmISYF7RRqrAAAABwMAAEwAGAAAAAAAAQAAAKSBLBYDAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWJ1ZmZlcmVkLXN0
ZGVyci50eHRVVAUAA8A8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNqYhJvrMgIioBAADI
AwAAXwAYAAAAAAABAAAApIFdFwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYS1iaXRyYXRlLXN0ZGVyci50
eHRVVAUAA8I8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABPqYhJowo+tJUBAABjBAAAZgAY
AAAAAAABAAAApIEgGQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYXYtYXVkaW8tYml0cmF0ZS1zdGRlcnIu
dHh0VVQFAAPFPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUKmISeBh4TyXAQAAYwQAAGYA
GAAAAAAAAQAAAKSBVRsDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWF2LXZpZGVvLWJpdHJhdGUtc3RkZXJy
LnR4dFVUBQADxzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFGpiEn7ACaRPQEAAHoDAABf
ABgAAAAAAAEAAACkgYwdAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVU
BQADyTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFKpiEn8A2/SPQEAAHoDAABhABgAAAAA
AAEAAACkgWIfAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAAPM
PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU6mISV9F5KU9AQAAegMAAGEAGAAAAAAAAQAA
AKSBOiEDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtZnJhbWVzaXplLXN0ZGVyci50eHRVVAUAA848Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABTqYhJ60MJygcBAAAVAgAASgAYAAAAAAABAAAApIES
IwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtZGV0YWNoLXN0ZGVyci50eHRVVAUAA848Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABU
qYhJI8BiHBEBAACEAQAASAAYAAAAAAABAAAApIGdJAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS1zdGRlcnIudHh0VVQFAAPQPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU6mISVSPvkKLAAAAmwAAAFcAGAAAAAAAAQAAAKSB
MCYDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXBsYXktdGhlbi1zZWVrLWJhY2stc3RkZXJyLnR4dFVUBQADzjxKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFSpiEnpuZ26mgAAAPQCAABLABgAAAAAAAEAAACkgUwnAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wcmVsb2FkLXN0
ZGVyci50eHRVVAUAA9A8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABUqYhJPr47cosAAACb
AAAAUgAYAAAAAAABAAAApIFrKAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVkdW5kYW50LXNlZWstc3RkZXJyLnR4dFVUBQAD0DxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFWpiElWmKCoNwEAAHQFAABKABgAAAAAAAEAAACkgYIp
AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQAD0TxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFWp
iEnt+YfamwAAADYBAABUABgAAAAAAAEAAACkgT0rAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS10aW1lc3RhbXAtb2Zmc2V0LXN0ZGVyci50
eHRVVAUAA9E8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrqYhJAAAAAAAAAAAAAAAACgAY
AAAAAAAAABAA7UFmLAMAaW5zcGVjdG9yL1VUBQAD+TxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAGupiEkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQaosAwBpbnNwZWN0b3IvY29kZW1pcnJv
ci9VVAUAA/k8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABQqohJUIcPwwlGAABYJAEAOwAY
AAAAAAABAAAApIH5LAMAaW5zcGVjdG9yL2NvZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLXJ1
bGVzLWNyYXNoLWxvZy50eHRVVAUAA6g+Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABRqYhJ
AAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UF3cwMAaW5zcGVjdG9yL2RlYnVnZ2VyL1VUBQADyjxK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFGpiEkZBml7CAYAAGAqAAA2ABgAAAAAAAEAAACk
gcRzAwBpbnNwZWN0b3IvZGVidWdnZXIvY29udGludWVVbnRpbE5leHRSdW5Mb29wLXN0ZGVyci50
eHRVVAUAA8o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACLqYhJAAAAAAAAAAAAAAAABgAY
AAAAAAAAABAA7UE8egMAbWVkaWEvVVQFAAM2PUpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
VamISUYmdlTmAAAAlgIAAB8AGAAAAAAAAQAAAKSBfHoDAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0
ZGVyci50eHRVVAUAA9E8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABYqYhJAAAAAAAAAAAA
AAAAEwAYAAAAAAAAABAA7UG7ewMAbWVkaWEvbWVkaWEtc291cmNlL1VUBQAD2DxKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAFWpiEm3EyWlLAEAAJABAAA+ABgAAAAAAAEAAACkgQh8AwBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFib3J0LXJlc2V0cy1wYXJzZXItc3RkZXJyLnR4
dFVUBQAD0jxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFapiEkCEhKviwAAAJsAAAA3ABgA
AAAAAAEAAACkgax9AwBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXJlbW92ZS1jcmFz
aC1zdGRlcnIudHh0VVQFAAPUPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVqmISchQ0aOL
AAAAmwAAADEAGAAAAAAAAQAAAKSBqH4DAG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
cmVzaXplLXN0ZGVyci50eHRVVAUAA9Q8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABXqYhJ
FTOLHi0BAACQAQAAPAAYAAAAAAABAAAApIGefwMAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1zZWVrLWRldGFjaC1jcmFzaC1zdGRlcnIudHh0VVQFAAPVPEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAWKmISQrxpFOLAAAAmwAAAEgAGAAAAAAAAQAAAKSBQYEDAG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2Utc3RhbGxlZC1ob2xkcy1zbGVlcC1hc3NlcnRpb24tc3RkZXJy
LnR4dFVUBQAD2DxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmpiEl2RQehwAAAABwDAAAo
ABgAAAAAAAEAAACkgU6CAwBtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0
VVQFAAP2PEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaqmISbHAwzaLAAAAfAEAADAAGAAA
AAAAAQAAAKSBcIMDAG1lZGlhL3N2Zy1hcy1pbWFnZS13aXRoLW1lZGlhLWJsb2NrZWQtc3RkZXJy
LnR4dFVUBQAD9zxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGqpiEnPTinSkAAAAL0AAAAh
ABgAAAAAAAEAAACkgWWEAwBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0ZGVyci50eHRVVAUAA/c8
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8qYhJy8G+/oMAAADoAgAAOwAYAAAAAAABAAAA
pIFQhQMAbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1wYWdlLW11dGVkLXN0YXRlLXN0
ZGVyci50eHRVVAUAAxs9Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACEqYhJ8FmP28AAAADy
BgAAKAAYAAAAAAABAAAApIFIhgMAbWVkaWEvdmlkZW8tcG9zdGVyLWJhY2tncm91bmQtc3RkZXJy
LnR4dFVUBQADJz1KWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIupiEkwziZluQAAAI4BAAAf
ABgAAAAAAAEAAACkgWqHAwBtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIudHh0VVQFAAM2PUpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAi6mISUKLd2aBAAAAFwEAACEAGAAAAAAAAQAAAKSB
fIgDAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADNj1KWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADepiEn8oQBTYwIAAKIVAAAaABgAAAAAAAEAAACkgViJAwBweXdlYnNv
Y2tldC53cy5sb2ctZXJyLnR4dFVUBQADmTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADep
iEmmTy30CgEAAI8CAAAaABgAAAAAAAEAAACkgQ+MAwBweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4
dFVUBQADmTxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPioiEkAAAAAAAAAAAAAAAAbABgA
AAAAAAAAAACkgW2NAwBweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAAyQ8Slh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAD4qIhJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIHCjQMAcHl3
ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAMkPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAUaqISUUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSBF44DAHJlc3VsdHMuaHRtbFVUBQADqj5K
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFCqiEkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADt
QS62AwByZXRyaWVzL1VUBQADpz5KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAE+qiEkAAAAA
AAAAAAAAAAANABgAAAAAAAAAEADtQXC2AwByZXRyaWVzL2h0dHAvVVQFAAOlPkpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAT6qISQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1Bt7YDAHJldHJp
ZXMvaHR0cC90ZXN0cy9VVAUAA6U+Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABPqohJAAAA
AAAAAAAAAAAAGQAYAAAAAAAAABAA7UEEtwMAcmV0cmllcy9odHRwL3Rlc3RzL21lZGlhL1VUBQAD
pT5KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFCqiEkAAAAAAAAAAAAAAAAdABgAAAAAAAAA
EADtQVe3AwByZXRyaWVzL2h0dHAvdGVzdHMvbWVkaWEvaGxzL1VUBQADpz5KWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFCqiEl6nUAyeAEAAHsGAABCABgAAAAAAAEAAACkga63AwByZXRyaWVz
L2h0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFtLXN0ZGVyci50
eHRVVAUAA6c+Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABPqohJXT9EGXcCAACwLwAARAAY
AAAAAAABAAAApIGiuQMAcmV0cmllcy9odHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlv
bi1hY2Nlc3NpYmlsaXR5LXN0ZGVyci50eHRVVAUAA6U+Slh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAABQqohJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGXvAMAcmV0cmllcy9pbnNwZWN0b3Iv
VVQFAAOnPkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAUKqISQAAAAAAAAAAAAAAAB0AGAAA
AAAAAAAQAO1B47wDAHJldHJpZXMvaW5zcGVjdG9yL2NvZGVtaXJyb3IvVVQFAAOnPkpYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAUKqISQa5GLyBAAAAvgAAAEAAGAAAAAAAAQAAAKSBOr0DAHJl
dHJpZXMvaW5zcGVjdG9yL2NvZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLXJ1bGVzLXN0ZGVy
ci50eHRVVAUAA6c+Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRqohJbOyR4nJzCAB/si4A
CgAYAAAAAAABAAAApIE1vgMAc3RhdHMuanNvblVUBQADqj5KWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIADeqiEkrLXLRJVoCADcYPgAZABgAAAAAAAEAAACkgesxDAB3cHR3a19wcm9jZXNzX2xv
Zy5vdXQudHh0VVQFAAN5PkpYdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAATARMBY4wAAGOMDgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>296640</attachid>
            <date>2016-12-08 22:12:10 -0800</date>
            <delta_ts>2016-12-09 14:56:22 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1218834</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
dyk9Z4Ms8C/6UD7JzBIYAMD94DO/ypc0CfpNmzQ9unwAUEsDBBQAAgAIAE2qiEnwMdoCqD4AAGHT
AAAhABwAV2ViS2l0VGVzdFJ1bm5lci03NDE5Ny1zYW1wbGUudHh0VVQJAAOiPkpYkT5KWHV4CwAB
BPUBAAAEFAAAALxb62/bxpb/rr+CnxZO05Hn/RC6KYZDTpu76TaN0/YCF4FBUZRNVKJUPdL4/vV7
htSDpGjHuQ3WCCKZnDnnd86cN2lbZYuHbbmNVvNomy3Xi7K6i34vpv9T7t4X2927fVUVm+hqXc4i
xYlRL6LiY7F5iAiOluViUW6LfFXNtqO3m1VebLeT6PhzQeNf9f4Po7fZ7v68DH6uf1st9stie51k
u+w6/f3mutl7+Ij35WJ2/a5YFNm2uO6THb1ZZbPIzmabI3f8ieC5NgxjPHo9K6pdOS+LzWQY1ei3
YrMtV9UZEB651ayI3j+si+PFf2qJJAfgG6AWnSV9+7C7X1UgGGWYfxiNAH9x/b5cnjZSTCQiFGEd
UTIheoLNWEgewQUA9/NN1OX+U5ZHcPGfoNwx/BPRFeGeGGxejN4V69Vm11qvRvZ4cu9Xq0WgcL3f
bq6nZXVdn2MxQvAzGrlssYjuNtn6fjIKTIwW0fv7TZHNbinnTEsDF5Nyu852+f0v+2Jf3JJJlK+W
42wNVMbLrKzQrt4QRVfbYlNmixc1pZc1re0uA2DRVVlFi3I6e1jMxvBfOX0B90kU/Qt/UvM5nMeU
SJGbD4edDY5Au9naP5ewWyhZ76+PUxYZPm9utv/+/t1kEva4VbXbrBYLOObe70B7922U32cbEKna
7r755sXjDBnQPDGcSc3aDJ9gudlX4RJ4zk2xAe94s1qtr57gQxg78ckIFqTLp+E0vyt225Netw/b
XbG8zVu6xfykXUPJfCZp3qfTULq93W6KOTgreYIcbVOjmM3M9JLakV5tPdUqz6q8WPSJ/lFsqmLR
Bnq2AoHJlOHsw6AlKnxhibRticG8DnfRMquyOwgqQxZ5e1x1u7zb3J5M92Cgh3tnfIKe8RUZkVQW
XSv9AyJetQO3/TJBc8rosKBat9A2+G67bnTgsG5utliwM4upzCUrZl2sxy3PpXdwsSNBPZ+pvped
SE5Xs4dnICQdigaL7NKNPq7K2TcQOmaTyS2EG/jvwGO9WX16+O58Y7eHk/8uLI+uvnlxNV1CNFvl
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
LIOP0Pn7nBsWzEGWUFlEHMNkNQgNLb1XgViMJYo/7cIAKDfokuxcK3ubRy/QwXzELp5tbcUqOH8V
f+0SdfS0UVIcx1+IqijnEA2bjNgi3XkJJ7FRFFtNdfJvbrQjtz+N0GATTD2mXqzOW62l6l7NNJDp
s2hKSMJqblMmU8nHYSDFyV/IpGu0b7UBsR6BVyNO5wpbCfIyKpSjRZsSnpv7+ThsYt53G0pchI8m
ALS5iVSTHu6Y5wXzYmbJkXzTV9doKJ/CdwxfXndGoxR1IdpXrvyNPnAozADiE/AKhhlbiYN+qNSV
DIf9ytvXmS8DMMX62oxq12pRTrkvom72Rc0FduIZrjaFr44FRG13qM9rM0mj1J0t9j4V0+Nz9XJg
oTJ7xDge0/ZMX8ff5i/iSRGv44kTmrFkN1BJvYeIZ13mWeJGfGcyPdVmPRMNvOhp54vSXC52tvbN
Do1MFY6e0Tw6WGJkfStOD9ip7G0A3RSRCKoS1lvaaU+BFr+TQ7/xKt7pe+43YjCQwwRlhGsRyOa/
YnAln8P9HpXIhJxoBvofnkRL+P/Y+g9QSwMECgAAAAAA2KmISQAAAAAAAAAAAAAAABQAHABfd3B0
X2NlcnRzL2luZGV4LnR4dFVUCQADyD1KWPw6Slh1eAsAAQT1AQAABBQAAABQSwMECgACAAAAWqiI
SZhceX8VAAAAFQAAABkAHABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyVVQJAAP8OkpY/DpKWHV4
CwABBPUBAAAEFAAAAHVuaXF1ZV9zdWJqZWN0ID0geWVzClBLAwQKAAIAAABaqIhJmFx5fxUAAAAV
AAAAHQAcAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHIub2xkVVQJAAP7OkpY/DpKWHV4CwABBPUB
AAAEFAAAAHVuaXF1ZV9zdWJqZWN0ID0geWVzClBLAwQKAAIAAABaqIhJB58AyjcAAAA3AAAAGAAc
AF93cHRfY2VydHMvaW5kZXgudHh0Lm9sZFVUCQAD+zpKWPw6Slh1eAsAAQT1AQAABBQAAABWCTE3
MDEwODA1MDI1MVoJCTA2OTBCRgl1bmtub3duCS9DTj13ZWItcGxhdGZvcm0tdGVzdHMKUEsDBBQA
AgAIAFqoiEmKQZ6LBQUAAIsGAAAYABwAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQJAAP8OkpY
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
MrQyMLIyNdazMDBUSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tLmRCVCfkbGF
obmZZayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAF2oiEkAAAAAAAAA
AAAAAAASABwAYWNjZXNzaWJpbGl0eS9tYWMvVVQJAAMBO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACABdqIhJ4auj4WoAAABsAAAAYQAcAGFjY2Vzc2liaWxpdHkvbWFjL2NoZWNrYm94LXBv
c3RzLXZhbHVlLWNoYW5nZS1ub3RpZmljYXRpb24tYWZ0ZXItYWN0aXZhdGlvbi13aXRoLXNwYWNl
LXN0ZGVyci50eHRVVAkAAwE7SlgBO0pYdXgLAAEE9QEAAAQUAAAAMzIwNNM1NNI1sFAwMrQyMLIy
NdczNDZSSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tLmRiZGplZGxhaG5hWGs
gl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACABOqYhJIZkETT5CAAAyHgEA
OAAcAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC03MjQyMS1zYW1wbGUu
dHh0VVQJAAPDPEpYwzxKWHV4CwABBPUBAAAEFAAAAOxde2/bRrb/35+CF7hYOE0oz5MzI+Sm4LPN
vU7rjd1tgaIQ+BjZ3Eikqocb76e/Z0hKIiXKsRu7m25lB5YynDnv8ztnSEp0i3hyt8gXVjm2FvF0
NsmLaystp4N4NpvowY86+b98aV78sljqYjkI9K2elLMpvLdOZ3lmCcIIfmHB8PzOwsia5pNJvtBp
WWSLk4t5merFYmitfx5K+ueK7C8nF/HyZrsafs7+UU5WU704C+JlfBb+eHlWE2pevFU+yc7e64mO
F7oZG4zn8VT/Vs4/nP1Dzxd5WSzO3LOfLvxLPb/NQb6z+6T6OEvPmveLs3dx+v3l2QOVODkv48xy
s2y+NgH6iJGUTCGETt5mMCUf53o+/KRpThq5t5ZwEH1pncLfAR5g5+WLE7/MtHV1N9PrOT9Jx3YY
GHBu7Ll1xNdff239DJY9AQPqs6t8ullBEHZsTGwkLYKHSA2ZHCjhWDAA8n5/aXWlAFtYMPgTOH0A
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
zw7diP+FR28CrZ02K+oKj+R/VzgVbC68cJOL+qe0qul82we/9Uou417y6X1SseEODz0QuENadZdU
qhn2ofPKs05oZY2NjrDuIsN+ukfb9GWNMYRlSx45SLPX89v1UkULRiX7mXeZCGaiZkgvADtS7PFJ
li47cnocjYe4T59ps6H7RN7VpYc/UEsDBAoAAAAAAGeoiEkAAAAAAAAAAAAAAAAMABwAY29tcG9z
aXRpbmcvVVQJAAMRO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABiqIhJAAAAAAAAAAAA
AAAAFQAcAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUCQADCDtKWKc+Slh1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAYqiISZZ0bWRqAAAAbAAAAD0AHABjb21wb3NpdGluZy9vdmVyZmxvdy90aGVtZS1h
ZmZlY3RzLXZpc3VhbC1vdmVyZmxvdy1zdGRlcnIudHh0VVQJAAMIO0pYCDtKWHV4CwABBPUBAAAE
FAAAADMyMDTTNTTSNbBQMDK0MjC2MjDRM7I0UEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6Lqll
qTn5BblAdrS5kZmBpZWRsYWJmaVRrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwME
CgAAAAAAYaiISQAAAAAAAAAAAAAAABQAHABjb21wb3NpdGluZy9yZWdpb25zL1VUCQADBjtKWKc+
Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAYaiISfbK30nFAAAA8gYAAEUAHABjb21wb3NpdGlu
Zy9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVyLWNvbXBvc2l0aW5nLXN0ZGVyci50
eHRVVAkAAwY7SlgGO0pYdXgLAAEE9QEAAAQUAAAA7c8xb8IwFATgnV/hEQZix0kgRGKAqJUYKpAY
EYoezhMY3Dh6cZH87xvUoRkYWZC83U1330HGhUgKISORpEemHX5D5xtV7dHtyLZIzrNOnxswBmuG
RMtpLOd5xsa3T31eQ4fb0xWV+yCyVG2aOxhdg8N6wsZ62MAxvrc/pLAEdUFeWsIvrDX8p2mczWQk
U8H7aWedb7HjOwMeifdjf6laPf5FihndIJNykYwOA0QWEAHxOsR8iCht699CIfI8KIIiKJ4ofgFQ
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
vQh3WvbeHmk3evucTMNMBdg6a6ZPPBKyLjt7VIZmbrppxHNPw5D6ByKIYCDg+kQ9TxlR0H1agBh0
zmwK4qB+tpS65hznqOTYRNmZucm47eAdsx4IZIbvPnFMPUuETNK+Z25ZIc4bM2uo04kq0o5uttx3
8UKudopiRUbGZlaKZSNz5jfUQBjnUzpF/8B92QrXM8oika6JZ1g4d+tiuHD+mQD7V+fK4txGhYzz
yfT350qP57pzCq/rmdAnvZVxlaHTlvkKw4XLupryDYZWx9PStDd8zoqJ5kyre14lP1cONl2GbiRv
0jO/n/m3NVsHW6YXTyVo45TI5OPXvIcN1zuV591a1kqvdRvcrR1YRWsrrZUfrNxMZ6I4Gy43Lbx9
rGvZjf+sHz6UtXf/slVXyGPtM0TgzWV4lq4GByBt+hkLywKXKO5l1o1+gsHC+7DW+EssQkOwsbd3
UXMm/YpTelx6YhrQHDRM41Wd+QFomukKIYKDSvA9r4h6wDdTxlDgoHzxQll3Jvg5/6lA56igzYr8
mMaaPOPbDHnGfjcaTGg9y2YX4dsj2uG8VypfpnJtZTCFBw/roMRqvDu3aTrKK0olBSylheyigP4M
K3lu3esN9n6oyNpXxTin14vMwuiD/q9nKzMn60YLZhuhbmkzZ/vNJ26WnKfuv27Hr01eCC6ewNIf
l+JtHUOTq39Lzhhhljcm/7lgXZ1HwgJp++po+6py+/E94lS7zPnzojPh+fQcvnXroM3vpyUudvwJ
h4rWF08tExypxndXj1fJgGtuoFXnjWvt3daJFyn06D5IOm+KjNvWU7GfyA0JA3Z754ueMqSA/cfM
X8qZQ5m3Hra5sbL/i8vtxxoXXvvBnXbXx9wTVSup1++QXIkJ4cICUQsv+Wr6UyD1e1aqVMvDO0UH
MgitzRUeuyLDyTHth1KMoYilY79eoHwzseMOzB1GvnLY119//XZFO2koiRRu3/hi8B27xocrFuU1
xLHncprnGo3hm1Hqx773yv5FJ5d8uWMaiPkcu0zgmMl6WmuWFnW9KZF/PLbxPNZu+vDttn04rS0U
DkBaUSRvOd0/C6EoV5I86otouHd44eK97zJexkMWxVhDmUXheX1p1ymknvzqkBi4M3wmKI3MLbPx
9fy/F6Cldezr2X7iniuBpmwrgUN7Bv/EvS9Wo+ANSML5+IBkRlT8OuTrwm0sJayS0GPHeNH0Ccir
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
qvchzCaUWImdoJFjLm+7aguB+1HL+z3vl6mt/noSVOxW9s2T1YNDrUsw0qj1MakHDeEc4epDc6O0
RtqKeb/tS/xqeqCheKik9LZ6j0BPa9uPwoE328PpVz6Bcs57gR2FV8O3xbC6cLbbSre2h9grO3Zc
u1L+5vQ2qC8rFv7TIHH7V3DiAUdxsNh5z/ZmPC4xP77T2z8Ockos/CJHkcW2KDoLjD2ivWebVPsB
3QB0NfmvSH9F+ivSX5H+ivRXpL8i/RXpr0h/Rfor0l+R/or0V6S/Iv0V6a9If0X6K9Jfkf6K9Fek
vyL9fyzSxKYn+sAeNja2g89XPA3YKCPSO+QDtn/K+2U4W5T9yPZvz+/YMWEgvW1o7R07Tj3209tW
8+Tmileq2CbhwT1c8Vx9MttGlRPTHG3aPtFTYponzZHbvy0fzgbl+yvI/6MgO08OvZ6G39GvA3aU
7fpVQ+1SLfvH/wNQSwMEFAACAAgAYKiISaYJdQHBAAAA8gYAADIAHABjb21wb3NpdGluZy92aWRl
by92aWRlby1jbGlwLWNoYW5nZS1zcmMtc3RkZXJyLnR4dFVUCQADBDtKWAQ7Slh1eAsAAQT1AQAA
BBQAAADtz70KwjAUBeDdp8iog00bW20FBy0KDqLgKFKu6UWjsSm3Ucjb+zeoD+AgZDtnOufbiGgY
imGSBlkstkxZPEPjKlms0a7I1EjWsUbtK9AaS4ZEo24kBmnC2qeZ2k+gweXuiNJOiQwV8+oKWpVg
seywtvpsYBlfmwtJzEEekOeGcIGlgnfqRklfBCIO+X3aGutqbPhKg0Pi97FXKsaPf4FkWlXIhMh6
rY1HeMRvEL1PRG5q9xeKME2/FLFXeIVXPBU3UEsDBAoAAAAAAGSoiEkAAAAAAAAAAAAAAAAHABwA
Y3J5cHRvL1VUCQADDDtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAY6iISQAAAAAAAAAA
AAAAAA4AHABjcnlwdG8vc3VidGxlL1VUCQADCTtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAC
AAAAY6iISSXg0wgsAAAALAAAAD4AHABjcnlwdG8vc3VidGxlL3JzYS1nZW5lcmF0ZS1rZXktbWFs
Zm9ybWVkLXBhcmFtZXRlcnMtc3RkZXJyLnR4dFVUCQADCTtKWAk7Slh1eAsAAQT1AQAABBQAAABD
b3VsZCBub3QgZ2VuZXJhdGUgYSBrZXkgcGFpciwgc3RhdHVzIC00MzA0ClBLAwQUAAIACABjqIhJ
MDu4sUsAAABoAAAAPAAcAGNyeXB0by9zdWJ0bGUvcnNhLWltcG9ydC1rZXktbWFsZm9ybWVkLXBh
cmFtZXRlcnMtc3RkZXJyLnR4dFVUCQADCTtKWAk7Slh1eAsAAQT1AQAABBQAAABty7ENgDAMRNGe
KW4fGlawZEuxgDhyLkRsDw0d9X9/S7+Eht3ujuksMQhRdXpUOaBCgaShBtFHa5E0XdaP44w3skgF
Z6Cln9Z/hgdQSwMECgAAAAAAZKiISQAAAAAAAAAAAAAAAA8AHABjcnlwdG8vd29ya2Vycy9VVAkA
Aww7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGSoiEkAAAAAAAAAAAAAAAAWABwAY3J5
cHRvL3dvcmtlcnMvc3VidGxlL1VUCQADDDtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgACAAAA
ZKiISSXg0wgsAAAALAAAADEAHABjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLWdlbmVyYXRlLWtl
eS1zdGRlcnIudHh0VVQJAAMMO0pYDDtKWHV4CwABBPUBAAAEFAAAAENvdWxkIG5vdCBnZW5lcmF0
ZSBhIGtleSBwYWlyLCBzdGF0dXMgLTQzMDQKUEsDBAoAAAAAAGioiEkAAAAAAAAAAAAAAAAFABwA
Y3NzMy9VVAkAAxQ7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGGoiEkAAAAAAAAAAAAA
AAAQABwAY3NzMy9iYWNrZ3JvdW5kL1VUCQADBjtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAYaiIST+YsTu+AAAA8gYAADgAHABjc3MzL2JhY2tncm91bmQvYmFja2dyb3VuZC1yZXBlYXQt
cm91bmQtYXV0bzEtc3RkZXJyLnR4dFVUCQADBjtKWAY7Slh1eAsAAQT1AQAABBQAAADtz70KwjAU
BeDdp8hYB00b/2rBQYuCgyg4FinX9FKjsSm3UcjbW3HQwdVByHbOdM6XiSgJB0ko+kKIA1MWr9C4
SuZ7tDsyNZJ1rFFlBVpjwZBo1ovEJB6x4LJS5QIa3B7PKO2SyFC+ru6gVQEWiy4L1GcDy/je3Ehi
CvKEPDWEGywUvFMvGo3bI8OQt9PWWFdjw3caHBJvx14pnz//9SXTqkImxHTQyTzCI36DGH4iUlO7
v1CEcewVXuEVXxQPUEsDBAoAAAAAAGeoiEkAAAAAAAAAAAAAAAAQABwAY3NzMy9zZWxlY3RvcnMz
L1VUCQADEjtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAZaiISQAAAAAAAAAAAAAAABUA
HABjc3MzL3NlbGVjdG9yczMvaHRtbC9VVAkAAw07SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIAGWoiElMx28CagAAAGwAAAAuABwAY3NzMy9zZWxlY3RvcnMzL2h0bWwvY3NzMy1tb2RzZWwt
MjUtc3RkZXJyLnR4dFVUCQADDTtKWA07Slh1eAsAAQT1AQAABBQAAAAzMjA00zU00jWwUDAytDIw
tjKw1DM3M1NIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0uZGJmaGVkbGFkZGx
YayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAGeoiEkAAAAAAAAAAAAA
AAAUABwAY3NzMy9zZWxlY3RvcnMzL3htbC9VVAkAAxI7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAGeoiEk03ij5agAAAGwAAAAtABwAY3NzMy9zZWxlY3RvcnMzL3htbC9jc3MzLW1vZHNl
bC0yNS1zdGRlcnIudHh0VVQJAAMSO0pYEjtKWHV4CwABBPUBAAAEFAAAADMyMDTTNTTSNbBQMDK0
MjC2MjTRMzUxUkjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrS5kamRkZWRsYWx
iZFhrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAAaKiISQAAAAAAAAAA
AAAAAAwAHABjc3MzL3NoYXBlcy9VVAkAAxQ7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAA
AGioiEkAAAAAAAAAAAAAAAAaABwAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9VVAkAAxQ7Slin
PkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGioiEkAAAAAAAAAAAAAAAArABwAY3NzMy9zaGFw
ZXMvc2hhcGUtb3V0c2lkZS9zdXBwb3J0ZWQtc2hhcGVzL1VUCQADFDtKWKc+Slh1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAaKiISQAAAAAAAAAAAAAAADEAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRz
aWRlL3N1cHBvcnRlZC1zaGFwZXMvaW5zZXQvVVQJAAMUO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACABoqIhJiBIuXMYAAADyBgAAUwAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3Vw
cG9ydGVkLXNoYXBlcy9pbnNldC9zaGFwZS1vdXRzaWRlLWluc2V0LTAxMC1zdGRlcnIudHh0VVQJ
AAMUO0pYFDtKWHV4CwABBPUBAAAEFAAAAO3PvW7CMBQF4J2n8EgH4h9ICEgd2ggkhqqRMiIU3TpX
1K2JoxtTyW/fAAPpA3RA8nbOdM63V3It5muZJSJdHZjxeII+tLqu0JfkOiQfWG+OLViLDUOi55lU
yzxl0++tOb5Cj+8fX6j9hshRvWt/wJoGPDZPbGrGDTzjlTuTxgL0J/LCEb5hY+CeZjLNVKIWgg/T
3vnQYc9LCwGJD2O3VL9c/iWaWdMiU2o1n+wjIiL+BZGJMaJwXXgIhcjzPwoZFVERFVfFL1BLAwQK
AAAAAABpqIhJAAAAAAAAAAAAAAAADQAcAGRpc3BsYXlsaXN0cy9VVAkAAxY7SlinPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAGmoiEmjV/3oUAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVu
dC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAkAAxY7SlgWO0pYdXgLAAEE9QEAAAQU
AAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAo
Sk3OL0rJzEsHyoC1FetxuaMbVIxmEDGGAABQSwMEFAACAAgAaaiISfKWldVHAAAASQAAACkAHABk
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUCQADFjtKWBY7Slh1eAsA
AQT1AQAABBQAAABzL0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzK
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
z3MIjwk0jChx+eEkamH/4uUXUEsDBAoAAAAAAIGoiEkAAAAAAAAAAAAAAAAJABwAZmFzdC9jc3Mv
VVQJAANBO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACBqIhJ2wjTQjsAAAA/AAAAKQAc
AGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0VVQJAANBO0pYQTtKWHV4
CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz
89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAICoiEkAAAAAAAAAAAAAAAAJABwAZmFzdC9kb20vVVQJ
AAM/O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAB9qIhJAAAAAAAAAAAAAAAAGQAcAGZh
c3QvZG9tL0hUTUxGb3JtRWxlbWVudC9VVAkAAz07SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIAH2oiElu6DBraQAAAGwAAABHABwAZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L25hbWVkLXBy
b3BlcnR5LWdldHRlci1yYWRpb25vZGVsaXN0LXN0ZGVyci50eHRVVAkAAz07Slg9O0pYdXgLAAEE
9QEAAAQUAAAAMzIwNNM1NNI1sFAwMrQyMLYyNdczAXKS83P1EgsKclL1wlOTvDNLQJRzfl5Jal6J
nktqWWpOfkEukB1tbmRiYWhlZGxhZGJpGavgF+xUWlKSn+eYl5mbWJKZn1fsmpeYlJOaYuvnzwUA
UEsDBAoAAAAAAH2oiEkAAAAAAAAAAAAAAAAaABwAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9V
VAkAAz07SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAH2oiEnHlokeaQAAAGwAAAA4ABwA
ZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2VkLXN0ZGVyci50eHRV
VAkAAz07Slg9O0pYdXgLAAEE9QEAAAQUAAAAMzIwNNM1NNI1sFAwMrQyMLYyNdezAHKS83P1EgsK
clL1wlOTvDNLQJRzfl5Jal6JnktqWWpOfkEukB1tbmRiYmllZGxhZGBpEavgF+xUWlKSn+eYl5mb
WJKZn1fsmpeYlJOaYuvnzwUAUEsDBBQAAgAIAICoiEkVRORragAAAGwAAAA2ABwAZmFzdC9kb20v
Y2xvbmUtbm9kZS1mb3JtLWVsZW1lbnRzLXdpdGgtYXR0ci1zdGRlcnIudHh0VVQJAAM/O0pYPztK
WHV4CwABBPUBAAAEFAAAADMyMDTTNTTSNbBQMDK0MjC2MrXUMzOxUEjOz9VLLCjISdULT03yziwB
Uc75eSWpeSV6LqllqTn5BblAdrS5kYmRpZWRsYWhhZF5rIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJS
TmqKrZ8/FwBQSwMECgAAAAAAgaiISQAAAAAAAAAAAAAAAA0AHABmYXN0L2R5bmFtaWMvVVQJAANC
O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACBqIhJs7m2VWoAAABsAAAAMAAcAGZhc3Qv
ZHluYW1pYy9jaGVja2JveC1zZWxlY3Rpb24tY3Jhc2gtc3RkZXJyLnR4dFVUCQADQjtKWEI7Slh1
eAsAAQT1AQAABBQAAAAzMjA00zU00jWwUDAytDIwsTIw0jM1t1RIzs/VSywoyEnVC09N8s4sAVHO
+XklqXklei6pZak5+QW5QHa0uZGJsbmVkbGFoaWReayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5q
iq2fPxcAUEsDBAoAAAAAAI+oiEkAAAAAAAAAAAAAAAAMABwAZmFzdC9ldmVudHMvVVQJAANeO0pY
pz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACHqIhJWCpndTkAAABDAAAAMgAcAGZhc3QvZXZl
bnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1cy1jcmFzaC1zdGRlcnIudHh0VVQJAANOO0pYTjtKWHV4
CwABBPUBAAAEFAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUSSxQM
DQwM9AzAQMcUzuQCAFBLAwQUAAIACACHqIhJe5BAA2oAAABsAAAASQAcAGZhc3QvZXZlbnRzL2Rv
bWFjdGl2YXRlLXNldHMtdW5kZXJseWluZy1jbGljay1ldmVudC1hcy1oYW5kbGVkLXN0ZGVyci50
eHRVVAkAA047SlhOO0pYdXgLAAEE9QEAAAQUAAAAMzIwNNM1NNI1sFAwMrQyMLEyNNGzMDNXSM7P
1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tLmRiYmhlZGxhaGlmVGsgl+wU2lJSX6e
Y15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACACPqIhJMLVt4zkAAABDAAAAKwAcAGZhc3Qv
ZXZlbnRzL21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAkAA107SlhdO0pYdXgLAAEE
9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFMwNDPQM
wEBH1xDO5gIAUEsDBBQAAgAIAI+oiEnnrr1fOwAAAEMAAAAvABwAZmFzdC9ldmVudHMvbW91c2V1
cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA147SlheO0pYdXgLAAEE9QEAAAQUAAAA
y80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFEwMDAz0DMBAx9jCFMrk
AgBQSwMECgAAAAAAiKiISQAAAAAAAAAAAAAAAAsAHABmYXN0L2Zvcm1zL1VUCQADUDtKWKc+Slh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAAgqiISQAAAAAAAAAAAAAAABAAHABmYXN0L2Zvcm1zL2Zp
bGUvVVQJAANEO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACCqIhJhb3iYmkAAABsAAAA
MwAcAGZhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LXByZXNzZWQtc3RhdGUtc3RkZXJyLnR4dFVU
CQADRDtKWEQ7Slh1eAsAAQT1AQAABBQAAAAzMjA00zU00jWwUDAytDIwASI9U0tLheT8XL3EgoKc
VL3w1CTvzBIQ5ZyfV5KaV6LnklqWmpNfkAtkR5sbmZhZWhkZWxgZmxrGKvgFO5WWlOTnOeZl5iaW
ZObnFbvmJSblpKbY+vlzAQBQSwMEFAACAAgAiKiISWb4i1OsAAAA6gAAADMAHABmYXN0L2Zvcm1z
L2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoLXN0ZGVyci50eHRVVAkAA1A7SlhQO0pYdXgL
AAEE9QEAAAQUAAAAfY2xDoJAEER7v2JrEi5wEAQ6ohZGKwopiMUJC1wCt3i3aPx70VhbzWQy80YG
YeKH0g9SkGEexHmYiCjKoKFJqHkeUVR4O2n+yI4Mo2GxxweONE+rr7cyjrNcRqkMsvQKnueBXxeX
wjnkEh0ttsEzqVabvsT7go6h00a74RdWmoeDtWTzKzyVA7dCgQmUAW0cK9MgUAf/iTwo/q7VaFG1
r98FtgKOvSG7VsXmDVBLAwQKAAAAAACHqIhJAAAAAAAAAAAAAAAADAAcAGZhc3QvZnJhbWVzL1VU
CQADTTtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAh6iISdsI00I7AAAAPwAAAC8AHABm
YXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMtc3RkZXJyLnR4dFVUCQADTTtKWE07
Slh1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOL
FZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAACPqIhJAAAAAAAAAAAAAAAADAAcAGZhc3QvaW1h
Z2VzL1VUCQADXjtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgACAAAAj6iISVGnghgxAAAAMQAA
AC0AHABmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLXN0ZGVyci50eHRVVAkAA107
SlhdO0pYdXgLAAEE9QEAAAQUAAAAaW5pdEltYWdlQXBwbGVKUEVHOjE0MTY6IGZhbGxpbmcgYmFj
ayB0byBsaWJKUEVHClBLAwQUAAIACACPqIhJIY+9ODIAAAAzAAAALAAcAGZhc3QvaW1hZ2VzL3Bk
Zi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0VVQJAANeO0pYXjtKWHV4CwABBPUBAAAEFAAA
AHPLSSxJdUlNzk9JtVJIAdGZeekKqUVF+UVWCpl5yflFRanJJQopiSWJCskZqcnZelwAUEsDBAoA
AAAAAIyoiEkAAAAAAAAAAAAAAAAMABwAZmFzdC9sb2FkZXIvVVQJAANYO0pYpz5KWHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACACGqIhJ2wjTQjsAAAA/AAAAUgAcAGZhc3QvbG9hZGVyL2Rpc3BsYXkt
aW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVy
ci50eHRVVAkAA0w7SlhMO0pYdXgLAAEE9QEAAAQUAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8v
ylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMEFAACAAgAh6iISdsI00I7AAAA
PwAAAFMAHABmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQADTjtKWE47Slh1eAsAAQT1AQAA
BBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNT
i4tTU/S4AFBLAwQUAAIACACMqIhJ2wjTQjsAAAA/AAAALQAcAGZhc3QvbG9hZGVyL3JlbG9hZC1w
b2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVUCQADWDtKWFg7Slh1eAsAAQT1AQAABBQAAABzLClJ
zS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBL
AwQKAAAAAACKqIhJAAAAAAAAAAAAAAAAEQAcAGZhc3QvbWVkaWFzdHJlYW0vVVQJAANUO0pYpz5K
WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACHqIhJZASHeZ8AAAC1AAAAQAAcAGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLXN0ZGVyci50eHRVVAkA
A047SlhOO0pYdXgLAAEE9QEAAAQUAAAAFY29DsIgFEZ3n+K+gKTQH2s3tYvRTaODcbi0t5WEQgNU
g08vTt/JSU4+kfFqzcU6q0HwJisaXjCx5dDZieE8a2J3kicV/nOwJpAJrKU3aTtPiR8bUQrRiLzO
i6p8wnE01ikzpt4EZ/VVTSTRE3gKICN0WqUKJHW4JLu7XXBKJ/tlGMi1ys8a4xkjOfigB+x76iFY
QPDRdC9njfqSW/0AUEsDBBQAAgAIAIioiEkFR/w7ngAAALUAAABLABwAZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC1zdGRlcnIu
dHh0VVQJAANPO0pYTztKWHV4CwABBPUBAAAEFAAAABWNyw6CMBBF937F/ACklJewU9kY3Wl0YVwM
MGCTvtIWDX69dXVPTnJyOcuqJOMJ2wLPWla0WZE2VQ6DUSlaKym9U38S4T8HowPpkHb0Jmmsivyo
ecl5y/OGFWX9hOOsjRN6jr0OzsirUNSjJ/AUoF9hkCJW0NOAS7S72wVVPNkv00SuE95KXM+4koMP
esBxpBGCAQS/6uHljBZfcpsfUEsDBBQAAgAIAIeoiEkggx9wngAAALUAAABYABwAZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC10
aGVuLWVuYWJsZWQtc3RkZXJyLnR4dFVUCQADTjtKWE47Slh1eAsAAQT1AQAABBQAAAAVjb0OgjAU
Rnef4r4AhFZAZFNZjG4aHYzDpVywSf/SFg0+vXX6Tk5y8vGC1RnjWdEAZ21RtqzMa9aAsDpH5xTl
d+pPMv7nYE0kE/OO3qSs04kfG15x3vL1tiir6gnHyVgvzZR6E71VV6mpx0AQKEK/gFAyVdCTwDnZ
3e2COp3s53Ek38ngFC5nXMjDBwPgMNAA0QJCWIx4eWvkl/zqB1BLAwQUAAIACACIqIhJKdk/JJ4A
AAC1AAAAMgAcAGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1zdGRlcnIu
dHh0VVQJAANPO0pYTztKWHV4CwABBPUBAAAEFAAAABWNQQ6CMBBF955iLiChIyiyU9kY3Wl0YVwM
MGCT0jZt0dTTW1f/5SUvH3OxXgpc5hWgqPOiFmVWIEJnpoysVZzduT3J8J+D0YF1yBp+szJ2SvzY
YIlY46raClE84Thq46QeU6+DM+oqJ27JM3gO0EbolEwVtNzRnOzudqEpneznYWDXSG8VxTNFdvAh
D9T33EMwQOCj7l7OaPllt/gBUEsDBBQAAgAIAIqoiEm/97plngAAALUAAAAzABwAZmFzdC9tZWRp
YXN0cmVhbS9hcHBseS1jb25zdHJhaW50cy1hdWRpby1zdGRlcnIudHh0VVQJAANUO0pYVDtKWHV4
CwABBPUBAAAEFAAAABWNsQ7CIBRFd7/i/YCkxaptN7WL0U2jg3F40NdKQoEA1eDXi9M9OcnJ5UW5
WZZ8WdTAy7ao2rJhdV2DtBND5zSxO4mTiv85WBPJRNbRm7R1U+bHlq85b/mqKaqqecJxNNYrM+be
RG/1VU0kMBAEiiASSK1yBYIkztnubhec8sl+HgbynQpOYzpjIg8fDIB9Tz1ECwghGfny1qgv+cUP
UEsDBBQAAgAIAIqoiEnhMv3yngAAALUAAAAqABwAZmFzdC9tZWRpYXN0cmVhbS9hcmd1bWVudC10
eXBlcy1zdGRlcnIudHh0VVQJAANUO0pYVDtKWHV4CwABBPUBAAAEFAAAABWNvQ7CIBRGd5/ivkAJ
4E9rN7WL0U2jg3G4tLeVhEIDVINPL07fyUlOPsnFphCy4BVIUfNVLTkTZQWtGxlOkyF2J3XS8T8H
ZyPZyBp6k3HTmPlRyrWUtVxWWyH4E46DdV7bIfc2emeueiSFgSBQBJWgNTpXoKjFOdvd7YJjPtnP
fU++0WEymM6YyMMHA2DXUQfRAUJItn15Z/WX/OIHUEsDBAoAAAAAAJGoiEkAAAAAAAAAAAAAAAAN
ABwAZmFzdC9yZWdpb25zL1VUCQADYTtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAkaiI
SQAAAAAAAAAAAAAAABcAHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL1VUCQADYTtKWKc+Slh1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgAkaiISTkBy91AAAAAegAAADUAHABmYXN0L3JlZ2lvbnMvc2Ny
b2xsaW5nL3doZWVsLXNjcm9sbC1hYnNwb3Mtc3RkZXJyLnR4dFVUCQADYTtKWGE7Slh1eAsAAQT1
AQAABBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM
3IKc1FygptQULldKNAMAUEsDBBQAAgAIAJGoiEk5AcvdQAAAAHoAAAAuABwAZmFzdC9yZWdpb25z
L3Njcm9sbGluZy93aGVlbC1zY3JvbGwtc3RkZXJyLnR4dFVUCQADYTtKWGE7Slh1eAsAAQT1AQAA
BBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM3IKc
1FygptQULldKNAMAUEsDBBQAAgAIAJGoiEnkisdDPAAAAD0AAABAABwAZmFzdC9yZWdpb25zL3Nj
cm9sbGluZy93aGVlbC1zY3JvbGxhYmxlLXNpbmdsZS1yZWdpb24tc3RkZXJyLnR4dFVUCQADYTtK
WGE7Slh1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODkovyc
HKdKhcxihbz8EoXM3IKc1FygptQULgBQSwMECgAAAAAAlqiISQAAAAAAAAAAAAAAAAkAHABmYXN0
L3hzbC9VVAkAA2w7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAJaoiEly/WXyhQAAAOkA
AAAlABwAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUCQADaztKWGs7Slh1
eAsAAQT1AQAABBQAAACtTjEOwkAM2/uKfKBkYLsZJthAdE7bVJyUu1S5nNT+noN+gcWybMv2pGmN
Qh41A5upBVii8A8CIr5UauKCF3LC6/DAgcdbdLzTrtWfXLzgQsVxK4LGRatNLb69rZ91OjUVJGaG
M7Bw4uwQ06rmXXPCQSFAzTS2UVcQpflP4/1Rz/P3RfcBUEsDBBQAAgAIAJaoiEnOCSgCjQAAAPAA
AAAnABwAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQJAANrO0pYaztK
WHV4CwABBPUBAAAEFAAAAKWOMQ7CMAxF957CFyge2DLDBBuIzk7rikhOXDmOBLcn0COwfPn/Z1t/
1rwlIU9agM3UAqxJ+CcBER8qLXPFEznhebrhxPGSHK/01uZ3rl5xper4qoLGVZvNfb07HyMtY8qb
mo/N0qFnIKkwHIGFMxeHnQ6dhH2EAK1Q7AVcQZSWf4sUrW1+fp/0O5HhA1BLAwQUAAIACACWqIhJ
z49mDlAAAACgAAAAJAAcAGZhc3QveHNsL3hzbHQtY29udGVudFR5cGUtc3RkZXJyLnR4dFVUCQAD
aztKWGs7Slh1eAsAAQT1AQAABBQAAACtzLENwCAMBdGeKf4GUdpsg8AISzZGlokyfsgOaa67V0wn
Sw62AXI3v9BYCBAehBMkpDQCtmKuSDzuLFyxuwjNHErRre7LLJW/sKeHyvGRL1BLAwQUAAIACACW
qIhJgUp3rUsAAACsAAAANAAcAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNy
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
cc2q9au9zJ4Rf4vhAJ7YOWzt0bPrEX09yYG9sYPtGUW2MA6mSCeGbenRwdQXxHgRQXYCVk+OLkQF
PcBuHrOSzeUzNOVHEZbyowjXGfY/diZWf8Biqz8NG/ixkUnUWTnqrKyBWRnqrFz1h2Fk6Mky1Wl5
6pM19MKy1Fn5yqz8oVnZyqw89VcC/IEfnpvqrwR46q8EEMMfmJb6OwHeAO8EkKFpqb8T4Km/E+CT
gVn56qysAd50GHhpWer5haeeX/gDb1mWen7hqecX/sD5hWX03j2zFP9lvJ0//5h30Dz1nMcwB1Ya
Up7/A1BLAwQKAAAAAACpqIhJAAAAAAAAAAAAAAAAEQAcAGh0dHAvdGVzdHMvbWVkaWEvVVQJAAON
O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACcqIhJAAAAAAAAAAAAAAAAGgAcAGh0dHAv
dGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQJAAN4O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CACcqIhJUqq7Y8oAAADgAQAAOQAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5
LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUCQADeDtKWHg7Slh1eAsAAQT1AQAABBQAAAC1kN1qwkAU
hO/7FPMAZTGav64iiIp4YQkEaSF4EZNjXIy7YfcEX78bldLrgtdnznwzU4wDOQplFIo4TQ+Y5etN
tt9lcyyY6drxJ/HN2MvOaMXG5sR9J6ENwxGz0g36DvqhwfUhmqKsa0vOQTm0pirbt+IP5eNllBVV
QIonKwLdXDBKxP0Iy5WlztjBrkjG8ST0Obb6ZObSvzfNQHFcWnZCiH9YrejYN95L+XRfis+5j6aM
HggS39nyXoc0K26pfkfwu0kk4jh52SY/UEsDBAoAAAAAAKKoiEkAAAAAAAAAAAAAAAAVABwAaHR0
cC90ZXN0cy9tZWRpYS9obHMvVVQJAAOAO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACd
qIhJXm5pdWsBAABHAwAAQAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHkt
ZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAkAA3k7Slh5O0pYdXgLAAEE9QEAAAQUAAAAtZHd
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
AAAEFAAAALWP3QqCQBSE73uKeYAI7c/cIoiM6MIQJAqkC9OTLdmu7B7x9TMj6AW8nuH7ZpKxK5yp
mPkjx/euWMW7fXQKozU2zPSq+EjcaPMMtZKsTUxcVwJKMywxS1WgrqC+Hby+pSXSPDdkLaRFqbO0
HCR/lkVvloAyYIGfC9RY1/FGXQjDmaFKmw8u8cbz+aTdEdCtLtYCskWeJT/ilie1Oqi7FrhE224D
KZZcUj6E+3fEdfzejrwBUEsDBBQAAgAIAKCoiEnxNIWerwAAAJUBAAAwABwAaHR0cC90ZXN0cy9t
ZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1zdGRlcnIudHh0VVQJAAN7O0pYeztKWHV4CwABBPUB
AAAEFAAAAL2PwQqCQBiE7z3FPECEWlluEURGdCgEiQLpYPpnS7oru7/0+lnSoQeo8wzfN5N4rnBG
YhwM/MA9Yx6vN9FhFy2wZKaq5j3xQ5v7TivJ2sTETS2gNMMSs1QFmhqq66DqSjOkeW7IWkiLUmdp
2Uv+YgkpA6b4uEAP6zqTwTuE4cxQrc0Ll0w83x+2O0K6NMVCQLbIo+Rb3PKkVlt11QKnaPXeQIol
l5T34X4dCX525AlQSwMEFAACAAgAoKiISUE2iUK7AAAAKgMAAD0AHABodHRwL3Rlc3RzL21lZGlh
L2hscy92aWRlby1jb250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRlcnIudHh0VVQJAAN8O0pYfDtK
WHV4CwABBPUBAAAEFAAAAO2PzQqCQBSF9z3FeYAItR9ziiAqokUhSBRIi9JbDemMzFzp9TMlaNmm
TbQ+h/OdL/Zc4fREP+gErn/AOFosw+06nGDKTHnBG+K7Nre1VpK1iYjLQkBphiVmqS4oC6img7wp
jXBMU0PWQlpkOjlmrfiNMvxTPqDMKQGGeLFAd+s6fqcOYTgxVGjznIt9bzDoVj/mdCovEwFZTe4k
X6NqT2q1UmctsA9n9QdSLDmjtA33XcTzf0Qk6H9N5AFQSwMEFAACAAgAoaiISd4fZi36AAAAhwMA
ADoAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1zdGRl
cnIudHh0VVQJAAN9O0pYfTtKWHV4CwABBPUBAAAEFAAAAO2PzUrDQBSF9z7FeQApMwn5IUpBjEgX
lYEoCsVFmtykQ5OZMHNDX9+kRQi4EuzO9Tl85zu7QGYiyoRYhSL4xH3x9KzetmqNB2bqB34hPll3
3Fqj2bqCeBwyGMvwxKxNi3GAuXTQX0p3KOvakffQHp2tyu5mt1gJr7aSUwWk+N4CnbwUyeocwnHl
aLBuxu2SII5nj5z2Y7vOoCfku+ZDMfG0NRvT2Awf6vHsQIY1d1TfQi6PSHG1I/1AbTCUzpODIq+c
rab81avymKGqQM5ZN0lDbXJIEcAf7NjV2BNkOGMEGt0RbNNMuwiT+LdIuUBGP4lRGqT/ln9o+QVQ
SwMEFAACAAgAoqiIST7MEZgtAAAALgAAADwAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1k
dXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWFjdHVhbC50eHRVVAkAA4A7SliAO0pYdXgLAAEE9QEAAAQU
AAAA43INc/UL0SguSczJSU3RVAhxDQ7RSEvMKU7VVHBz9PThcvVzUfB3A4tzcQEAUEsDBBQAAgAI
AKKoiEmmV9mXNAEAAMgDAAA6ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24t
YWNjZXNzaWJpbGl0eS1kaWZmLnR4dFVUCQADgDtKWIA7Slh1eAsAAQT1AQAABBQAAADF0kFPwjAY
BuD7fsXniZHRNTMevJBMZUSCgpEFvJb1wzWWdmm/Gvj3bggHD95cPDV9mzzveyhjDPja6rBHzyeC
BC82K77B7VzR+bgPSkv+ihqFR67F0QZihJ6YQx80eV4TNbxLPN+jVILX2vNPJdEyGZwgZQ0TVYXe
q63Sio4MDw1WhDKlA0VJkvzHBlFREPq0IM+BZaPsFpJsdAN5HkHEinWxKONKmKato9rZ8F4PL3GX
dZe3l+KhLCYQn5rSSxNcjWFmdsq0PTAew4BcwMEQlvML4BE/UP4gUIvGoyzVHl0q0VdONR2WKiPx
sNzFgwxWWFkjW+mqVVn2h/b12fZ94Bk8KxMI+xn+bfc0/NEG18/sTv51dHKmSWjd2lAWqzLeCe1x
CNO72VMExWICy+npof2uX1BLAwQUAAIACACiqIhJkZ/NH64AAAB+AgAAPgAcAGh0dHAvdGVzdHMv
bWVkaWEvaGxzL3ZpZGVvLWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktZXhwZWN0ZWQudHh0VVQJAAOA
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
6TEEDqK9QC8fdFk6vdSWuBC9hjqty7Ps9MRvGGNZg1KJLDXZ6EsMWa1DVqFBLwg7eyu7rnaPMiao
rLk/tPxhySMceUxTJt7bZLJpUgIc0JQ2pjR8si/Mwb/1HLafhOCFqTAV5Xlkuo2s0zJT+fewrjdw
t5w8L9bzxQMMibBx9IL0Yf1ubo0i65dI0R1+gyAgkTIVRAem5UDTkm5PCSYNbUuhv6kM/k3lC1BL
AwQUAAIACACcqIhJJXmu1scAAAA2AQAAMgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1l
bnQtcmVmZXJlci1zdGRlcnIudHh0VVQJAAN4O0pYeDtKWHV4CwABBPUBAAAEFAAAAJ2OwUoEMQyG
7/sU/wNI6Qy7jpQ6iC6CICjOQUE8zHaytdhtliYivr3Vk17NIYQvyZd47z2uU7z8VJq00nzA2OIv
mnRWueV4V+iB5sXh13RLC3iPM+waFFzAQpnf0BlrB9tbCAUxjSHw4ZhJ6QTdz5pgPG9l65vVlgKa
o++cXbvNKehDOjuYzGHOqBoqHblqKvF56Nf95gX+pux5dMgcY8MQnauKMf9RbWn3HpsrlaSPSV8n
Eklcvi84PN1fobCCiibNtLTvV19QSwMECgACAAAAnaiISfVZRWtjAAAAYwAAACoAHABodHRwL3Rl
c3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA3k7Slh5O0pYdXgLAAEE9QEA
AAQUAAAARGVjICA4IDIxOjA0OjU3IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNzI0MjVdIDxE
ZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAgAA
AKCoiEl6qs4FYwAAAGMAAAA5ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1wbGF5LXN0cmVhbS1j
aHVua2VkLWljeS1zdGRlcnIudHh0VVQJAAN8O0pYfDtKWHV4CwABBPUBAAAEFAAAAERlYyAgOCAy
MTowNDo1OCBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzcyNDI1XSA8RGVidWc+OiBpbml0V2l0
aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAAAAACdqIhJAAAAAAAAAAAA
AAAAJwAcAGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL1VUCQADejtKWKc+
Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAnaiISQAAAAAAAAAAAAAAADkAHABodHRwL3Rlc3Rz
L21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9za2lwLWJhY2stc3VwcG9ydC9VVAkAA3k7Slin
PkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAJ2oiEmuYreT4AEAALwGAABiABwAaHR0cC90ZXN0
cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2tpcC1iYWNrLXN1cHBvcnQvc2tpcC1iYWNr
LXN1cHBvcnQtYnV0dG9uLWNsaWNrLXN0ZGVyci50eHRVVAkAA3k7Slh5O0pYdXgLAAEE9QEAAAQU
AAAA7VPbattAEH3vV8wH1Lr5IqO2KcZOm0BShO3QgsnDWjuWlqx2t7ujhP59R5ExKS2lLQT6EPSy
sztzzpkzo12WFsmkmM6i2Wx8CxfbbbnGrx0GgoOqL4jcMVwpucYK1T2uMThrAi6F1ntR3RVgLFTW
EBqCKzQ1NeCHVAkjQO+XViKoAFmSvNr9npDDVde6D8oIfbO+WhhmbS3hQkqPIRQghgOkWR4l/KVc
xrnQeQ0Nyy3i+PRUzJMkiVuUSsRcZDtfYYgbHeIaDXpBOLq3MnKNey87DpU17/qSPxB5DJceGeXc
e8tNti07UACaynbshuf2hen7t76A/TdC8MLUyJfyqWV6sGw0ZPL1r82a3MLbzfnH8ua6PIMFEbaO
PiE9WH93bY0i6zdIneunQRCQSJkaOgdmyIF2SHpzcpA5tK2E/oFl+mwsK6wA5nDkygEfQprk0eMj
eKo8Out7uF2eTeYp67g0B3tWcHld9yyBhKcQRdE/QK1w39WMpVjdZ0XNhqXxtHuGAr6Uy8d2eBiK
NMrXkJ48yaNZ/nzOtw7rzAkf0EOJofSWFzRsQyn4r6qq40YoA+XlCtIkg9DYTkvYI6TjHibhfdQI
9nBgXhjns7+FTJ9ATn9GnM6z+YvKF5X/pcrvUEsDBAoAAAAAAJ2oiEkAAAAAAAAAAAAAAAA2ABwA
aHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc3RhdHVzLXN1cHBvcnQvVVQJ
AAN6O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACdqIhJ82ncNQsBAAAsAwAAXgAcAGh0
dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3N0YXR1cy1zdXBwb3J0L3N0YXR1
cy1zdXBwb3J0LWxpdmUtYnJvYWRjYXN0LXN0ZGVyci50eHRVVAkAA3o7Slh6O0pYdXgLAAEE9QEA
AAQUAAAA1ZDBSsNAEIbvPsX/ABKyiW1ilIJYkR4qC1UUioc0maRL090wO6Gv76ZFKHhS6MHzzH7f
t7NOVBHfFJMsylX2ifvV07N+W+oZHkRo38sLycHxbumsEccrkqEvYJ3Ak4ixLYYe9rSD/WnpDmVd
M3kP49G5quyu1meW/GKWOVVAjm8X6OBVnEXHIVgqpt7xiFtnyTS+DR0L27hZEZ637WjxUrL4KIr+
gJrTZmgDy4S6dyPbVUgzzo6GAh/68fgdsmKko/oa6vwmqbrYTfY9tUlfsieGJq/ZVWH+6nW5K1BV
IGbHIRp6MYeKE/itG7oaG4JKR0yMxnQE1zTBizSb/hapzpCTn8RJnuT/pPILUEsDBBQAAgAIAKCo
iEm2i0n67QAAAF8BAAAtABwAaHR0cC90ZXN0cy9tZWRpYS9wZGYtc2VydmVkLWFzLXBkZi1zdGRl
cnIudHh0VVQJAAN8O0pYfDtKWHV4CwABBPUBAAAEFAAAAIWPT0/DMAzF7/sUPu3WJq2AbpEqNA0Q
Bw6oGqeJQ9Z4baT8I3GQ9u1JBdsV+/Kefs+WfWwbwe8F53XXPXzC6+HwPuBXxkRw1tNin7INL9pJ
8zG87Zwa0HrCnVIRUxIgfwU0bVfz0k0ZK1nI0cBMFARjNyQ2nHNmUWnJvrVCX9EcPZFBVRkvVT1O
+tFJi31Z6XMcMTEql9RBndfXaL9dak2XgL0MwehRkvaOlczq+O8zf3YfURI+x+jj3luLjgSgG312
hBEVSAe4QAGnCyFE6SYEg26iGaxOVtI4QwVp9tkoON1YCzpddbfd3K1+AFBLAwQUAAIACACiqIhJ
bf2+M7kAAADrAAAALwAcAGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy1zdGRl
cnIudHh0VVQJAAOAO0pYgDtKWHV4CwABBPUBAAAEFAAAAFWNQWvCQBCF7/6K9wNK2KTGyLINYqVQ
KFTMoYXiIW7GuDTZkeyU4r938KTvMDy+mTfPOefwFvr1RaiRidoRteoRNdJK+uD+M9KO2s7i7lpH
Bz5iiYPChBUMhPkXeWYWi8o8I5FPmTJ4Hs8DCT0hv8US6he1us9mG/LQH0VuTWk1RP8pN1U2sG8H
TOInOvMkIfY/VTEvyj3chg5/fW0RYpCvIKeGUgoc3+ORLb63r4gsoChBBuq0cnYFUEsDBBQAAgAI
AKKoiEmOxGTc6gAAAFoBAAAvABwAaHR0cC90ZXN0cy9tZWRpYS90ZXh0LXNlcnZlZC1hcy10ZXh0
LXN0ZGVyci50eHRVVAkAA4A7SliAO0pYdXgLAAEE9QEAAAQUAAAAhY+9bsMwDIT3PAWnbLZkx0VS
AUYRJCk6dCiMdAo6KBZrCdCPK1FF8va10SZryeUO35EgT3Ul+IPgTblZrT/g5Xh86/ArYyL4NMNs
99mNz8ZL+969br3q0AXCrVIRUxIgfwVU9brkU1fT2JSFHC1oolEwdkdiwzlnDpWR7NsoDAXpGIgs
qsIGqcp+ME9eOmynlSHHHhOj6ZKSLrS8RdvHuZZ0HbElvBAbrTR+cfr3jz+7iygJDzGGuAvOoScB
6PuQPWFEBdIDzlDA+UoIUfoBwaIfSIMzyUnqNRSQdMhWwfnOajDpppuGrxY/UEsDBBQAAgAIAKOo
iEkJjinPEAEAAPYDAAAmABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRV
VAkAA4E7SliBO0pYdXgLAAEE9QEAAAQUAAAA3ZFBSwMxEIXv/RVztGCzSXaTtUEE2SKIIMU9VJAe
duPYjWaTJZttxV/vSqG99OJBUE/zBmaY+d7jlMkZ4zN6AZwpKhTNyFwI0L4lVddZJCus70z8KoV3
EV0kC9yi9V076qecZ1wons4ZzeQa9i0UN/cYdz68gRlXgqssYAg+wBl915RVKin9EDQWlW4wOUwf
1SznlAiSJ8vgX1HHh8FF02JSYjCVNR9VbfE66MZskeiuU0LS6YT/DxYm0+lkgRrgyAG46xnNifV6
vB+iDtj5EI3b7L9ew+UC62FzpcYvTVyZ2JTY98a7W/fiFTwuC3A+wohposXnc2An7BIklfT7dgkp
018X/Z9kORG9+InoPwFQSwMEFAACAAgApKiISfcYNrm3AAAA7AAAAC0AHABodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLWVycm9yLWFib3J0LXN0ZGVyci50eHRVVAkAA4M7SliDO0pYdXgLAAEE9QEAAAQU
AAAAVY3BisJAEETvfkV9wBImgzE6jEFUBEFwMYddWDzESRsH47RkWsS/38HTbh/q8HhVba212Phu
+RKqZaDmhirdf1RLI3HH3T7QgZrW4I+dogWfMcUpwYgFFIT5CpWVxUwrjUguSwiOb/eehD6Qv1sR
1TxZxVsYrckhjejcqMKoCegZc1VmPbumxyBuoDsP4kP3U+qxLo6wazo9usrABy9fXi41xeg5bMOZ
Db4/VwgsoCBeemrT09EvUEsDBBQAAgAIAKSoiEnyNHhTswAAACMBAAA2ABwAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1zdGRlcnIudHh0VVQJAAOEO0pYhDtKWHV4
CwABBPUBAAAEFAAAAJWOMQ+CMBCFd3/FjToALaJiNyMxDA6G4EQc0J7aCLS2xfjzPYNxNDG3vJf3
Xu6rYi7YTLA05PPkAHlZ7gq89+g8nNUl9958bKZkgSdUDyzQGd05XNdNc6xPNwF2CCRcqU9uyCFh
CYzRWm0h4PFymk7gTPpdElHE40XI6LhIGWOR1OiCTvsAn8r5sDV4GVW/4chmfWs2qqubfbFddUTY
ao8rKYnBCagHAd9XNKMu9Lb5g+IFUEsDBBQAAgAIAKSoiEn4uHJiswAAAC8BAAAsABwAaHR0cC90
ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRVVAkAA4Q7SliEO0pYdXgLAAEE
9QEAAAQUAAAAtY9BbsIwEEX3nOIfoI2clNTUqpAK2bCLyAKkiEVIJolVa1zZE4E4fb3hCLwDvPd/
RT2wQZEbVRq1Ad1irnTmfN85BOkD/fkglqdWF+uivOC7ousybQ0sWzlZmRuK0Xo+8OgNzvUe7AXE
YsXR8IZ81T7lmVY6CRLYH392DbYJjG6Jc008pMiRHHWRGhKDVt31+KU/yuKzuyp1wS6N+oXC3MXU
4PcHBY9AI3q/sGC9ql7/5R9QSwMECgACAAAApaiISQDFRgljAAAAYwAAAC8AHABodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADhjtKWIY7Slh1eAsAAQT1
AQAABBQAAABEZWMgIDggMjE6MDU6MTAgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s3MjQyNV0g
PERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMEFAAC
AAgAqKiIScMHla9sAAAAxgAAACoAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0LXN0
ZGVyci50eHRVVAkAA4w7SliMO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwtTI0VUgtLzY0
MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKNVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3
UogIcFbIyy9RSM0rySzJSU3RUTDkckGxwowWVgAAUEsDBAoAAgAAAKmoiEmH0sM7YwAAAGMAAAAr
ABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby11c2VyYWdlbnQtc3RkZXJyLnR4dFVUCQADjTtKWI07
Slh1eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDU6MTcgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGlu
Z1s3MjQyNV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwg
MQpQSwMECgAAAAAAnaiISQAAAAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21pbWUvVVQJAAN6O0pY
pz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACdqIhJRfZlq14AAACmAAAAKgAcAGh0dHAvdGVz
dHMvbWltZS9taW1lLXR5cGUtc25pZmYtc3RkZXJyLnR4dFVUCQADejtKWHo7Slh1eAsAAQT1AQAA
BBQAAACVzDESQDAQBdDeKf4RJAYZtUaXwgUiNmSEmF3urzWj8g7w9pMWfToWYlgSy9mTyCjWbR28
BzFnRjxghx6q1JA132nGRFAVoqBEiImQQxC6ULVNsf8r1ausv2NttCkeUEsDBAoAAAAAALuoiEkA
AAAAAAAAAAAAAAAQABwAaHR0cC90ZXN0cy9taXNjL1VUCQADsjtKWKc+Slh1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAnaiISQl9zomeAAAAtQAAADIAHABodHRwL3Rlc3RzL21pc2MvNDAxLWFsdGVy
bmF0aXZlLWNvbnRlbnQtc3RkZXJyLnR4dFVUCQADejtKWHo7Slh1eAsAAQT1AQAABBQAAAAVjTsO
wjAQRHtOsRfASpxAPh2QBkEHggJRrJ1NsORPZDugcHpMNTNPehqe5dt1ztdZDTxvs7Ld1CxPQzrD
cJo0sTuJk4r/ODgbyUbW0Zu0m0zqj4qXRdXyoimqJnvCcbTOKzsm30bv9FUZEhgIAkUQC0itkgWC
JM6J7m4XNOlkPw8D+U6FSeNyxoU8fDAA9j31EB0ghMXKl3dWfcmvflBLAwQUAAIACAChqIhJ6M6g
qncAAACOAAAAMQAcAGh0dHAvdGVzdHMvbWlzYy9hc3luYy1hbmQtZGVmZXItc2NyaXB0LWFjdHVh
bC50eHRVVAkAA347Slh+O0pYdXgLAAEE9QEAAAQUAAAAFY3BDcMgEAT/V8VVkB4s4p8tI0EDBNay
ZQQRdyRy9yGfmddozIF4CesRdAAc5C6Rg2o7X13BGi4IvxsiSkKJ4PpB44Qd7UGS63f6F/TcVlOL
ouhSQ0KiPER2co6lxwiRved829AEic9xbB1EfnaezbbaZfYz0Q9QSwMEFAACAAgAoaiISeisam3Y
AAAAkAEAAC8AHABodHRwL3Rlc3RzL21pc2MvYXN5bmMtYW5kLWRlZmVyLXNjcmlwdC1kaWZmLnR4
dFVUCQADfjtKWH47Slh1eAsAAQT1AQAABBQAAAC9TstOwzAQvPsr9h5ciwvnlJZTQVREouetPVWs
unHkXUPz9yQRB76Ay4w0o3lYa8l95lRvELdnZfdy6twJ50PUX3quMQX3gQQWuMRTrmoVorZAalJx
veroFkXcLYp3LNPgLQ/BBlxQrPgSR7W4j/CKsNG7mqZp/m2YvVZO62zbkn18eKJmgbY1tOvhr0La
s84AWiuIVUs8VwUpXyE0FngMAYMH5S8UWvs3ppGUv7dLxND+/W2XB8Wgr5kDgrF/zDRLho7briOp
3kPkUlOajlwEgeJ8oFQYMj9QSwMEFAACAAgAoaiISVnAu554AAAAjgAAADMAHABodHRwL3Rlc3Rz
L21pc2MvYXN5bmMtYW5kLWRlZmVyLXNjcmlwdC1leHBlY3RlZC50eHRVVAkAA347Slh+O0pYdXgL
AAEE9QEAAAQUAAAAFY0xDsMgEAT7e8W9IH+wiDtbRoIPEFjLlhFE3JHIvw9ppphixhyIl7AeQQfA
Qe4SOai289UVrOGC8LshoiSUCK4fNE7Y0R703FZTi6LoUkNCIsn1O/0TlIcgOznH0mOEyN5zvm1o
gsTnOLYOIj87z2Zb7TL7megHUEsDBBQAAgAIAKGoiEmB0RYd1wcAAHobAAA3ABwAaHR0cC90ZXN0
cy9taXNjL2FzeW5jLWFuZC1kZWZlci1zY3JpcHQtcHJldHR5LWRpZmYuaHRtbFVUCQADfjtKWH47
Slh1eAsAAQT1AQAABBQAAADdWdtu40YSffdXEDY2BgKTlCzJsaQZBTO+IMDmMlgHm8dFk90Ue9xk
K91NW5pN/j3VN4qkSFmLBHnYCSaS2LdTVafqVHPe5apgq7N3OUEYPgqiUJDmSEii3l9WKgtvL+Gx
VDtGVmcLRsvnq2DxQiVVBAf/PQvgjyJbFWKScoEU5eUiKHlJlmYo4QITESZcKV4sgvFmG2D4TvDy
7Pczu53bJOWMi0VwMZrMzVj0SBm5p1nmxhOUPq8Fr0oc+qnZrf6veZA9QXJGcXCBMbZjGS9VmKGC
st0iKHjJ5QalDmCBxJoC5DEpgpF9tOFgnLFDEAYWvRADKB93kE4mk579JSplKImgWWNQ0i/EnNE8
NGQkU4tgFM38c0zlhiHYhJbgGYfwlWKVw+LR6B8OH8KYlut6pcXmQqO/taPj4NIyB1Cqnp7zFyI6
Fs1ms+WQswmxboh0TL6Hs6RbnDGOwAxB17lqR07PugPzEdjij+LgeqrAxFHHZIUSRsKUMNayMjT7
trz0moN1oYmhptqrQJs9sieS6tgNksYsblOmSxfHWe93INRos7UnPGw3EF7YH0wjV0GkP7oWDsKT
FJNkp/8fGKgfGU+fPyGhIjB1kVEhVZjmlOFBx+rjnmD91bHNBCkgtFdvnOfO8O63hAsTPaVFu5ln
HbBF0RSxEDG6htxQvMcsQTTTv0MlZsS7w+2jXah/58QGdM/ntBJSh0bD7mYgSiA6lY8YnFkTxyaP
gXcMRYvnh3RYC7JbdogZzd6Kl3VxECn+ppujTPCi42xXH/UZ2us/VkVCBLCJNNlln3rgh2XUsXY+
bxVAny59ZdBn8nQ67S03zejXNUZvNLMpYNOgLviOB46efRSxcFt0mriC1TDcmNhbcKxIDLrlSJHa
CJ2dGqZzoK8mjjXekFauwqLQZqsZAn+an2CHIOg51A8sIFqgNWlFZhFc1w5PGNJe1BNTKA2AAaC4
b0HX7n1UbqfzwdqbkWxfADStYMdaHhvZ3LMUZ7i9FIIth6fPyXx5TNPrnVyVaeJwWTEs1xgfbBBg
woZXkPmbaOKvg6dqs+FCgdIKx2RwalGQUsng6xjOQ5XKufW3VWPdzADrFfA09ZEyC8ycAf2v52gw
CChhJvtyduOJrcsNYuzOI+idfW21rEDbsCPvBfQF7tH1qNad7tHg96Pn1Jldp3TrmD6cEd8QK5vh
K0meqQqV0GlnPWGBB9G1XDbMmDqjL6RCqpIfqwQ0vNbDSGdPLxy9RHHOEiTa4/7ojBGTofuBgn+p
n9bFaWLz2PVR+qvvFvT34ZZwqHIcbeX2tMjolth9XD0etU2KkOlBbJodqvgrhVogOlSr9/wS0hKT
LRSpI6bthbABoc8uV4xa8nbrqlipYbqE7ZUmOC/h2zeB3uyBji2JvQjZXwas+14rmPtZA647s9bR
NBOosAg7edJuIxo5cjdQaQ99s4Nek786rScMGkfomU8Qppv5455eTpMHBo0j2mN1G4kP2+N2c+z2
sO475PBgS4B9nbXHfPBFwV91Rs3Rn71Gdu4kN9/4gnYI80iSNG47skC2l2/W3JILeLwcqDLOft2C
yb7DrR0+r0d9UxhKCFugDDLs6mC5fW42MYJcgqnnwW/B+fKsFuKGfHdXMwQdOs9CtduQ3q3OBxG5
iZ0rbk6YKZB1M4p0MzqgURcFkdI3HoN+7gtLIzueTKE+RQpBYqAheqG8knf1E2hmv5DyriGWfTrv
W46uxDTFRddyYK1hgq/t7rdjoisiE6+BJ6Fx1IAehyidEy25cG3fQNPX1Nmkgqwqm3XH6zumL4uM
p86HvFK6XjTTL2GVURI3BHzJAAso2Ngb0hRLswv0MD/nxJ4UO6VdA35tg+KBgrHEznZUk8ELRbom
qx8cJwBsIvgrBBw6gRzBWtcUURXpJqi2YzpzXXzdirjfvjroRlb/HbVF1L/S6fb4BcVwy7KG6QBJ
f/nuURTow7hEL+B78ADp6ErzpncgdeE4mtiWaf/yw6t/Twwu7u/vGyl9cft4/zh77K1P0Fz2s/jh
4aEP9YIUG6hQreC7Nq0zM4KvgLSV+Q/z29Gtq1spI0j8x7QH/iqgn5hrU66nvIvdW7d3MhV0AzEV
6fvzXKmNXMQx+oy20ZrzNSzaUKmpa57FjCYy/vxrRcQuHkfT6Nr9iKC1jD7L8xXsa/ZbBe2dU45J
qGNIXmHetxBpHcz309vGEgDlXhQmHO/gA/IBcCMp31/6m4B+X5iPV/G/IZ5Qs+J7pFD88MtT/AtJ
/kmV+/hYUYbjf4HuIkliYAq4M1QEKixc3yumZKwtjfUTGRdUpjGSuzINQbPgJpCB9FlIIXQxFWKR
2irANm5DarwRujwcMTf1oef6Bh/IHFpq3Jmiry9B682PeUMKaupnmDv/vpG4XI3BgTC+as2C1H57
Dsjz5eouJ+mzS2xdDYwnAqSUoFCpSKDQM5G6lKUEWrIyhXqgX3oYN0VuW4gc2OA/mvY0iHi5csNu
7v/sMMjON73lJx312FdlIjfLE9x2Pew2Ce3dB+2qv9UFfxVnrk8wfjJs/P1PP9xZtfieI0zw3+oD
e7l/mwn7eUddMTnBFUcI839AhukJHpgOGw+2HBDgzwGanQBoNgzo04enJ+hR0hT6l6xibPdJ/4sT
DihUOVGRvxbrzQlYb4ax/hnCdD6MaIJMmX9y+wNQSwMEFAACAAgAp6iISbnqQMXWAAAAGAEAAD8A
HABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXN0
ZGVyci50eHRVVAkAA4o7SliKO0pYdXgLAAEE9QEAAAQUAAAATY5BS8NAFITv/RVztGDD7raaNEgv
ib0YpCDioZSyJq/1YbIbNq8R/fVuQKEDw7wHA/MZpe8X2ixUBqNzdZfrVZKtNWrfJbbvW0re6P2J
ZYrCOyEnSUkjtb7v4r1PzWqZ5maZ6bVJD9gF31OQb7Q8CNiNtuUGJx8md1ZyaKVw01/XBtTWOS9x
04llh+fXqprP9lc85oCHKGzLYnesuGOhBpsobPn895c8fBa2/qDIMHJD4fhC8s+T4zGESPEVWNid
4S9xbirjxC3dQsLF1VYI4vFDwc9+AVBLAwQUAAIACAC7qIhJFTU1knoAAAC8AAAAKgAcAGh0dHAv
dGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUCQADsjtKWLI7Slh1eAsAAQT1
AQAABBQAAACNjkEOwyAMBO95hT9AIO2hFb8hxFUsGYyMkfr8EuUD1V5WO4fZLKURJyOpgKqiET7E
CKdZi95vj9caZrb4DiH4Qj17xS5DM3b/7WxuT4ej0kTNDaV1bsBUEZ6AjAWrwU2XSeJdIcKoaZ8a
E2BJx3+6Kn3k87qXLDEvP1BLAwQKAAAAAACiqIhJAAAAAAAAAAAAAAAAFgAcAGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9VVAkAA387SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKKoiEnbCNNC
OwAAAD8AAAA3ABwAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxiYWNrLWFuY2hvci1yZWxvYWQt
c3RkZXJyLnR4dFVUCQADfztKWH87Slh1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJV0jNKyxNLU1V
SFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAACyqIhJAAAA
AAAAAAAAAAAAFAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQJAAOgO0pYpz5KWHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACACjqIhJbCFp6HoAAACuAAAAVQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2Fu
dmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLXN0ZGVy
ci50eHRVVAkAA4E7SliBO0pYdXgLAAEE9QEAAAQUAAAAlc0xCgIxEEbhfk/xH0BCsqzsEsTGNHaC
hYJYrHGMgTAjyYjXdz2C7Su+FygCE3rn7drbAfRpzo6mSJwLqsZKL6maOV3GfpjGKzZ7fsjWo0hK
S0bTuWozxnThbyrQ7Z0WK3PWU9bnkVrLwr+Dx/mwA4uCWLMWuq/gui9QSwMEFAACAAgAo6iIScwe
0YOqAAAAzQAAAEgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1v
dGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAkAA4E7SliBO0pYdXgLAAEE9QEAAAQUAAAA
NY6xCsIwFEV3v+J+gEoaq7VFBKuLm9hBoTjU9tUGw4skryh+vVk83Pmce6AWWEMnhVrGgd4hUdnc
urax8NJ6ejkvhh91ptN1dsPmQPfxsS1g2MjFyFBRCMbxkXtX4Hrag52AWIxY6qZIJvVfPk9zHQUR
7M+7ssI2gt6OYTgRdzFyJktNoIqkQK0+WZ9Tpzu9yhfqhjKeekJhaEJs8OxL3sFTj9aNLEjU5AdQ
SwMECgACAAAAo6iISTJCIVljAAAAYwAAAEcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1y
ZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQADgjtKWII7Slh1
eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDU6MDYgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s3
MjQ4N10gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQ
SwMECgAAAAAAwqiISQAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9VVAkAA7s7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAKKoiElh
XBmAYwAAAGMAAABLABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
YXVkaW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAOAO0pYgDtKWHV4CwABBPUBAAAE
FAAAAERlYyAgOCAyMTowNTowNCBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzcyNjc0XSA8RGVi
dWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQUAAIACACh
qIhJoVBGaHoAAACuAAAATAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAkAA347Slh+O0pYdXgLAAEE
9QEAAAQUAAAAlc0xCgIxEEDRfk8xB5CQBDUSxMY0doKFglisccwOhBlJRry+6xFsf/F+wgywAe+i
XUXrAT/d2WCq5LFC09zwJU2JyzX4dVjeYHvgp+wiVCllztB1bNqNMUP6m0p4f5fZIiY9k04n7J2E
f4cIl+MeWBSQlbTiYwFu+AJQSwMEFAACAAgAo6iISVSKJ06nAAAAigEAAFgAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ibG9iLXVybC1kb2VzLW5vdC1tYXRjaC1z
b3VyY2Utc2VsZi1zdGRlcnIudHh0VVQJAAOBO0pYgTtKWHV4CwABBPUBAAAEFAAAAN2PsQ6CMBRF
d7+iIw5QqCBK4qBEEwcjCSMx5FlesFopea0m/L0YB/0Gt3Onc24loixMsjAO0lScmHJ4Bzt0si7R
FWR6JDcwq9oOtMaGIdHKj0S6SJh326l2AxaP5ytKtyUyVO+7J2jVgMNmyjz1u8AxXpoHScxBXpDn
hvCAjYIv+VEyF4GIQz6qnXFDj5YXGgYkPso+VK/ffYFkWnXIhFjOJtU/nHgBUEsDBAoAAAAAAKOo
iEkAAAAAAAAAAAAAAABEABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy9VVAkAA4E7SlinPkpYdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAKOoiEnGGxMu6AAAACYDAAB5ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJl
LWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUCQADgTtKWIE7Slh1eAsAAQT1
AQAABBQAAADNUTtPwzAQ3vkVN8JAYoeQIm9VCurAgKIyVR1c51osYjs92wz8eq6lQgwIJIaC7OEe
30u6ZSWVuOZfNEKsYL5YPHS4yxgTbOz2U9sS6oS3RIHa4Bz6pAC9CdknJOxBe8D9UkH2hCZsvX3l
8VNKIxDGMfiIUAtxtvzekfHHdmb7Dg3aF+yO/FYPw1qbZ8WKh8UX+nB+iAGXsmqayQVsuN6DVFnK
alIIflLd1PVVyayQyWAsE7sVbqx/ysbtLLvxzno9PHb3U88BXUg47XsWiwr0ewEfTkxjLGQafhdC
nvwk8h+fRP7VSd4AUEsDBAoAAAAAAKSoiEkAAAAAAAAAAAAAAAA9ABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL1VUCQADgztKWKc+
Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAoqiISfygzZC8AAAA8AAAAFMAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ct
YXVkaW8tc3RkZXJyLnR4dFVUCQADgDtKWIA7Slh1eAsAAQT1AQAABBQAAABVjcGKwkAQRO9+RX2A
hEnWJDrMhsWVhQVBMQcF2UOctHHYOC2ZFvHvHTxpHYriVTdljDH4cd38LlTLQM0ZVdQ7qqWRsORu
5WlDTavxch2tBR/xgUOEAV8oSqXyAsL8jzRRqpjMFALZkEQGy+dLT0JjpM/fgOozxtgnowVZYIos
1SrXagK6hVSVSc+26TGIHejCgzjf7cssz7I/mAUdrl2l4byTrZNTTSE49r/+yBq79Tc8C8iLk57a
ODl6AFBLAwQKAAIAAACkqIhJe0QOIGMAAABjAAAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby1zdGRlcnIu
dHh0VVQJAAODO0pYgztKWHV4CwABBPUBAAAEFAAAAERlYyAgOCAyMTowNTowNyBld3MxMDcubG9j
YWwgcnRjcmVwb3J0aW5nWzcyNTIyXSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMg
bm90IGVudGl0bGVkLCAxClBLAwQKAAIAAACtqIhJdeKBZWMAAABjAAAASwAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQtc3Rk
ZXJyLnR4dFVUCQADlTtKWJU7Slh1eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDU6MjUgZXdzMTA3
LmxvY2FsIHJ0Y3JlcG9ydGluZ1s3MjY3NF0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzog
WFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMECgACAAAAraiISXXigWVjAAAAYwAAAEwAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1yZWRpcmVjdC1hbGxvd2Vk
Mi1zdGRlcnIudHh0VVQJAAOVO0pYlTtKWHV4CwABBPUBAAAEFAAAAERlYyAgOCAyMTowNToyNSBl
d3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzcyNjc0XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25J
bmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAIAAACtqIhJ9ocDeWMAAABjAAAAZgAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11
cmwtYWxsb3dlZC1ieS1jc3AtbWVkaWEtc3JjLXN0YXItc3RkZXJyLnR4dFVUCQADljtKWJY7Slh1
eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDU6MjYgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s3
MjY3NF0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQ
SwMEFAACAAgAwaiISWOqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAO5O0pYuTtKWHV4CwABBPUB
AAAEFAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth
0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpD
bVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAwqiISWOqrGyCAAAAqAAAAFIAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtdW5hZmZlY3RlZC1ieS1z
dHlsZS1zcmMtMi1zdGRlcnIudHh0VVQJAAO7O0pYuztKWHV4CwABBPUBAAAEFAAAAC2NQQrDMAwE
73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHeUgjLbZ3jyJLuMcZg
yJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwnksqdljnSjs2vMUSb
guxqTdTxmr5QSwMECgACAAAAqqiISaHrPI5jAAAAYwAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAOQO0pYkDtKWHV4
CwABBPUBAAAEFAAAAERlYyAgOCAyMTowNToyMCBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzcy
NDg3XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBL
AwQKAAAAAACkqIhJAAAAAAAAAAAAAAAAIQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L1VUCQADhDtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgApKiISebASn9oAAAAxgAA
AE4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRl
by1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAkAA4Q7SliEO0pYdXgLAAEE9QEAAAQUAAAAc0lN
VlCwUDAytDIwtTKwUEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyM7CMVbBxSU0qTbezUsjM
yywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgAr6iI
SVmft0BoAAAAxgAAADkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLWNyb3NzLW9yaWdpbi1j
YWNoaW5nLXN0ZGVyci50eHRVVAkAA5o7SliaO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIw
tTI2UEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcysTCPVbBxSU0qTbezUsjMyywJzyzJCE4t
Ls7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgAsqiISWBLZhCRAAAA
+wEAAEUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3Vy
aXR5T3JpZ2luLXN0ZGVyci50eHRVVAkAA6A7SligO0pYdXgLAAEE9QEAAAQUAAAA7Y4xDoMwDEV3
TuELhASWVplh6NKeAQVTIpkksp0Kbl869AYdq7++r/dC3kqkSWNOgMyZPSyREFbV4q3t+kvrznX+
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
SwMEFAACAAgAqaiISe2gJ4PBAAAA8gYAADUAHABpZXRlc3RjZW50ZXIvY3NzMy9uYW1lc3BhY2Vz
L2RlY2xhcmluZy0wMDEtc3RkZXJyLnR4dFVUCQADjTtKWI07Slh1eAsAAQT1AQAABBQAAADtz8EO
wUAUBdC9r5glC512qI4mFjQkFkJiKdI80xeG0Wleh2T+HrFg4QOQ7u5d3Xs2IkrDOI2SoJckW6Yd
nqH2pcrX6FZkKyTnWa33JRiDBUOiUTcSiYxZ+zTT+wnUuNwdUbkpkaV8Xl7B6AIcFh3W1u8NHONr
eyGFGagD8swSLrDQ8ErdKB6IQPRDfp921vkKa74y4JH4feyZ8vHjX6CY0SUyIYa91qZBfCFC/gFC
indEZiv/E4pQykbRKBrFB8UNUEsDBAoAAAAAALuoiEkAAAAAAAAAAAAAAAAJABwAaW1wb3J0ZWQv
VVQJAAOxO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAD8qIhJAAAAAAAAAAAAAAAADwAc
AGltcG9ydGVkL2JsaW5rL1VUCQADKzxKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAraiI
SQAAAAAAAAAAAAAAABQAHABpbXBvcnRlZC9ibGluay9mYXN0L1VUCQADljtKWKc+Slh1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAArqiISQAAAAAAAAAAAAAAABoAHABpbXBvcnRlZC9ibGluay9mYXN0
L2Zvcm1zL1VUCQADlztKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAraiISQAAAAAAAAAA
AAAAACEAHABpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRvbi9VVAkAA5Y7SlinPkpYdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAK2oiEnHIe/bNwAAAEAAAABHABwAaW1wb3J0ZWQvYmxpbmsv
ZmFzdC9mb3Jtcy9idXR0b24vYnV0dG9uLXJlc2V0LWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRV
VAkAA5Y7SliWO0pYdXgLAAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoS
i9JTSxTKMlPLFRJLFCwMDPQMwEAHxuACAFBLAwQKAAAAAACuqIhJAAAAAAAAAAAAAAAAIAAcAGlt
cG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvcmFuZ2UvVVQJAAOXO0pYpz5KWHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACACuqIhJxyHv2zcAAABAAAAAPwAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMv
cmFuZ2UvcmFuZ2UtZm9jdXMtYnktbW91c2Utc3RkZXJyLnR4dFVUCQADlztKWJc7Slh1eAsAAQT1
AQAABBQAAADLzS8tTvXNL0sNyVdIS8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksULAwM9AzA
QAfG4AIAUEsDBAoAAAAAAK6oiEkAAAAAAAAAAAAAAAAhABwAaW1wb3J0ZWQvYmxpbmsvZmFzdC9m
b3Jtcy9zdWJtaXQvVVQJAAOXO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACuqIhJxyHv
2zcAAABAAAAAQQAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvc3VibWl0L3N1Ym1pdC1mb2N1
cy1ieS1tb3VzZS1zdGRlcnIudHh0VVQJAAOXO0pYlztKWHV4CwABBPUBAAAEFAAAAMvNLy1O9c0v
Sw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUSSxQsDAz0DMBAB8bgAgBQSwMECgAAAAAA
/KiISQAAAAAAAAAAAAAAABcAHABpbXBvcnRlZC9ibGluay9zdG9yYWdlL1VUCQADKzxKWKc+Slh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAA/KiISQAAAAAAAAAAAAAAACEAHABpbXBvcnRlZC9ibGlu
ay9zdG9yYWdlL2luZGV4ZWRkYi9VVAkAAys8SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
APyoiEmAEsrFfgAAAIcAAABEABwAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxv
Yi12YWxpZC1iZWZvcmUtY29tbWl0LWFjdHVhbC50eHRVVAkAAys8SlgrPEpYdXgLAAEE9QEAAAQU
AAAAJca9CsIwFIbhvVfxQRcd7CBSwU1MC0Fpi/VnTptTCSQ5QY6Kd6/i8j5v3mmFc3Os+q5ten2p
sMDIoTApeSquNOyd/NhxFIpSKHqS5xS+j1lyFuvlqiznWb3Vhw1OLpAFPwQv48TFGya+I7K46a04
EoQxEEbjPdksy6u2/ucDUEsDBBQAAgAIAPyoiEngSIX3EAIAAEsEAABCABwAaW1wb3J0ZWQvYmxp
bmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LWRpZmYudHh0VVQJ
AAMrPEpYKzxKWHV4CwABBPUBAAAEFAAAAMVSXWvbMBR996+4ZA9JSGQvZevGYJCkcSGsbUKdtc+S
dZ1qkSVPktv43++qTtn6MOjLGAJJHB2d+3EuYwyyO6vbGn224oFn+X2R3aP4psLpWLZKy+wWNXKP
meadbQML6ANz6FsdfKbqxrqAMhNamUPmg3V8j5kyEo8opSDcCvbItZJMYGUdstLWtQoMjw2W9DMN
x5BMJpP/mQsvQ8v1cybzObDZdPYZJrPpR5jPE3ZhTaVcDeGBB4gSHkpuQCA45BIELw/QyxEFlSO4
tE564IT0AWKZyeTddr2C7ze3ebHd3BTruxxYfE9502hM+yrjQQEDmpCu8BG1bWq6w6hREj6dfTg/
HyeTy8X66gvsVI0SqAvwxFVQZg+UAxgbVNWtrKFsbEyy5FqjTCBhGwO+LUv0fgrUPXhSWoNHBE67
U+jBVjDYLopiAOSDp+YRs7Ja2yeKJDoY7PJiBxeb6+1VvssHacLiksLwGuErDP7W4PQh1HqQsJMV
q2UqyceA0WlBdo56ifGfDNug+Y1HM2MIKdKS2h5wI37Q+BQRHg2fX4cvtLRpw4iyaHEKB+wIdviz
pUmh/z1hj2HUv8RqQdqyjV2OeK4xXpfdWo6GlaPo74fjtOwtWb0QhZVdqoxBt8NjAOWfB2Nxcu5N
srN/I3v2Ztnla9nTaFSt1t2WO0+OEzG4FqPHr4xPGACNc765PO2/AFBLAwQUAAIACAD8qIhJoI1Z
sUIBAACIAgAARgAcAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQt
YmVmb3JlLWNvbW1pdC1leHBlY3RlZC50eHRVVAkAAys8SlgrPEpYdXgLAAEE9QEAAAQUAAAAtZJN
b8IwDIbv+RVWLy0SVNvuHPjoYdImkMofyIcLGWnCEnfQfz+XsmncuOwSOa+fvLblrIJvbGyBDpJA
uaASaOlBIUSUBpTUR740ISIjaCPLOkSTQLKiQ9taIjSlEBsPqdMaU5pCHzo4W+cgIYLkM1pMEBrI
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
iEmTHqu7UwAAAFkAAABEABwAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12
YWxpZC1iZWZvcmUtY29tbWl0LXN0ZGVyci50eHRVVAkAAys8SlgrPEpYdXgLAAEE9QEAAAQUAAAA
FcYxCoAwDAXQq/wDSAeROjnp5gE6a40QsEmwUfD26vReWtihAlHn/ZlUCM6FNujlDezUTLUiawmL
2UEh0Tqz/4wqTuJhopsOtfIdxhsG9G0X4wtQSwMECgAAAAAAwqiISQAAAAAAAAAAAAAAAA0AHABp
bXBvcnRlZC93M2MvVVQJAAO7O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAC7qIhJAAAA
AAAAAAAAAAAAGgAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvVVQJAAOxO0pYpz5KWHV4CwAB
BPUBAAAEFAAAAFBLAwQKAAAAAADCqIhJAAAAAAAAAAAAAAAAJgAcAGltcG9ydGVkL3czYy9XZWJD
cnlwdG9BUEkvZ2VuZXJhdGVLZXkvVVQJAAO7O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CAC7qIhJjzQacEQAAACgCQAARwAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVL
ZXkvdGVzdF9mYWlsdXJlc19SU0EtT0FFUC1zdGRlcnIudHh0VVQJAAOxO0pYsTtKWHV4CwABBPUB
AAAEFAAAAHPOL81JUcjLL1FIT81LLUosSVVIVMhOrVQoSMws0lEoLkksKS1W0DUxNjDhch5VO6p2
VO2o2lG1o2pH1Y6qHVVLc7UAUEsDBBQAAgAIAMKoiElUAsmyNgAAAMACAABQABwAaW1wb3J0ZWQv
dzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12
MV81LXN0ZGVyci50eHRVVAkAA7s7Sli7O0pYdXgLAAEE9QEAAAQUAAAAc84vzUlRyMsvUUhPzUst
SixJVUhUyE6tVChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnaQqQUAUEsDBAoAAAAAADepiEkAAAAA
AAAAAAAAAAAgABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9VVAkAA5o8SlinPkpY
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAADepiEkAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvVVQJAAOaPEpYpz5KWHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAA3qYhJ8YFuyvIAAAD4AgAAUAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLXJlbmFtZS1zdG9yZS1hY3R1YWwudHh0VVQJ
AAOaPEpYmjxKWHV4CwABBPUBAAAEFAAAAK2SsU7DQAyG9zzFr04ggZSRhQFoJTogkBo2luud2x6k
vsp2Gnh7LkkZkEBKEDecfLa/T7Z0xb0TJlUsRJLgrFo+LB6fq/ML7HPWbQnX4Kaui+LpZrXCkgO9
U5jfIq1fyRvUkhCE2O0JkcHUwsSxOm8xMUZitqNvWLujXI+GqPBCziiMUvl0JNFszE1TgDf6wJaY
xOXiKNBSP7R2cZ/QxnuioFPoPk4bOASqqVty6Brn0tYdDpG3OEZ3Euu0MdQk83ETM8iJL4c3BlNx
+gu/ObxjrL9UoVtpNkNFarDYJVJjf1C8NGU+/yKa35Vlvq9+0BWfUEsDBBQAAgAIADepiElnLLW5
bQEAAFUEAABOABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRi
b2JqZWN0c3RvcmUtcmVuYW1lLXN0b3JlLWRpZmYudHh0VVQJAAOaPEpYmjxKWHV4CwABBPUBAAAE
FAAAAM2SQU8CMRCF7/srJpw0Sy3EGPRgggiJxhiNoFy8dLcD1JR205l18d9bdsGoB0XjwR7a7bbv
e2+aEUKAfPC2XCLJoWIlR9OxnGJ2ZXizDEpjtbxDi4pQWvXiSxaMxCIglZZJmmXhA6OW1WEuK8xE
YRXPfFjW10heOo0r1MOBNDrz2RPmTOwDRoBTSxTNBldFPEB9wCtO0jT9L7lUzqWydap+H0S3fQhp
t30E/X6SJumFCg6JYBSCD7A3ubwe3dxP9tsQg5OaI5yCK61NIIHbs/EY3jyhMYTaBBpHMA4cVsBB
OYq+xruddbzAD7pqgfHcMBiCPKCK7wB1Ab12D9KTOMUCdmGzr9n1t5+BAh2ffE1rblGZ54iavglK
lSoK4+bwbNSGTLtqN0GIQwSYmYlK551o9tCgEvEVIVcOsi1Ir0tqtX4ueSw7cfxKODzvdOJ8XMvT
TZf8KO0ktiywWf+Ijf4bxjb+X5De1/OJB8krUEsDBBQAAgAIADepiEk4VfTavgAAAJwCAABSABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUt
cmVuYW1lLXN0b3JlLWV4cGVjdGVkLnR4dFVUCQADmjxKWJo8Slh1eAsAAQT1AQAABBQAAACdj7sO
wjAMRfd+hcWO1JEV6MKGxMpikksJDwfFhsLfk7YwsKAWD5YT+xzZxXq+2dBKPB7w1YLi7ghnpBYT
KEH4AgpCgoYssSg7C1GoGIbZAV9Yc0DuB6Og5BLY4AepXLwjaTbmoTHACU+qIUicm4NAi93S2tbd
h96cA7yOobs67onJ44z2yH5qmEsbvl6D1HQP/BbruDXUUubDPmRQokz7N/WmnwLHQruPx7f3TCaj
ie2tzPEPVy3LMudZRxcvUEsDBBQAAgAIADepiEnNq8QlrggAAJkjAABWABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtcmVuYW1lLXN0b3Jl
LXByZXR0eS1kaWZmLmh0bWxVVAkAA5o8SliaPEpYdXgLAAEE9QEAAAQUAAAA1Vprc+O2Ff3uX4Gx
p3GaMUnJkjZ62O5k/Zhk2rSZett86UwHJEERa5JQANCSt+1/78WLIilSUne92dSeNR+4AO7j3HsP
OHuVyjy7OblKCY7hkhOJUZRiLoi8Pi9l4k3P4bWQLxm5OZlntHi6QPNnKqgkMfrXCYIfSTbSi0nE
OJaUFXNUsIIs9FDIeEy4FzIpWT5Hw9UGxXBP4sXJf07McnaRiGWMz9HZYDTTY/4DzcgdTRI7HuLo
aclZWcSeE02m6re+kdlBsIzG6CyOYzOWsEJ6Cc5p9jJHOSuYWOHIKphjvqSg8pDkaGBerRgYp+3g
JAOLnolWKB22NB2NRh3rC1wITxBOk9qgoB+I3qO+qZeRRM7RwJ+49zEVqwzDIrQAz1gN1zSWKUwe
DH5n9cNxTItlNdPoZkOj7prRserSIgWlZCWesmfCWxZNJpNFn7MJMW7wVUz+BHsJOznJGAYzOF2m
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
0ec0vAn436L5489r/m4mHOuE/w8SfwzrHE6Op/EfQRbdRZ+p4Ziq/0fOfwFQSwMECgAAAAAAwqiI
SQAAAAAAAAAAAAAAACYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL1VU
CQADuztKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA0aiISQAAAAAAAAAAAAAAACoAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9VVAkAA9k7SlinPkpYdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAAAAANGoiEkAAAAAAAAAAAAAAAAwABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvVVQJAAPZO0pYpz5KWHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACADRqIhJfM47X48AAAChAAAARwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy1zdGRlcnIudHh0VVQJAAPZO0pY
2TtKWHV4CwABBPUBAAAEFAAAAFXHwQrCIBgA4HtP4bGg2dRwbtetETRG5KJDdLDtL2TqP0Tq9Tv3
3T6eM5kxnuWKcFblshKCqrIgI3pqlsUBvcHzZBPtIX0xzja8aQMfcLh4COlecCl5xUWZq33xIL2+
XroaQ4AxWQy7uv07OQ7DmTg0E3kZ62Ai67ludYpg/CFGjA16Y4PW3ZZkpWJis/oBUEsDBBQAAgAI
ANGoiEkp/RREjwAAAKEAAABOABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvYmFzaWMvbW9kZS1uby1jb3JzLXdvcmtlci1zdGRlcnIudHh0VVQJAAPZO0pY2TtKWHV4
CwABBPUBAAAEFAAAAFXHuwrCMBQA0N2vyKhgYx6SPtbWIliKmIqDOMT2KqFJbglBf9/Zsx3BuMq4
yFhBBK+YqqSkecnJiJ6aZXFAb/A82UR7SF+Msw1v2sAHHC4eQrrnQilRCVmyYp8/SK+vl67GEGBM
FsOubv9OjsNwJg7NRF7GOpjIeq5bnSIYf4gRY4Pe2KB1tyVZWXC5Wf0AUEsDBAoAAAAAAMSoiEkA
AAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
Y29ycy9VVAkAA8A7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAMKoiEnJ1xa0qQAAAMYD
AABEABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3Jz
LWJhc2ljLXN0ZGVyci50eHRVVAkAA7w7Sli8O0pYdXgLAAEE9QEAAAQUAAAAzdDBCoIwHIDxe0+x
Y0GubU6dXjUJEok0OkSHpf9iODcZo16/c9AD7PjdfnyM0DSiLCICMVqQtCAckzxFg52xXBYN+AqP
o/K4Bf+xblLmhSt4g7bLDMbfMsY5KVgsGEniO2q7y7kprTEweGXNrqx/Gh36/oS0lSN6SqVhROup
rDvvQM5756yr7CyV6bpmi6Jc0HizYn+AlIvAgaEfjGkWOFAEfpAnSTjAL1BLAwQUAAIACADCqIhJ
INuooqoAAADGAwAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2NvcnMvY29ycy1iYXNpYy13b3JrZXItc3RkZXJyLnR4dFVUCQADuztKWLs7Slh1eAsAAQT1AQAA
BBQAAADN0sEKgjAcgPF7T7FjQa5t6pxeNQkSiTQ6RIel/2I4NxmjXr9z0APs+N1+h48RyiPKIiIQ
owXhBYlxShI02BnLZdGAr/A4Ko9b8B/rJmVeuII3aLvMYPwtY0lCChYLRtL4jtrucm5KawwMXlmz
K+ufRoe+PyFt5YieUmkY0Xoq6847kPPeOesqO0tluq7ZoigXNN6s2D8gp2EDOSVhAzOWBg7MA39Q
8ICAX1BLAwQUAAIACADDqIhJ++3pRJsAAABCAQAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQtc3RkZXJyLnR4dFVUCQAD
vjtKWL47Slh1eAsAAQT1AQAABBQAAADNzrsKwjAYQOHdp8ioYGOS1iZ2bS2CpYipOIhDbH8lNJcS
gr6+roIPIJzlbB8jNE8oS4hAjBYk/4Q5z1HvLVbTZACf4bbXEbcQXz6M2j1wBU8wfrLg4oWzLCMF
SwUj6/SKWnk6NqV3DvqovVuV9dejXdcdkPFqQHelDQxoPpa1jAGU3YbgQ+Wt0k7KZomSjaDpYsZ+
AAXj/wN8A1BLAwQUAAIACADDqIhJRunFN5oAAABCAQAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQtd29ya2VyLXN0ZGVy
ci50eHRVVAkAA747Sli+O0pYdXgLAAEE9QEAAAQUAAAAzc69CsIwFEDh3afIqGBjclNr7dpaBEsR
oziIQ2yvEpqfEoK+vq6CDyCc5WwfMJ4lHBKWE+AFyz5RyDjpvKVqHA3SM952OtIW48uHQbsHrfCJ
xo8WXbysIE1ZASIHthRX0srToSm9c9hF7d2irL+ebI/HPTFe9eSutMGeTIeyljGgspsQfKi8VdpJ
2cxJss65mE3gB1AA+x/gG1BLAwQUAAIACADEqIhJj7FHrKIAAACEAgAARQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1vcmlnaW4tc3RkZXJyLnR4
dFVUCQADwDtKWMA7Slh1eAsAAQT1AQAABBQAAADNzs8KgjAcAOB7T7FjQa5tmm5eNQkSiVZ0iA5L
f8Vwf2SMev3OQQ/g8bt9jNA8oSwhHDFakrwkBRY0R723WE2TAXyFx0FH3EH8+DBq98I1vMH4yYKL
t4JlGSlZyhnZpnfUycuprbxz0Eft3aZqfoz25/MRGa8G9FTawICWY9XIGEDZXQg+1N4q7aRs1ygR
nKarBfsXFGTOQY5JRmceFHw+wS9QSwMEFAACAAgAxKiISfo5xYOkAAAAhAIAAEwAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtb3JpZ2luLXdvcmtl
ci1zdGRlcnIudHh0VVQJAAO/O0pYvztKWHV4CwABBPUBAAAEFAAAAM3RTwuCMBiA8Xuf4j0W5Nrm
n02vmgSJRBodosPStxjqJmPU1+8c9AE8PrcfPJyyJGA8oBI4y2iSUUF4GkNnJ6LmeURyxcdRe1Kj
/1g3aPMiBb5xtPOExt8EjyKa8VByGod3qJvLucqtMdh5bc0uL38aDm17gtGqHp5Kj9jDesjLxjtU
09456wo7KW2aptpCkEoWblb8DzBM5LKBERMLB4oFLf4CUEsDBAoAAAAAANaoiEkAAAAAAAAAAAAA
AAAlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL1VUCQAD5DtKWKc+Slh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAA1KiISQAAAAAAAAAAAAAAACkAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL1VUCQAD3ztKWKc+Slh1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgA1KiISfzbVUPFAAAATgIAAEcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvZG9tL3JlZmxlY3Rpb24tZW1iZWRkZWQtc3RkZXJyLnR4dFVUCQAD3ztKWN87Slh1
eAsAAQT1AQAABBQAAADNkD9vwjAQxXc+xY10SOz8UeN6Q0UVAxIoChPqYOJLE9WJg+3k83MonRlY
qG55T++d7qc7p4nk7zIr4jwrvmFXVccSrxP6AE33swth/LPbTpdYYzdjiX60g8dPZcxF1b8S3BJo
aKlPbskh5zms0TnrIErSj0y8QUP6XpKMGVsr01ofpBCcszb0hmnbs0DHolmZCQ/N6vwYj+x26sev
blDmVO43AzH2NuBGa6LwEtQiIEmLmNMktEZdmJx5mkP87zeJF77pBlBLAwQKAAAAAADWqIhJAAAA
AAAAAAAAAAAANAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0
cnVjdHVyZS9VVAkAA+M7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAANaoiEkAAAAAAAAA
AAAAAABKABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0
dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9VVAkAA+M7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAAAAANaoiEkAAAAAAAAAAAAAAABWABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9V
VAkAA+M7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANaoiEkXwcF3agAAAGwAAABuABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1v
bi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9yYWRpb25vZGVsaXN0LXN0ZGVyci50eHRVVAkA
A+M7SljjO0pYdXgLAAEE9QEAAAQUAAAAMzIwNNM1NNI1sFAwMrQyMLMyMdYzMrRUSM7P1UssKMhJ
1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tLmRiYW5lZGxhZGZsVGsgl+wU2lJSX6eY15mbmJJ
Zn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAADhqIhJAAAAAAAAAAAAAAAALwAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvVVQJAAP2O0pYpz5KWHV4CwABBPUB
AAAEFAAAAFBLAwQKAAAAAADZqIhJAAAAAAAAAAAAAAAAQAAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9VVAkAA+k7SlinPkpY
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAOCoiEkAAAAAAAAAAAAAAABPABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL1VUCQAD9DtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA1qiISa+lm2l8
AAAAEQEAAGcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0
VVQJAAPkO0pY5DtKWHV4CwABBPUBAAAEFAAAAL3NMQoCMRBG4d5T/AeQsFmCK0FsTLOdYKEgFmsc
40DISDLi9V2PYGP7iu8FisAavfXdyjsHejfbDSZLnDKqxkpPqcolnYfe9faCzVjusvXIktKc0XSq
2owxi/AzFej6SrPFhfXI+jhQayzle/A47XcooqCirJluS9h/LD5QSwMEFAACAAgA1qiISckqewJo
AAAAxgAAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheV9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAkAA+Q7SljkO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszIxUUgt
LzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PM
S8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA16iISc16HvxoAAAAxgAAAG4A
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVU
CQAD5TtKWOU7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMjFVSC0vNjQw18vJT07MUSgq
SS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FI
zSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADXqIhJzXoe/GgAAADGAAAAeQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkA
A+U7SljlO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszIxVUgtLzY0MNfLyU9OzFEoKkku
Si3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0r
ySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA16iISc16HvxoAAAAxgAAAGoAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQJAAPmO0pY5jtKWHV4CwABBPUB
AAAEFAAAAHNJTVZQsFAwMrQyMLMyMVVILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWw
cUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsD
BBQAAgAIANeoiEmAjMAlaAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xv
YWRlZGRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPmO0pY5jtKWHV4CwABBPUBAAAEFAAA
AHNJTVZQsFAwMrQyMLMyMVNILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlNKk23
s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBBQAAgAI
ANeoiEmAjMAlaAAAAMYAAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1l
dGFkYXRhLXN0ZGVyci50eHRVVAkAA+Y7SljmO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIw
szIxU0gtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4t
Ls7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA2KiISYTcpdtoAAAA
xgAAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9hdXRv
cGxheS1zdGRlcnIudHh0VVQJAAPnO0pY5ztKWHV4CwABBPUBAAAEFAAAAHNJTVZQsFAwMrQyMLMy
MVdILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlNKk23s1LIzMssCc8syQhOLS7O
zM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBBQAAgAIANioiEmE3KXbaAAAAMYA
AABpABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydC1zdGRlcnIudHh0VVQJ
AAPnO0pY5ztKWHV4CwABBPUBAAAEFAAAAHNJTVZQsFAwMrQyMLMyMVdILS82NDDXy8lPTsxRKCpJ
LkotyC8qycxLjzY3MjEyjFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjN
K8ksyUlN0VEw5HKhvRUAUEsDBBQAAgAIANioiEmE3KXbaAAAAMYAAAB0ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+c7Sljn
O0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszIxV0gtLzY0MNfLyU9OzFEoKkkuSi3ILyrJ
zEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3R
UTDkcqG9FQBQSwMEFAACAAgA2KiISX//4tNoAAAAxgAAAHwAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfb3JkZXJfY2FucGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAPoO0pY
6DtKWHV4CwABBPUBAAAEFAAAAHNJTVZQsFAwMrQyMLMysVBILS82NDDXy8lPTsxRKCpJLkotyC8q
ycxLjzY3MjEyjFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN
0VEw5HKhvRUAUEsDBBQAAgAIANioiEl//+LTaAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQJAAPoO0pY6DtKWHV4
CwABBPUBAAAEFAAAAHNJTVZQsFAwMrQyMLMysVBILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3
MjEyjFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKh
vRUAUEsDBBQAAgAIANmoiEmeQppzsgAAAC8BAAB/ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUCQAD6TtKWOk7
Slh1eAsAAQT1AQAABBQAAAC1jkFuwjAUBfec4h2gRXYIGCyEVMiGHSKLVopYJOaHWLW+K/tHrTh9
vekROgeYmYYcsEWlrdrYegf6zlqZZYiuD0jiEn3FJJ4fnanqSt+wb2iYHwcLz17evUwt5ewjn3mM
Fh+XEzgKiMVLoPsL9KL5/0T3J19qsyqCAk7Xt2OLQwFjmPN0Ib6XyJUC9ZlaEotO/ZjRrep6vR0G
o244lqlPKEx9Lg1+fVKKSDTCxZkFu8UvUEsDBBQAAgAIANmoiEl7r4ctaAAAAMYAAAB4ABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRzdGFydF9wcm9ncmVzcy1zdGRlcnIu
dHh0VVQJAAPpO0pY6TtKWHV4CwABBPUBAAAEFAAAAHNJTVZQsFAwMrQyMLMysVRILS82NDDXy8lP
TsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBW
yMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBBQAAgAIANmoiEkSx59KaAAAAMYAAABlABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAkAA+o7SljqO0pYdXgLAAEE
9QEAAAQUAAAAc0lNVlCwUDAytDIwszI1UEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKM
VbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQ
SwMEFAACAAgA2aiISRLHn0poAAAAxgAAAHAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPqO0pY6jtKWHV4CwABBPUBAAAEFAAAAHNJ
TVZQsFAwMrQyMLMyNVBILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlNKk23s1LI
zMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBBQAAgAIANqo
iEkSx59KaAAAAMYAAABkABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJy
LnR4dFVUCQAD6ztKWOs7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMjVQSC0vNjQw18vJ
T07MUSgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhw
VsjLL1FIzSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADaqIhJFpf6tGgAAADGAAAAbwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD6ztK
WOs7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMjVUSC0vNjQw18vJT07MUSgqSS5KLcgv
KsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJ
TdFRMORyob0VAFBLAwQUAAIACADaqIhJFpf6tGgAAADGAAAAZwAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVyci50eHRVVAkAA+w7SljsO0pYdXgLAAEE9QEAAAQUAAAA
c0lNVlCwUDAytDIwszI1VEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbez
UsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA
2qiISVthJG1oAAAAxgAAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19u
b2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+w7SljsO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAy
tDIwszI1UkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJ
CE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA26iISVthJG1o
AAAAxgAAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4
dFVUCQAD7TtKWO07Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMjVSSC0vNjQw18vJT07M
USgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjL
L1FIzSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADbqIhJXzFBk2gAAADGAAAAcwAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+07
SljtO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszI1VkgtLzY0MNfLyU9OzFEoKkkuSi3I
LyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJ
SU3RUTDkcqG9FQBQSwMEFAACAAgA26iISYCL6AVoAAAAxgAAAGoAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfdGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAAPuO0pY7jtKWHV4CwABBPUBAAAE
FAAAAHNJTVZQsFAwMrQyMLMyNVFILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlN
Kk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBBQA
AgAIANyoiEmAi+gFaAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1
cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPvO0pY7ztKWHV4CwABBPUBAAAEFAAAAHNJ
TVZQsFAwMrQyMLMyNVFILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MjEyjFWwcUlNKk23s1LI
zMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsDBAoAAAAAANio
iEkAAAAAAAAAAAAAAABaABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQJAAPn
O0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADYqIhJAAAAAAAAAAAAAAAAZAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAkAA+c7SlinPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBAoAAgAAANioiEmt+3teYwAAAGMAAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUCQAD5ztKWOc7
Slh1eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDY6NDcgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGlu
Z1s3MjQyNV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwg
MQpQSwMEFAACAAgA3KiISYTbjftoAAAAxgAAAHcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0
d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQAD8DtKWPA7Slh1eAsAAQT1
AQAABBQAAABzSU1WULBQMDK0MjCzMjVVSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NzIxMoxV
sHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORyob0VAFBL
AwQUAAIACADcqIhJyS1TImgAAADGAAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRf
ZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4dFVUCQAD8DtKWPA7Slh1eAsAAQT1AQAABBQAAABz
SU1WULBQMDK0MjCzMjVTSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NS
yMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADd
qIhJzX023GgAAADGAAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1ZV9kdXJp
bmdfcGF1c2Utc3RkZXJyLnR4dFVUCQAD8TtKWPE7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0
MjCzMjVXSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkI
Ti0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMORyob0VAFBLAwQKAAAAAADZqIhJAAAAAAAA
AAAAAAAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJj
ZS9VVAkAA+k7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAANioiEkiCPAwYwAAAGMAAACR
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNl
LW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD6DtKWOg7Slh1eAsAAQT1AQAA
BBQAAABEZWMgIDggMjE6MDY6NDggZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s3MjQyNV0gPERl
YnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMECgACAAAA
2KiISSII8DBjAAAAYwAAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVk
aWEtcmVzb3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD6DtK
WOg7Slh1eAsAAQT1AQAABBQAAABEZWMgIDggMjE6MDY6NDggZXdzMTA3LmxvY2FsIHJ0Y3JlcG9y
dGluZ1s3MjQyNV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxl
ZCwgMQpQSwMEFAACAAgA2aiISVai28itAAAAzAAAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3Rk
ZXJyLnR4dFVUCQAD6TtKWOk7Slh1eAsAAQT1AQAABBQAAAA1zs2KwjAUxfG9T3EeYJQ0WqtBBD82
7sQuHCgu2nhrg+FGklsc5unNxv/+8DuNLoxamsV6pvTqhk0Oh8tuX2ObQ+/HNJyJ744fF/LUJqpJ
DBr1V/Xral4Wpe1I3bD3wT6hMLQJHHj6TzEgUg8bRhboyZEssMKXA71ToapZnrUeUWykV4iSmabS
C13mK0fqxsfWwLGTq5OhppRc4BP3weD3fMiOgFiceLr/oJh8AFBLAwQUAAIACADdqIhJzX023GgA
AADGAAAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5
LXN0ZGVyci50eHRVVAkAA/E7SljxO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszI1V0gt
LzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PM
S8u3UogIcFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA3aiISTZecdRoAAAAxgAAAHoA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gt
c3RkZXJyLnR4dFVUCQAD8jtKWPI7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMrVQSC0v
NjQw18vJT07MUSgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xL
y7dSiAhwVsjLL1FIzSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADdqIhJNl5x1GgAAADGAAAAdgAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVy
ci50eHRVVAkAA/I7SljyO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszK1UEgtLzY0MNfL
yU9OzFEoKkkuSi3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogI
cFbIyy9RSM0rySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA3aiISTZecdRoAAAAxgAAAHoAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJy
LnR4dFVUCQAD8jtKWPI7Slh1eAsAAQT1AQAABBQAAABzSU1WULBQMDK0MjCzMrVQSC0vNjQw18vJ
T07MUSgqSS5KLcgvKsnMS482NzIxMoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhw
VsjLL1FIzSvJLMlJTdFRMORyob0VAFBLAwQUAAIACADgqIhJMg4UKmgAAADGAAAAcwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAkA
A/M7SljzO0pYdXgLAAEE9QEAAAQUAAAAc0lNVlCwUDAytDIwszK1VEgtLzY0MNfLyU9OzFEoKkku
Si3ILyrJzEuPNjcyMTKMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0r
ySzJSU3RUTDkcqG9FQBQSwMEFAACAAgA4KiISd/vMcLZAAAAwgIAAIQAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVy
ci50eHRVVAkAA/Q7Slj0O0pYdXgLAAEE9QEAAAQUAAAA1ZA/T8MwEMV3PsWNdEhtpwUSb1WrqgMD
ispUMbj2pbHqP6nt8Pk5FEbEhgS65T29d9Lv7lQLyR/lQ7tsm/oNDsfjS4e3CXOB3l4OpYxfdmdN
hxrtO3aYxxgybpVzZ6WvEtIcGBioT27OYc3XcI8pxQSVqNtVs4Ce9GdJMuaiVm6Iucim4ZwNxTuW
0atQrM4M/RmNQVPpGAqGwjwaqyp06Mll1sd4d/qZnexu8uPeBuVeu+dNoAN8LLgxhhCzBDULEPXT
ktMIWqMuTMn9CmQr/u+Dv2P/Gw/+AFBLAwQKAAAAAADZqIhJAAAAAAAAAAAAAAAAVQAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy90cmFjay9VVAkAA+k7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AAAAANmoiEkAAAAAAAAAAAAAAABjABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNr
LWVsZW1lbnQvVVQJAAPpO0pYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAADZqIhJo9RxO2MA
AABjAAAAggAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNr
LWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50eHRVVAkAA+k7SljpO0pYdXgLAAEE9QEAAAQUAAAARGVj
ICA4IDIxOjA2OjQ5IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdbNzI0MjVdIDxEZWJ1Zz46IGlu
aXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAgAAAOCoiEkdoGsc
YwAAAGMAAABjABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvXzAwOC1zdGRlcnIudHh0VVQJ
AAP0O0pY9DtKWHV4CwABBPUBAAAEFAAAAERlYyAgOCAyMTowNzowMCBld3MxMDcubG9jYWwgcnRj
cmVwb3J0aW5nWzcyNDIxXSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVu
dGl0bGVkLCAxClBLAwQKAAAAAADZqIhJAAAAAAAAAAAAAAAAUgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8t
ZWxlbWVudC9VVAkAA+k7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANmoiElaIR0C3gAA
ANACAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVy
ci50eHRVVAkAA+k7SljpO0pYdXgLAAEE9QEAAAQUAAAA1ZA/TwMxDMV3PoVHGK5Jrie4y1ZRoQ4M
6FSmiiFN3F6Ekxz5w+cn5ZhhQgJ5ec9+ln72oRWS38puWA2deIHdfv804lvBlOFkz7uc5y+7tWZE
jfYdR0xz8AnvFdFR6VcJcRkYmGq+umUOHe/gGmMMERrRDuv+Bk5VX0KSMQpa0RRSln3POZuyI5bQ
KZ+tTgzdEY1B0+jgM/rM8oSNKsaGBgndpZOivjp8j1/ttrj5wXpFz+PjxtcbXMi4MaZSJglqESDa
uxWvJepazUKJ9Guc6//1Zl+IfuL/E3/+BP0AUEsDBAoAAAAAAOCoiEkAAAAAAAAAAAAAAAA1ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9VVAkA
A/M7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAOCoiEkAAAAAAAAAAAAAAABHABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5w
dXQtZWxlbWVudC9VVAkAA/M7SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOCoiElKMVvV
agAAAGwAAABYABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudC9idXR0b24tc3RkZXJyLnR4dFVUCQAD8ztKWPM7Slh1
eAsAAQT1AQAABBQAAAAzMjA00zU00jWwUDAytDIwszK11DMwNFZIzs/VSywoyEnVC09N8s4sAVHO
+XklqXklei6pZak5+QW5QHa0uZGZmbGVkbGlgYWxYayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5q
iq2fPxcAUEsDBAoAAAAAAOGoiEkAAAAAAAAAAAAAAAA5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zZWxlY3RvcnMvVVQJAAP2O0pYpz5KWHV4CwABBPUB
AAAEFAAAAFBLAwQKAAAAAADhqIhJAAAAAAAAAAAAAAAASAAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2VsZWN0b3JzL3BzZXVkby1jbGFzc2VzL1VUCQAD
9jtKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA4aiISUvdTQNqAAAAbAAAAFoAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NlbGVjdG9ycy9wc2V1
ZG8tY2xhc3Nlcy9jaGVja2VkLXN0ZGVyci50eHRVVAkAA/Y7Slj2O0pYdXgLAAEE9QEAAAQUAAAA
MzIwNNM1NNI1sFAwMrQyMLcyMNKzNDBSSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkF
uUB2tLmRibmFlZGxhZGJqWWsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAA
AADuqIhJAAAAAAAAAAAAAAAALQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL1VUCQADEDxKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA5aiISQyU4Xes
AAAAagEAAFcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1hY3RpdmVzb3VyY2VidWZmZXJzLXN0ZGVyci50eHRVVAkAA/07Slj9O0pYdXgL
AAEE9QEAAAQUAAAAvY6xDoIwFEV3v+L9gKStpCibymJ00+hgHB7wwCalJW3R1K+37k4OTvfmJif3
CMblnIs5W4LgJStKtsok49DYIcNx1JRdqN6r8ImtNYFMyCp6kLbjkPq1ELLIS5FzucjFDXa9sU6Z
PvEmOKtPaqAaPYGnAHWERqtEQU0NTmldn484pJPN1HXkKuVHjfGAkRw80QO2LbUQLCD4aJq7s0a9
yM3EN2n5i3TKf0m/AVBLAwQUAAIACADlqIhJPEW5t8IAAACJAwAAWAAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZl
ci1tb2RlLXN0ZGVyci50eHRVVAkAA/47Slj+O0pYdXgLAAEE9QEAAAQUAAAA1ZK9CgIxEIR7n2Jf
wCMJd4le508j2ilaiMXe3aqBXHIkUTmf3tjbaKFYzTAw7MewgnE55GLIRiB4yVTJxplUDGrXZth1
hrIdVUsdnzJzNpKN2ZyuZFzXJr9XQqq8FDmXSQ+wOFnntT2lvo3emY1uqcJAEChC1UNtdGpBRTVe
UjrZrrFNR6aX45H8XIfOYL/CnjzcMAA2DTUQHSCE3tZn76y+kx+Il9D8A+iCs99C5/+4dPE2NMtH
svgttPpo6a+9xwNQSwMEFAACAAgA5aiISS02NkieAAAAtQAAAGQAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hdHRhY2gtc3RvcHMtZGVs
YXlpbmctbG9hZC1ldmVudC1zdGRlcnIudHh0VVQJAAP+O0pY/jtKWHV4CwABBPUBAAAEFAAAABWN
vQ6CMBRGd5/ivgANrVgMm8pidNPoYBwucMEm/UtbNPj01uk7OcnJJ0ouCy6KcguCN2Xd8JJt1hJ6
Zxh6r4ndqTup9J+Ds4lsYi29STtvMj9qIeuqERWXsuZPOE7WBWWn3NsUnL4qQx1GgkgJugV6rXIF
HfU4Z7u7XdDkk/08jhRaFb3G5YwLBfhgBBwGGiA5QIiL7V/BWfWlsPoBUEsDBBQAAgAIAOWoiEmT
Pq/nKAEAANwCAABMABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtYXZ0cmFja3Mtc3RkZXJyLnR4dFVUCQAD/jtKWP47Slh1eAsAAQT1AQAA
BBQAAADFz8FOwzAMBuD7nsIvsLYJXYZ6g46xiU2atg4OiEOaeFukNi5JOlSenhYhISFOO8Dptyxb
/swTJsaMj5Nr4CxLphlLIiGuQFEdyaapMHrC8sGEIXKyAW2IZnjGipq6r5+nXEzTjKdMTFjyAsuj
JWfssd+3wVFVmBpL6RE8Big7UJXpt6BEJdu+e/O4k3V/5LY9HNDNjG8q2a1khw7epAepNWoIBBJ8
Z9XJkTXv6Eb8V3R6AbrP/0WLi9Dsr9DxjlqnMJfqhHFODteojfyuxmwieMTTJN44ChS6Bn08N8dF
UWyGzD8VC2l1hTpvfaB6v131s2ej0UXqi/lzIHcoA27RN2Q9zowKc3L3GLb42qIPGeTUVhosheH9
M7oA+2I5+NfL9R0MjAxGH1BLAwQUAAIACADlqIhJLxh5dp4AAAC1AAAATAAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWJ1ZmZlcmVkLXN0
ZGVyci50eHRVVAkAA/47Slj+O0pYdXgLAAEE9QEAAAQUAAAAFY2xDoIwFEV3v+L9AIQW0ho2lcXo
ptHBODzggU1K27RFU7/eOt2Tk5xcXjFRMF5UW+CsrWTLqlJsaxjsUqJzmso79ScV/3OwJpKJZUdv
0tYtmR+SC9m0vGFCyPoJx9lYr8ycexO91Ve1UI+BIFCEPsGgVa6gpwHXbHe3Cy75ZL9OE/lOBacx
nTGRhw8GwHGkEaIFhJDM8PLWqC/5zQ9QSwMEFAACAAgA5aiISUUkQOq7AAAAiQMAAEoAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jbG9z
ZWQtc3RkZXJyLnR4dFVUCQAD/jtKWP47Slh1eAsAAQT1AQAABBQAAADV0D0OwjAMBeCdU/gCrZJQ
taUbPwuCDQQDYnBbFyKlSZUEUDg9YWdiKUy2LD29TxaM5wkXCStB8IoVFWdpKRg0pk9xGBSlR6o3
0r/H0mhP2qcrupMyQx/3UyHyIqtExvO84GdYX7SxUl9iXntr1F72VKMjcOShDtAoGVNQU4O3eJ0f
dtjHksWt68iupBsUhi0GsvBAB9i21II3gOCCbq7WaPkkOxEf0dlXaPaP6JE/XX6BnmZiXPTst9Ev
UEsDBBQAAgAIAOeoiElmcV2qKwEAAMgDAABfABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYS1iaXRyYXRl
LXN0ZGVyci50eHRVVAkAAwE8SlgBPEpYdXgLAAEE9QEAAAQUAAAA5ZHNagIxEMfvPsXc1IPuRm0E
oRe3SntYEKQnEYnJrAazmWU229a3bxbRFil9AU/zPfx/M5uRmKXTmRDDdDrdQsHqkCtvC3Jmt2rq
4/wcsIbaHrxyDg0g8/NAyHQioXda2lvzgpl49+7xq0Id0Lx5G15UUH3orVGTN9AtwrnqggpUAnpN
jQ/IaPoxA8maGtaYKX3EJCPGHI1VP95APMnRcDRJkxVToLgI62RJXKrwqrxxyHWS04fFpJXUOssI
UqIPV31DDc56BCHHaWdzgxapeERo+YDQIn46y9eqrBzOm6JAziJoXL2IWi7pO3oBvWgi10btiYP1
B3BEFaBidwbTIARqG4njNSOrjqN7pU/bf0h38e4lfhKf6r+gLzOXUkv4W+59fAUdSznufANQSwME
FAACAAgA6KiISW/2SEEtAQAAyAMAAGYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC1hdi1hdWRpby1iaXRy
YXRlLXN0ZGVyci50eHRVVAkAAwM8SlgDPEpYdXgLAAEE9QEAAAQUAAAA5dDBbsIwDADQO1/h2+AA
bWnJJqRd6EDboRIS2gkhFBIXItK4ctNt/P1SIcaEpv0ApziObfllPU6m8eM0SUdZ+rSBkuW+kM6U
ZPV22TaH2cljA43ZO2ktakDm52Ei4kxA/7gwP8VzZuLtu8OvGpVH/eaMf5FeDqC/QkVOw0PpT/UD
SE8VoFPUOo+MehAyEK2oZYW5VAeMcmIsUBt5jYbJRIxH4yyOlkyewiBsogVxJf2rdNoiN1FBHwaj
bqUuWARIhc5f9hspsMYhJCKNe+srOhN3iJ5kd4gW6QbyYiWr2uKsLUvkPEDD6HnY5Zy+0SfQD0dw
reWO2Bu3B0tUA0q2J9AtgqeukDj8ZrCq0LqT6rj5R7oN/17hJ/Gx+Qt97jk/dcLf697eL9BUiLT3
DVBLAwQUAAIACADpqIhJ7pKdS6IBAAB9BAAAZgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWF2LXZpZGVv
LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADBjxKWAY8Slh1eAsAAQT1AQAABBQAAADlk91uGjEQhe/z
FHMXcsH+QQxF6kUDQY1apEj05wIhNOsdwMLrWdnepJun76xQ0jSq+gK58njWZ/Z8R5oiy9UwL4bZ
FIp8lk1m+XWi1AQ01wk2jaXkJ5VfTOyPObtILiYLeiDLTS31ZlKoyXhWjHMRjbdwd3DsjTuI3kXP
9pupqcRAEChC2YG2RlRQksZWup9+rLGWn9y0+z35hQmNxe4rduThEQNgVVEFkQEhdE4fPTvzRP5i
82J1qvIt7D0eVujMnm21u2/D8aaLFCCYg0NrZQJ5/3GYq2ysYHBampfHt96z33139KshHam6cyYu
MOIVDNYkBBVc7mPXXAJGroGc5lYS8FRdSQfSNbde0xz1kdI5e1pRZfBPNcyvVZEU4yy99xxZBlFI
l+xrjJ/RVZZ8SFf8YCjtLfXFUkD6VJ/9JRqscQS5GmV/QX94h9CT6TuEnqotzFevl2QuoDL6Vryc
22/ocxjIIVwbLNnHfhctcwOE3nZQtdTvE/VxSJrCqkVaoj5t/0O6k9xremR/Cv+CPmvOn3rC13bf
3p9BR0qNLn4DUEsDBBQAAgAIAOqoiElMnAS9TQEAAJQDAABfABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQt
di1iaXRyYXRlLXN0ZGVyci50eHRVVAkAAwg8SlgIPEpYdXgLAAEE9QEAAAQUAAAA5ZDNTmMxDIX3
PIV3wKL3J7Rpp9IsoJ0KxFSqVJhZIITcxLeNJje+cnIZLk9PuuDnHVj5yPKxz2dV1XpUq1E1A1XP
q+m8nhXVjwkYbgvsOk/FX9rdunQsCw6JQiqW9Eyeuzbrh6nS0/FcjWutpxePcLMPLC7ssz8kYX/n
WtphJIiUYDeA8S67YEcG+9y9/LPFNh+56puGZOli53H4jQMJ/McIaC1ZSAwIcQjmIBzcK8nJw0dU
NZk8QiO4X2NwDXv7tOnj4WpIFCG6fUDv8wYS+TmqdTXWcPZv5T6Gf4mwPN0HeunIJLI3waUlJjyH
sy1lAgunTRq6U8DELVAw3OcPCNnz3IFyy70YWqA5ULlgoTVZh59qVE+0KtS4KjfCifMiiuWKpcV0
jcF6kliu+dlReYx0FKsMcvzqe77CgHeBoNYX1Vdorb4j9Oy7QL8BUEsDBBQAAgAIAOuoiEn6+8ud
SwEAAJQDAABhABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1mcmFtZXJhdGUtc3RkZXJyLnR4dFVUCQAD
CjxKWAo8Slh1eAsAAQT1AQAABBQAAADlkEFuGzEMRfc9BXdJFp6RFFcuDHTR2DUaJAYCOG0XQRDQ
EscWqhEHlCbt9PSRF0nRM2TFD4Kf/I9GaTvTZqY+gdFLtVga1RhtwXHf4DBEan7S/iaUU1lxKpRK
s6Znijz0VT8sjF3Ml2auba2PcH1ILCEdqj8V4XgfetpjJshUYD+Bi6G6YE8Ox9r98mOHfT1yNXYd
yTrkIeJ0ixMJ/MYM6D15KAwIeUruKJzCX5IPD29RL5V6hE7wsMUUOo7+6W7Mx6upUIYcDgljrBtI
5PNMWzW3cP5rE96Gv4qwPH1P9GcgV8hfp1DWWPACzndUCTycdWUazgAL90DJ8Vg/IOQvagfaHY/i
aIXuSO2KhbbkA/5TM/3RmsbMVXsnXLguotxuWHos3zD5SJLbLT8Hak+RTmJTQU5ffc3XOIghEWh7
qf6Dtu8QWpv3Av0CUEsDBBQAAgAIAOyoiEngrSI1TQEAAJQDAABhABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1t
cDQtdi1mcmFtZXNpemUtc3RkZXJyLnR4dFVUCQADDDxKWAw8Slh1eAsAAQT1AQAABBQAAADlkMtu
GkEQRff5itrZLJgXkx4HKYsARrESJEvEyQIhVHTXQCs9XaPqHifjr3ezMFG+wau6KtXjnlsVpZqW
1bS4g6qcF828qrJK1aC5y7DvHWW/6PjNxktZso/kY7aiZ3Lcd0nvmko19byqS6Wa2R4eTp7F+lPa
91HY/bAdHTEQBIpwHEE7m7bgSBqH1P3yc4tderIY2pZkZUPvcPyOIwn8wQBoDBmIDAhh9Pos7O0L
yYfd1ersU7GHVvC0QW9bdubwOITzYowUINiTR+fSBRL5PC1VUSu4/b221+F7EZbDk6e/PelI5sHb
uMKIE7jdUiIwcNPGsb8BjNwBec1DSkDITFIH8i0PommJ+kz5koU2ZCz+U9Pyo0ph1kX+KBw5HaKQ
r1k6jF/RG0cS8g0/W8ovli5inUAuqb75yzQ46wlKNSv+g27eH3Rd1O8F+hVQSwMEFAACAAgA7KiI
SXh3j6YoAQAA5AIAAEoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1kZXRhY2gtc3RkZXJyLnR4dFVUCQADDDxKWAw8Slh1eAsAAQT1AQAA
BBQAAADtkE9Lw0AQxe/9FPMFmj/bNCm9aWptsYVSUz2Ih83utF1IduLupBI/vYkIgngQz57mMbzH
/OaJKE7HsRhHMxDxPMrmIgkm0wQU1YFsmgqDRyzvDA8jJ8toOVjgBStq6l4/ZSLNkj4Uz7JIPMP6
ZMkZe+rzlh1VhamxlB7BI0PZgapMn4ISlWz77dXDvaz7I9ft8YhuYXxTyW4jO3TwKj1IrVEDE0jw
nVVnR9a8oRuF99Q6hblUZwxzcrhFbeSXGsfTVAQiicKdIybuGvTh0pxWRbEbZv5BsZJWV6jz1jPV
h/2m916MRheoT8zvhtyhZNyjb8h6XBjFS3K3yHt8adHzHHJqKw2WeHj/go7hUKwH/u16ewMDxhxG
4ofGk780nqbZ5L/xXzT+DlBLAwQUAAIACADtqIhJd8R74RwBAACeAQAASAAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJy
LnR4dFVUCQADDjxKWA48Slh1eAsAAQT1AQAABBQAAABdTk1PwkAQvfMr5ggHSrtAISQetEhilBNG
D4SY6XZaNmx3mulWUn+9SzBKPL2ZN/M+VJyk40SN4yWoZBUvVmoeJcsENNcRNo2l6J3yZ+MvkLHz
5Hy0pk+y3NRh3i9Uupit1CxJ00V8gKfKsRhXBb3zwvbV1JRjS9CSh7wHbU1QQU4au8Dev+2wDiEP
XVmSrE3bWOxfsCeBM7aARUEFeAaEtnf6KOzMF8lg/1t1ulQHyLa3Lhlau2F5RH280tCaygUyWJHI
XQLDACMY7jFn8ZeylrkBQrE9FB1dAsMHC5TCNeggzVGfDiNAD5Mdd6IpC+40yVhoS4XBj1KwpjPL
qf0jx8k8VZGaxT+a62myMdVt3f97pMEaRzBN0+ngG1BLAwQUAAIACADtqIhJNDAnYx0BAACpAwAA
SwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXByZWxvYWQtc3RkZXJyLnR4dFVUCQADDjxKWA48Slh1eAsAAQT1AQAABBQAAADtj09PwkAQ
xe9+ivkC9M8KrfSmRYQICYGiB+NhuzvAJu1O3Z1i6qe3NSQmHj1zei+T9zK/J6I4GcViFN2BiLMo
zUQSTKZTUFQHsmkqDF6xfDY8SE6W0XIwwzNW1NS9f0tFko4zMY6TJL19h+XRkjP22PctO6oKU2Mp
PYJHhrIDVZm+BSUq2fbX+5edrPsnD+3hgG5mfFPJbiU7dPApPUitUQMTSPCdVSdH1nyhuwl31DqF
uVQnDHNyuEZt5K8bxZNEBGIchRtHTNw16MO5OS6KYjNo/kOxkFZXqPPWM9X77arPno1GF6gL5t9A
7lAybtE3ZD3OjOI5uSfkLX606DmDnNpKgyUe5p/RMeyL5cC/Xq4fYcDI4Ap/hf8P/DdQSwMEFAAC
AAgA7qiISWsG7N0hAQAAhwIAAEoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUCQADDzxKWA88Slh1eAsA
AQT1AQAABBQAAADlT81OwkAQvvsUc4QDpd1Ca0g8aJHEKCeMHggx0+20bNjuNNNFUp/eJRolvoKn
mflmvp9RcZJNEjWJr0ElizhfqDxKkww0txF2naXolcpH48+lYOfJ+WhJ72S5a0O/zVWWzxZqlmRZ
nu7goXEsxjWB77ywfTYtldgT9OShHEBbE1hQksZjQG9fNtgGk7tjXZMsTd9ZHJ5wIIET9oBVRRV4
BoR+cHov7MwHydX2J2oez3dQrC9VCrR2xXKPev8FQ28aF8AgRSI3CYxCGcNoiyWLP4e1zB0Qih2g
OtLZMFywQC3cgg7UEvVhNwb0MN3wUTQVQZ2mBQutqTL4Vgu2dGI59L/gJJlnKlKz+JvztZquTHMZ
9+8cabDGEaRZlv6fRz8BUEsDBBQAAgAIAO6oiEmbsNNjwgAAAD4EAABUABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVy
bGlzdC1zdGRlcnIudHh0VVQJAAMQPEpYEDxKWHV4CwABBPUBAAAEFAAAANWTvQ7CMAyEd57CL0DV
mNJAN34WBBsIBsTgti5ESpMqCaDy9ISdiQWYzjrp5E+WD1ORDwUO0wmgKFJZoEykkFDZNqGu05wc
uFyr8JKFNYFNSJZ8Y227Ns5HibnMCsxEnsv0BKuzsU6Zc8yb4KzeqZZL8gyeA5Q9VFrFFJRc0TW6
s/2W2rhkfm0adkvlO039hnp2cCcPVNdcQ7BA4HtTXZw16sFugO+gET+AHmX4XejPLi2+Cj3Cf4Se
/uF7ZOPfLuITUEsDBAoAAAAAAO6oiEkAAAAAAAAAAAAAAAAKABwAaW5zcGVjdG9yL1VUCQADEDxK
WKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAYamISQAAAAAAAAAAAAAAABMAHABpbnNwZWN0
b3IvZGVidWdnZXIvVVQJAAPmPEpYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABhqYhJAAAA
AAAAAAAAAAAAHwAcAGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9VVAkAA+Y8SlinPkpY
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAGGpiEk/zLO7fgAAAIcAAABLABwAaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1hY3R1
YWwudHh0VVQJAAPmPEpY5jxKWHV4CwABBPUBAAAEFAAAACXGywrCMBBG4X2f4odudGHAIgjuxKRQ
lLZYL+u0nUogyQQZFd9exc35Tt5WGuf6aLq2qbvqYrDAwEHZlDypK/V7Jz92HIWiKE1P8pzC9zFL
bsS6WBXLeVZuq8MGJxdoBD8EL+vExRsmviOyuOmtORKE0RMG6z2NWZabpvznA1BLAwQUAAIACABh
qYhJZfv+M4EbAACYyAAASQAcAGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZl
ZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtZGlmZi50eHRVVAkAA+Y8SljmPEpYdXgLAAEE9QEA
AAQUAAAA3V3LjtxGlt3rKwizAZcsRRWDb5Ygj19ywxi3bFi2e2EY46wqSkp3KrOQmSWVulj72cx+
ZjX/Nl8wnzBkRDJuxL3BN1M2RoAlM8hknHNf8WRcxphz9vNmdfMm3519tdgvzp79/cXZ3/OLf13u
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
I4MNHcODI1PB8dBsKz00bNxoiI7yQp2I+vK7i9/tGQ8yvHMjg50bQ01Wom/YuZHFSPhdSOUN1fd/
yc+d9q01Gd7EAUcIj7NZyeewgYPgFqTguOABwOV5I17TME9LBn1vOV8/I4foeB5k1h5oDpIi5Fi0
gBV5iL3GGQ+EVhbBHnBffx9JDm3NK03yvnrwid50q5EZl73G6Q6NTzGKkCwJ+0xxle8lugxBl7OZ
kOSsfeXTTcJMHm7RekS1DltQg3PTubSk1+3yCInuI0ixPc3QpBDCFsVHFsUP5iRvpW0ebEudnlhS
p7cbk00NKGm6iVlwTFpUmlL5ggmGh1cZGbUbfZhknIRjhAfQadMAI2yQNlOLNvvRkSW8n8WSaMwh
6e0s1iOZaiG6FfrTTzF0U8lwcNW9AznDjdbxkNvcnjce51iHo9rHm4+WPt6uS67lnO6BepazlX9a
Ly83V3mfk5U942BlIe8b+eufF9vl4mKVV2fXQ3S6U+2zo1JhoB+82G/Ln3z0fLNmKbtY7p2P/+ff
/+tj5/L1Yru43JcUPnpinH+oveLFzXa7ebXY598vltvDe5692fy+dD7+3//+z/+wvyRowNGUDA+P
Wr3zIDSkIBTYLoXi/4MYAnQAGTrXuoctqGkuhzeZz59NDPKppiiB0zmgo157ugecZGszpX4SgdNu
iz9UJDi7UTBOJDO4CpyYq0t1qES083X7i+TBI/fZd18f/v4/UEsDBBQAAgAIAGGpiEk/bl/1WhoA
AG69AABNABwAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxs
LXBhdXNlLWxvY2F0aW9ucy1leHBlY3RlZC50eHRVVAkAA+Y8SljmPEpYdXgLAAEE9QEAAAQUAAAA
1V1bj9xGdn7XryDMBTwyXDKreG9BDryOs1hg11lY3rwYRtwzamna2+oWunuk0Q7nPS95T57y3/IL
8hNC1iFPVZ0q3tlyIsDj7iK7+H3nVlfW+fZ2c/O37f6Nt97tvOPmdNi937zyro+b9d/eHbb7s7c7
3KzP28P+5G333to73Ry3787Pnjx58uKF98Pdfl/99rw5nb3T3fa8WXn/uLm+e/Nmc3zWVPZ7rOvZ
q7u3777Z7f7UVPmEMbOOm/VpZBXP/rDZb47r3ZMnf/z+5Xc//PjH7//gffPjygtWwZO/fPPXl9+9
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
ZWN0b3IvcGFnZS9VVAkAAxA8SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAO6oiElD9DIG
rgAAAGoBAAAhABwAaW5zcGVjdG9yL3BhZ2UvYXJjaGl2ZS1zdGRlcnIudHh0VVQJAAMQPEpYEDxK
WHV4CwABBPUBAAAEFAAAAL2OsQ6CMBRFd7/i/QCEFgRkU1mMbhodjMMDHtiktE1bNPj11t3Fxene
3OTkHp6wPGI8SkrgrEqKipcxTxNo9RijMZLiCzV74T+x1cqT8nFND5LajKFfC54XWcUztmIsvcFu
UNoKNQReeavlSYzUoCNw5KGZoZUiUNBQi1NY1+cjjuFkM/U92Vo4I3E+4EwWnugAu4468BoQ3Kza
u9VKvMgu+Ffp5e/SeV6wf0m/AVBLAwQKAAAAAADxqIhJAAAAAAAAAAAAAAAABwAcAGpxdWVyeS9V
VAkAAxY8SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPGoiElpjJRdagAAAGwAAAAcABwA
anF1ZXJ5L2F0dHJpYnV0ZXMtc3RkZXJyLnR4dFVUCQADFjxKWBY8Slh1eAsAAQT1AQAABBQAAAAz
MjA00zU00jWwUDAytDIwtzI20TM0MFVIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5
QHa0uYmBkYmVkYmRgYGJYayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAA
AE2piEkAAAAAAAAAAAAAAAAGABwAbWVkaWEvVVQJAAPCPEpYpz5KWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAD4qIhJxvUfUXkAAACuAAAAHwAcAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50
eHRVVAkAAyM8SlgjPEpYdXgLAAEE9QEAAAQUAAAAlc0xCgIxEEbhfk/xH0BCsgQiQWzcxk6wUBCL
NY4xEGYkGfH6rkewfcX3JkrAGqOLNkQfQJ/ubDBV0lzRNDV6SdPC+RK8Hf0Vmz0/ZBtRJeclo+vc
tBtjhulvaqLbOy9W4aKnos8j9V6Ef4eI82EHFgWxFq10X8ENX1BLAwQKAAAAAAACqYhJAAAAAAAA
AAAAAAAAEwAcAG1lZGlhL21lZGlhLXNvdXJjZS9VVAkAAzM8SlinPkpYdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAPyoiElV4j3MxgAAAPUAAAA+ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1hYm9ydC1yZXNldHMtcGFyc2VyLXN0ZGVyci50eHRVVAkAAyw8SlgsPEpYdXgLAAEE9QEA
AAQUAAAARY9BSwMxEIXv/oq5tT10k6ztigUvVhc9LBSKJ5EyJLNtMDtTJlmx/97tQb19PB6P773X
bmPvNuumunf2A3rFY4cce0nhsBvz6fFSKEOOR8aUKACpPixdY1cNzD/b+Fd+VhU9vDF9n8kXCq8c
yxMWXMB8T144wKwvl/MMsMgAxF5GLqQUFlMCZi+jetqiP5HZilJHIeI/Ld26qat6Zc1Opcg0RNm0
ogOWF+SQSLPp5CuSuSpdoZ2ODMTl16/ykCITuObW3vwAUEsDBBQAAgAIAP2oiEn8bbvbngAAALUA
AAA6ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hZGRzb3VyY2VidWZmZXItc3Rk
ZXJyLnR4dFVUCQADLTxKWC08Slh1eAsAAQT1AQAABBQAAAAVjbEOgjAURXe/4v0ATVsRhE1lMbpp
dDAOD3hgk9KStmjq11une3KSkyu5KDIhM74FKWpe1puCVWsBnZ0YzrMmdqf2pMJ/DtYEMoE19CZt
5ynxo8x5JWuZS5nz/AnH0VinzJh6E5zVVzVRi57AU4A2QqdVqqClDpdkd7cLTulkvwwDuUb5WWM8
YyQHH/SAfU89BAsIPpru5axRX3KrH1BLAwQUAAIACAAAqYhJ4pAfnp4AAAC1AAAANwAcAG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcmVtb3ZlLWNyYXNoLXN0ZGVyci50eHRVVAkAAy88
SlgvPEpYdXgLAAEE9QEAAAQUAAAAFY07DsIwEAV7TrEXILJXgXw6IA2CDgQFolgnm2DJsSPbAYXT
Y6o3Gmn0UMjtWuJalICyFkW9qTIhEFo3ZjRNhrM7q5OO/zk4G9nGrOE3GzeNiR9FLiqsMUcsZfmE
42Cd13ZIvY3emaseWVFgCBxBLdAanSpQ3NKc7O52oTGd7Oe+Z9/oMBlazrSwhw8FoK7jDqIDgrDY
9uWd1V/2qx9QSwMEFAACAAgAAKmISRETesGeAAAAtQAAAEAAHABtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXNhbXBsZS13cm9uZy10cmFjay1pZC1zdGRlcnIudHh0VVQJAAMvPEpYLzxK
WHV4CwABBPUBAAAEFAAAABWNsQ7CIBRFd7/i/YANkGppN7WL0U2jg3F4bV8rCQUCVINfL0735CQn
VzC+XXOxZhIEb1jVbOpCyBJ6OxfonKbiTt1Jxf8crIlkYtHSm7R1c+ZHVbJaNKIUQnL5hONkrFdm
yr2J3uqrmqnDQBAoQpeg1ypX0FGPS7a72wXnfLJfxpF8q4LTmM6YyMMHA+Aw0ADRAkJIpn95a9SX
/OoHUEsDBBQAAgAIAACpiElJ+OQ2PAEAAKoBAAA8ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS1zZWVrLWRldGFjaC1jcmFzaC1zdGRlcnIudHh0VVQJAAMvPEpYLzxKWHV4CwABBPUB
AAAEFAAAAEVQy07DQAy88xW+tRyaFyHQShygpQJBJaTyOFQVcnaddsVmHXk3hfD1bA/AyaORZzzj
TZHPsovZ+TSpsmoLjeBuhc40bPX7U+/3N0MgD97sHFpLGkjkapJXWVnB+GNp/pZvRVjeXxx9daQC
6XtnwgIDnsJ4TYqdhlEThm4EGLgFcop7F0hIn0YG0jX3omiOak/pnIVWpA3+o0l+XhVJUWbpk3Dg
aEQ+XbK0GO7QaUvi0xUfDKXHSEewjEVacuE3X6LAGkeQV2fZSZHl1SQvJtkl/NfPc1DcJth1lpI3
qh9MOI45x5wuJAs6kOXu6Lm5KLNpMSvKIiYqt3C/cyzG7aLeBWH7bFqq0RN4ClAPoKyJKqhJYR/Z
69c1tvHITd80JAvjO4vDIw4k8IkeUOv458CA4Aen9sLOfJOc/ABQSwMEFAACAAgAAqmISbiRStOf
AAAAtQAAADUAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0cHAtY3Jhc2gtc3Rk
ZXJyLnR4dFVUCQADMzxKWDM8Slh1eAsAAQT1AQAABBQAAAAVjb0OgjAURnef4r4ATSnI36ayGN00
OhiHC1ywSWlJWzT16a3Td3KSk0/wtEhSkfAKRNrwquEZ2+Yl9GZmuCyK2J26k/T/ORjtSXvW0puU
WebIjzLntWhELkSdFU84TtpYqafYa2+NusqZOnQEjjx0AXolYwUd9bhGu7tdcI4n+3UcybbSLQrD
GQNZ+KADHAYawBtAcEH3L2u0/JLd/ABQSwMEFAACAAgADKmISdk+D/JoAAAAxgAAACgAHABtZWRp
YS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQJAANHPEpYRzxKWHV4CwABBPUB
AAAEFAAAAHNJTVZQsFAwMrQysLAyMlZILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzY3MTAyiVWw
cUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5HKhvRUAUEsD
BAoAAAAAAE2piEkAAAAAAAAAAAAAAAAMABwAbWVkaWEvdHJhY2svVVQJAAPCPEpYpz5KWHV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACABNqYhJiDVoy34AAACHAAAAKgAcAG1lZGlhL3RyYWNrL3RyYWNr
LWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4dFVUCQADwjxKWMI8Slh1eAsAAQT1AQAABBQAAAAlxs0K
gkAUhuG9V/GBm1okFEHRLpoRpFDJftbqHOPAOGeIU9HdV7R5nzetC4NzebRNXZVNcbGYoZcxa2P0
lF2p27P+2ElQCpoZepKXOH4fk8gOq8VyPZ8m+bY4bHDikRzkoXi1rBxuGOSOIMrD20ggqKAj9K33
5JIktVX+zwdQSwMEFAACAAgATamISXG2iKQBAgAAwwMAACgAHABtZWRpYS90cmFjay90cmFjay1p
bi1iYW5kLXN0eWxlLWRpZmYudHh0VVQJAAPCPEpYwjxKWHV4CwABBPUBAAAEFAAAALVSXWvbQBB8
169YyIOlyCfFoaYfYHBryRASZGMrTqH04SxtpMOnO6FbJfa/70l2jJuWvhXErridm52dPcYYhBst
2wpNGHHiYfy0Dp9wey/olL61QubhCiVyg6HkB90SIzTEGjStJBNWmAseUsOz3TEyodiWq5wZOkhk
uK8xI8wD2pPj+/7/78gzarns+02nwEbD0WfwR8MxTKeOf7W8i+AxWcXr5SJZ321iYJDpKuB1LTE4
SujSTCtCRUGELyh1Xdl/cGuRw8fbD59GnuPPv949fIFUWDVgJcIrFyRUAc+6AaVJPB8irRBIwxYh
41Ji7oDDUjsJUMkJerFd3dYga9GAMNDJEJYx001jbZOHwGHxJk5SN+Oqtm5Q2ei2KD2HOez6GmYl
ZjsQyvbmEk4+QO+KbcCtbw5bPSauUF0h7c5HMIEXkaMOCPfUH5kfNz8tY/x9Gc/SOAL3fT2QqAoq
YTKBwWjgweL+En1JHkiuipYX2GNR/Ru8E1ZtB8x4TUIrc4K/lxxUOreMMDClfrUuD7yzLaXth97x
ylF2Z5PrnREGcYf5m2G9/1lr3VVdtqvRUjfmUmGBNNNV3dpHu+525FpYJExHG0vsXoIX9Ld65U2x
dW/H4yG8Be+Pkf9GmNiBvGBrhyvsQlU++43wZgjdd6ZKIljMIY3XqR3Dv4oX81P8BVBLAwQUAAIA
CABNqYhJDPrk6jYBAAAzAgAALAAcAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtZXhw
ZWN0ZWQudHh0VVQJAAPCPEpYwjxKWHV4CwABBPUBAAAEFAAAAH1RQWrDMBC86xV7sxVSkxRyzMlx
LwWnNG4plB5ka5FEFMlY67b5fSUHQxpKQUgwOzuanWUNBgLSgiDQ2SKQB2EtdCMGMAFE31uDEjo/
DNiRPReseq3qJu+E6604kx78qDRnbLGAUmN3BOMMGWHje9cKJ4EGEdFAgjCw55c6Ny7hTYLXsIVP
I9EXhN80QeF99cFZ9fZUlU21g/y2XFh0ijRst5CtMw77xyvytXRhhVOjUDhR0f3LPZroNPE60ZPx
LlzYt3aLk5dRD7Kg/ZdxKuNzHDp+hnxquDhO6eR8rgfEI8pLTFPk3RgDdenFGK71Q7iyppBKf+pH
QnlIW8kja2dCkqwsnmIfL6amyfKg2vx+s1nCfPHbUf/Sq+MkvGjjVCqu0Mnyl95qCenMSvUO9g/Q
VIeGsR9QSwMEFAACAAgATamISY7Yn1k9CQAA3CYAADAAHABtZWRpYS90cmFjay90cmFjay1pbi1i
YW5kLXN0eWxlLXByZXR0eS1kaWZmLmh0bWxVVAkAA8I8SljCPEpYdXgLAAEE9QEAAAQUAAAAzVpr
b9tGFv3uXzGIsbUdmJRkS44lPxaNJWODdp0gdtMFFovFkByKEw85XM7Ij7T73/fOiyIpUnYAqd2m
ESVyHue+zrlD5DyRKbvcOU8IjuCSEolRmOBCEHmxt5Cxd7oHt4V8ZuRyZ8Jodn+IJg9UUEki9NsO
gv8keZJeREJeYEl5NkEZz8iZfhTwIiKFF3ApeTpBg/wJRfCdRGc7/90xy9lFQs54MUG7/eOxfuZf
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
FFD27Nn/vmx/pSXHG7Bk9mV2c7cf4kzJo0xAdebJwVbQDjeAdivARhsA9vYtukpIeA+9HhAGZsiK
A9JSgbQEi62gP9kA+s+/3OzTTOG9U3AH6AJauohw/c5S3xL/7P9rO2nxbhNJ/I9Ps6u72RTtN2H7
jGRzmaCLC/TDLhx0BvrzAH38aSvGnG7UmGpIfIaz+UI1184Ukm3XlvH2bLmnUBnOjhDn+v3Udq0Z
9LdQJ34KTSqydoiEP0KrYMzYjg2DzRF+AulEtgTzaEOuNsWshGn/YEtQNyehgpB7Em0J5v+tdg42
JJ66oQoX0C5l6krMGXU7ijk42SizzYm84mm+kCS6Vc3gPsCfmtcNM0bUsefA19aUjFfMg/2j0egQ
uY+DLXPfu60bfANEeOAvX1xcrRjcP0Tq/22buhEFvpmij9fobnZ7tx2Q4y2U88oR7M9+hTBc8wph
9vH6Tzz/j74P2fccbhsX/VrqvGf+Udv/AFBLAwQUAAIACABNqYhJ3TL/aFwAAABeAAAAKgAcAG1l
ZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtc3RkZXJyLnR4dFVUCQADwjxKWMI8Slh1eAsA
AQT1AQAABBQAAAALT8wsUcjPU8jLL8lMq3TJz0tVKMnMTU1RyC8t0VEoKMpPTi0uVkjOz9VLLCjI
SdULT03yziwBUc75eSWpeSV6LqllqTn5BblAtkJBZoqCrYK5kYmFobKrvxsXAFBLAwQUAAIACAAM
qYhJz04p0pAAAAC9AAAAIQAcAG1lZGlhL3Vuc3VwcG9ydGVkLXJ0c3Atc3RkZXJyLnR4dFVUCQAD
SDxKWEg8Slh1eAsAAQT1AQAABBQAAABtjkEOgjAUBfee4l9AUKIu2FYREkkIwgGa9kWbYD+2vyTe
Xl25cTWzmMXkV07BQGlzR644oIV1+mfr7f5QZMVuk3eBheU1I+aVu9XD0H2pJgcvtfZ2glUpCj/G
/vJpF2cRMkPmb6ACtKBHnNlHHJ2RisMZ0uOZEKUkxWmy5FnIsF8QhMahIWFqm/ZE342SVm9QSwME
FAACAAgAIamIScNghh2BAAAA6AIAADsAHABtZWRpYS92aWRlby1tdXRlZC1hZnRlci1zZXR0aW5n
LXBhZ2UtbXV0ZWQtc3RhdGUtc3RkZXJyLnR4dFVUCQADbTxKWG08Slh1eAsAAQT1AQAABBQAAACL
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
+F3EE1BLAwQUAAIACADaqYhJW7umv6sAAAAUAwAAOgAcAHJldHJpZXMvY29tcG9zaXRpbmcvdmlk
ZW8vdmlkZW8tY2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAkAA8s9SljLPUpYdXgLAAEE9QEA
AAQUAAAA7Y+xDoIwFEV3v6IjDlCooEjioEQTByMJIzHkWV6wWil5VBP+XoyDfoAj27nTuacQQRKE
SeR7kYhPTFm8Q9c3sszRZmRaJNuzTtUNaI0VQ6KVG4hFHDHntlP1Bjo8nq8o7ZbIULlvnqBVBRar
KXPU7wLLeG4eJDEFeUGeGsIDVgq+5AbRXHgi9Pmgtsb2LXY809Aj8UH2oXL9/udJplWDTIjlbFKM
EWPE/yJeUEsDBAoAAAAAANupiEkAAAAAAAAAAAAAAAANABwAcmV0cmllcy9odHRwL1VUCQADzT1K
WKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA26mISQAAAAAAAAAAAAAAABMAHAByZXRyaWVz
L2h0dHAvdGVzdHMvVVQJAAPNPUpYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADbqYhJAAAA
AAAAAAAAAAAAGQAcAHJldHJpZXMvaHR0cC90ZXN0cy9tZWRpYS9VVAkAA809SlinPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBAoAAAAAANupiEkAAAAAAAAAAAAAAAAdABwAcmV0cmllcy9odHRwL3Rlc3Rz
L21lZGlhL2hscy9VVAkAA809SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANupiEkggPE5
3QEAAGIHAABEABwAcmV0cmllcy9odHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1h
Y2Nlc3NpYmlsaXR5LXN0ZGVyci50eHRVVAkAA809SljNPUpYdXgLAAEE9QEAAAQUAAAA7VPbbtsw
DH3fV/ADFt+SLKnbdQiSbi3QDkaSYgOCPigWYwuVJU2iW+zvR9dZEaDDsBXYngK/iBJ5zuEhvcnS
PB3l4yyaZCd3cLleF0v81mIg2Knqksjtw4WSSyxRPeASg7Mm4FxovRXlfQ7GQmkNoSG4RlNRDb5P
lTAA9H5uJYIKkCXJm83vCTlctI37qIzQt8vrmWHWxhLOpPQYQg6iP0CaTaKEv5TLOBdar6FmuXkc
Pz/l0yRJ4galEjEX2daXGOJah7hCg14QDh6sjFztPsiWQ2XN+67kD0Tuw7lHRrnw3nKTTcMO5ICm
tC274bl9Ybr+rc9h+50QvDAV8qU8tEz3lg36TL7+pVnD5A7OVhefitub4hxmRNg4+oz0aP39jTWK
rF8hta6bBkFAImUqaB2YPgeaPun02UHm0LYU+j+xLLAEmMJPLsDHkCaT6OkRPJUenfUd3GYySk/Y
9bMrs7PnOZdXVccSSHgKURS9AmqB27ZiLMXqviiqVyyNp90x5PC1mD+1w8NQpFG+hfTQk9G/86Rx
WGVO+IAeCgyFt7ygYR0KwX9VWe43QhkorhaQJhmE2rZawhYhHXYwCe+jRrC7HfPCcPLubyHTA8jx
S8TxNJseVR5VHlW+WuUPUEsDBAoAAAAAAE2qiEkAAAAAAAAAAAAAAAASABwAcmV0cmllcy9pbnNw
ZWN0b3IvVVQJAAOiPkpYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABNqohJAAAAAAAAAAAA
AAAAGwAcAHJldHJpZXMvaW5zcGVjdG9yL2RlYnVnZ2VyL1VUCQADoj5KWKc+Slh1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAATaqISQAAAAAAAAAAAAAAACcAHAByZXRyaWVzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50cy9VVAkAA6I+SlinPkpYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAE2q
iEnLTsHdfgAAAIcAAABTABwAcmV0cmllcy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMv
cmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWFjdHVhbC50eHRVVAkAA6I+SliiPkpY
dXgLAAEE9QEAAAQUAAAAJcbNCoJAFIbhvVfxgZtaJARB2C4aBSlUsp+1Osc4MDNniFPR3Ve0eZ83
bSuDc30surapu+pSYIFRfNbH6Ci70rBn/bGToBQ0M/QkJ9F/H7PIFuvVMs/nSbmtDhuc2JOFPBSv
npXDDZPcEUR5ehsJBBUMhLF3jmySpEVT/vMBUEsDBBQAAgAIAE2qiEncUsQ1hhsAAKjIAABRABwA
cmV0cmllcy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwt
cGF1c2UtbG9jYXRpb25zLWRpZmYudHh0VVQJAAOiPkpYoj5KWHV4CwABBPUBAAAEFAAAAN1dy47c
Rpbd6ysIswGXLEUVg2+WII9fcsMYt2xYtnthGOOsKkpKdyqzkJkllbpY+9nMfmY1/zZfMJ8wZEQy
bsS9wTdTNkaAJTPIZJxzX/FkXMaYc/bzZnXzJt+dfbXYL86e/f3F2d/zi39d7g//fHGzXF2d/ZCv
8sUuP1st3m9u9myf7/Zsm+9uVvvd2Tbfb5fl75fr3XV+ud9sz67yi5tXr/Lt2cU2X/zjerNci8d2
m9Xb/Ipd3by5ZovVil0vbnY5W20uF/vlZr1j+W31+/zqdH+7f/Do0aM/EbTF5f5msRLAPvvMYfyx
H3qZ84g/jpzPPnvAvnydX/5juX7llL916rc5UIWj3uQs187C2V1ul9f70weP3O+/+cr56fkPz158
/93zF9/8/MxhzuXmzeni+nqVn0qa1T9fbtb7fL0//Sp/m68212/K/3dOrpdXThLyLHv44NHXn3/z
7bnz4/JNWW8pBufdYrmvAL3cbJ31Zr98+f6rzTp39hvnIncuS5j51QPnAXvAnj51frhZr6tnK9E5
u5vlPj93vjrI6bRm84Uic1pJ6fPV6tua0wNWmpHxkstSIcPecfrXfJ1vF6sK0jfPXzz74cdvnv/V
+fzHc8c79x6w7z//6cWzF3DNnn7qOI5X/ucUq3zvLJ6+vFlfVm86eXhXav1mu3a8+wfMEX949Vf1
2EXrY3792GXrY0H92GK7ffrLr09skDmCzBMD88rFmIs/A+gUofYjEzURtHuopvgDUfuxgZpX5uGw
FtB1JW75nCDHlRkdCbQsD+vyzcXvT+/uLWQ4shsu7Eb+uoNMrSiuzOui3bw+BJkUsansaQQbohhq
dh+ADbIzX9hZPzLSHDtcQ5mjr8xxLjKyPKr+osx8ZHT+EKPr6fQMiAnbvGy3zfmYpYjaAAscQY2o
jBrqbNSQOQZDzLFnpGafdnuWstoA2uJBzORFXP11duZU/ZztZuW8XG3eUdYBMtXwCKR7hhOmOMu2
XHEWwgiVMIaTlvcSu95DJIH0PPxQLa+kHCrKE5lJQaXVxfKlc1J4D+sHMufwZ3HysH4997TXc17/
ynvo3FEhpeeRIaQMhDQYJTNQeu7DGrlCWfSFKQt9kx3GniHsnAP4PnjFH8D7sKYAQnUtcCtGALdo
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
9LoGVEksbVdeZslTWVlU16PnZW1xS5olDc8QHUyiQ9zM4mDqLbP1NoQEFPAhBklDKcd8i/MtBOhp
8bUD8YuvKWJDm+o0nUcPE87q7VidDteVVpik48UjlidaiJZd2Kk0riUw7cG6xFmqf91vbw6vNr0n
qQb6QapStnfwy39ZH7fr692mOmZaBZmHpg318Bh6cv/L87H8xWffH/YsY9fbs/f5f//bf37u3dyu
j+ubc4n+s+f6SWpaDS/vjsfDm/V585f19lhX893bw69b7/P/+a//+HdnHWELCnfaJzL4C1ZhpNOX
+uqmX/w/5x+aByGZB9gO0H4z9+PxNnv5P8UfbnKHAHLGunkO5DBHUKdbukxnkCTUCZjFbyYKkiYk
nCKK+T6hjtHUhTlSEtqhmwNF8eR/AVBLAwQUAAIACABNqohJCq3KjNdFAABqiwYAWQAcAHJldHJp
ZXMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxsLXBhdXNl
LWxvY2F0aW9ucy1wcmV0dHktZGlmZi5odG1sVVQJAAOiPkpYoj5KWHV4CwABBPUBAAAEFAAAANSd
64/bRpLAv/uvICLc2l6EEvvJpib2IvFjL9hcLoi9ux8OhwMlUSPalKijKI+dTP73bT5FvWa8QBXB
ymI9MxJFVTer61dVrC5+t8rXycsn362icGF/rKM8dOarMNtF+Yun+3zpmqf25V3+JYlePpkm8ebj
t870U7yL82jh/P7Esf/l0efcXUTzNAvzON1MnU26iW7Kt2Zptogyd5bmebqeOmz72VnY36PFzZM/
nlSnq08yT5M0mzojTwTle+O3cRK9jpfL+v1ZOP94m6X7zcJtDl2a4n/dL6q+YZcm8cIZLRaL6r1l
usndZbiOky9TZ51u0t02nNcCrsPsNrYis2jteNVL29QOrhxHFiV2RJ+iUqAVO5FUCHHh/Ltws3N3
URYvO2/u4t+i8ju6X+om0TKfOt5YNa8v4t02Ce1J4o2dmVrCu3iRr+yHPe8/avnCxSLe3LafrGSr
L03x2/HVqcWNNysrVN4evko/RdnJiJRSN9cmO4qqaRgX1+Qn+127+sPLJA3tMLL4dpUfX7niqFd2
+KEdS/NVqZ36OLdD9E6GnIezJHLnUZIcjdItz3s0S3crOzq3vIaFqt1l4fYg2btoXly7q0pTfvhY
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
boWfXT59+unVzfm3X57dziZnT578/Ht/gtVf9MHyP1DX/g+Q3l/79PMvfvvj/t5CK8s/rrK3/s6e
X12c3f7l6dXN2eKfw+L/3v1rt388vnny9+H/+3r2/OpXP/s/UEsDBBQAAgAIAE2qiEnqzCEZXAAA
AF4AAABTABwAcmV0cmllcy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQt
ZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLXN0ZGVyci50eHRVVAkAA6I+SliiPkpYdXgLAAEE9QEA
AAQUAAAAC0/MLFHIz1PIyy/JTKt0yc9LVSjJzE1NUcgvLdFRKCjKT04tLlZIzs/VSywoyEnVC09N
8s4sAVHO+XklqXklei6pZak5+QW5QLZCQWaKgq2CuYmhpaWyq78bFwBQSwMECgAAAAAABqmISQAA
AAAAAAAAAAAAAAsAHABzY3JvbGxiYXJzL1VUCQADOzxKWKc+Slh1eAsAAQT1AQAABBQAAABQSwME
FAACAAgABqmISW69I2E5AAAAQgAAADsAHABzY3JvbGxiYXJzL3Njcm9sbGV2ZW50LWlmcmFtZS1u
by1zY3JvbGxpbmctd2hlZWwtc3RkZXJyLnR4dFVUCQADOzxKWDs8Slh1eAsAAQT1AQAABBQAAADL
zS8tTg1OLsrPyXGqVEhLzMxJTVEoyVdIy8wD0hmpCiWJRempJQplmanlCoklCgZ6BmCgA2NwAQBQ
SwMEFAACAAgAT6qISWfGLS9a2wgAGyMvAAoAHABzdGF0cy5qc29uVVQJAAOlPkpYpT5KWHV4CwAB
BPUBAAAEFAAAAKT92ZIrS5IdCv4K5T4TR9xGd++3YpK8ly0cqjOLfR9aKFsQgEcE8iCAKACxh7zC
f2+b3E3N3HUZNikltfOcnekGG9R0WLpU7f/5P972H9Pn/vh//L/+zf8z//Pu83o+ny5vu/3hMN3v
f7w/Ps7hv79N96/z4+7++f8n7L/9N6Md/u2/6aXux3/7b7T0fyj1P/7nv/03yzj7zxP4uF8+Vsr9
v/kf/9N/+2N62X8dT9fwzef+cpluu+lfv/bnz+sP94/3x3Sbrtuj+lF6HefkRzfdv/03tgszejm5
IY678/XH/X06v4LvhVy+1+4vtAnfhym9fL2+Trf79et2mHaX6W3/OH2fdp/n/a+X/eHP2/4x7U4X
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
N11U24uSW9mMeZ2hCHvmvbdGk92nrPFAJEa0zSk802o16mBnFjMRK7eN0tvs78fn15/1roctdmJP
RLG7i3k/3QsB7KotN4eV9it52XsCaEX9lejamUquj7blVvYMhld0K6Vwg90wjLw//rhx/tfH2zYW
wwngpN1MnWGQufFOHA+AxgsTddschNWttvJiZZu9hxF4uJHFSjqkN57XK9lIBljjGJ1YPdftpWe1
AZ15IqviPgawEdnZpkZmCrQ/SA3v0gYEc3bF99k8HvYD4rbPysJdGxm9dQy5kDpkndj5VaY/b/y/
VbiivWQv9V1p4gT1iqiXw81qEveoe9llwvzo1DdBBIHnJkfdxBfcsCrQC65EX0j63bCxD/UmzBmG
dvX5ViV1M0R/vPwyP01n9nv5umwIN2uib57IG06NHsvJSNexvWfH3YCI+DBtInzD5OvlAWqX6Alp
1pCY7bhlcVDe3tI3lke8QuhiqQ3fisMVPQ5fkaT9VR117VdNwdwGwMxvWK1puStaKjpXcfjw+/NF
c1Evk7642l07uc1Pxse/1y081kZig3ZLpKtc9YX0vUP0h2MgLiq3e3U6KdyKOs84q1JhfcnWx+zm
5TmRvrZorIaZOiZ+WlXf708n/G6Nc+fsh6JIjzfcdIrQ/FI83quWVnBECUZHNXFztsHke5bg367X
11Vz3mgZvAkzk2p7smyzR6AvqFCK61z9R1NvliyXXy6PT9W+rqEz/Xxc3PLH6imR6RvKa/mzQS0K
777f3r9/nylz3HVxMsQKq5Zmt/JKlQP71HMjqhzYfUvrnY2gL2ubpaq5sXikftFFvMO3CRBo1JSY
ozI3GZnPPLTnFO3nh8vbwzum4USefrO1v1VyNYmlH7Jhb45hro0jn6+/Ltdac89/uTz9rI7a6ga9
e/x69+3tcXk+Xp/nfYKzm64dYpL8WKs41SnQsyfIXMlZV3mpm3t7vNz+F9lhdpcbS2NdcWCtMqTB
tqxntw77WoXez9fXl7eP97vbInoLI0NyMOYgQZtxcLcv8PBy/7MiunZffVtY6Te9eyrJGYh7y9v2
rq8g5Jl/k/HXy95qBFhXcbdWa5EjLSU9Lrf8CzSj4+46SLUx5OxDXZ+P2vZG660mU43W02pObT3I
43HPPl/OuwzJgucdrbf2h0gt8hXgerOYMvpqoWFv8d1muNrgctc4RSprV4zNSEObs/pqsa22p6xt
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
u9NXx5T8u1GmBxnaSOZL8AA4p427Z3LuCwcwhLoW2/36ujXbK/zrK7wfHNAp5id5rMh2it1VWUED
3Zb9rJnPZ4ETD0eKBLLILUOXNZ3PwLoyXS6zMFV2tmRUuqaTJuN7DR/loSLhMOSdvR+Os4H3dpnf
8XjY/yqj2nGUyANTWi4eKFD63/8HUEsDBAoAAAAAADWpiEkAAAAAAAAAAAAAAAAEABwAc3ZnL1VU
CQADljxKWKc+Slh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAGqmISQAAAAAAAAAAAAAAAA0AHABz
dmcvYXMtaW1hZ2UvVVQJAANjPEpYpz5KWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAaqYhJ2wjT
QjsAAAA/AAAAPwAcAHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMt
ZGlzYWJsZWQtc3RkZXJyLnR4dFVUCQADYzxKWGM8Slh1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJ
V0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAA
AAA1qYhJAAAAAAAAAAAAAAAACwAcAHN2Zy9jdXN0b20vVVQJAAOWPEpYpz5KWHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACAA1qYhJIfT28DoAAABCAAAAMAAcAHN2Zy9jdXN0b20vdXNlLWludmFsaWRh
dGUtY2xpY2stY3Jhc2gtc3RkZXJyLnR4dFVUCQADljxKWJY8Slh1eAsAAQT1AQAABBQAAADLzS8t
TvXNL0sNyVdIS8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksUdA3N9AzAQMfMwAjK5AIAUEsD
BAoAAAAAACmpiEkAAAAAAAAAAAAAAAALABwAd2ViYXJjaGl2ZS9VVAkAA348SlinPkpYdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIACmpiEnbCNNCOwAAAD8AAAA6ABwAd2ViYXJjaGl2ZS90ZXN0LWxp
bmstcmVsLXN1YnJlc291cmNlLWJlZm9yZWxvYWQtc3RkZXJyLnR4dFVUCQADfjxKWH48Slh1eAsA
AQT1AQAABBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PS
FQqK8pNTi4tTU/S4AFBLAwQUAAIACADgqYhJz1UvbKgCAACeEgAAGQAcAHdwdHdrX3Byb2Nlc3Nf
bG9nLm91dC50eHRVVAkAA9Q9SljOPUpYdXgLAAEE9QEAAAQUAAAA3VfbbtpAEH3nK+ahUqAt2BiT
gNWLQgk0VZtWJVEfSoMWeygOZtfaXZfw912bUIIaG2wTp+oD0mL5zJw5c1lP96xz1bcWOK76HpET
xudViUIKq89c+hMkg0Ag+IxLODZMs1XqpgO04wGUydOJRP76A6EALdCblm5YTQMMvX4C/U+XpdL5
Re/zQ9ArEfrCW1fI8DBlQoKNXMYAqh4JqD1Fbk2l9F9G7KxWS9fV0XWsE7PeNlNC6xtocyd0IcQd
MpJkA23sAb1Dmm39vlNjL75rcNs0Gxvs8Qo7Z87IXyoLgtkzlDUhCXWIxyjWvuF4ED0cIP+lbL3j
SCTC6kVg1IJyQ4mn+BwdrX+VQ1g1chvtuNQ5GMONsb+Jxdb1VxaoqHwiVW0r6LVWrj2vPEvtezBz
fRgvYUJcL+BoAXLOeNlsKfenjsNRCCCektBZgkvDrssQ4EfVQUhj9UoV47DmLzPEuV9tpWRChCsU
l7Q5SuuFLoe1BeMz5MPajUhvIBIsi9OpnHsZoCtVHqVPH1nqtcoZA8+RKBGKEKaq8Oz+H6MvSzO+
/fJK+Gi/+X6t/XhR0SRjnihyjOYrzqcdwnlq/b7QRXRItlk2HIXfeul5JpVVUeNo5ZMHlCLXAt9R
g3U4mhPqTtT7aTUsMF1ZNd+K92kS9g9InkuFg0h/mLi3IohbzgaS8NVapjYQiKqNq+EGHrOJF65q
0f6UD67ngIfLUMIae3YJ2jl18BadbkdznTEb36AthWQcqxwpmWM1+hM1f7yhHgvUDTpVU99TDHqu
h+9X53iIoeuQ0j+UL9SVUgF9R0TqnmMBt1Fo4cMp4VRdfBzD7VBdEnvLIQI/hFR9zuauQLEb+6Dj
RFgG4YqB/ElPsphQDkvP0rTtik2R1MR0JrMo0H9iVRyGxG9QSwECHgMUAAIACABhqYhJ+j2roqg+
AAAj1AAAIQAYAAAAAAABAAAApIEAAAAAV2ViS2l0VGVzdFJ1bm5lci03MjQxNy1zYW1wbGUudHh0
VVQFAAPmPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/KiISYTyCGzYPgAA19UAACEAGAAA
AAAAAQAAAKSBAz8AAFdlYktpdFRlc3RSdW5uZXItNzI0NTktc2FtcGxlLnR4dFVUBQADKzxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE2piEnriwhmYD4AAIPSAAAhABgAAAAAAAEAAACkgTZ+
AABXZWJLaXRUZXN0UnVubmVyLTcyNDc1LXNhbXBsZS50eHRVVAUAA8I8Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABNqohJ8DHaAqg+AABh0wAAIQAYAAAAAAABAAAApIHxvAAAV2ViS2l0VGVz
dFJ1bm5lci03NDE5Ny1zYW1wbGUudHh0VVQFAAOiPkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAA2KmISQAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1B9PsAAF93cHRfY2VydHMvVVQFAAPIPUpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWqiISS9OyfoDCQAAOhEAABUAGAAAAAAAAQAAAKSB
OfwAAF93cHRfY2VydHMvMDY5MEJGLnBlbVVUBQAD+zpKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFqoiEmwrgeb5AkAADsSAAAVABgAAAAAAAEAAACkgYsFAQBfd3B0X2NlcnRzLzA2OTBDMC5w
ZW1VVAUAA/w6Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABaqIhJL07J+gMJAAA6EQAAFQAY
AAAAAAABAAAApIG+DwEAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQFAAP7OkpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAWqiISficNsNIBQAA1wYAABQAGAAAAAAAAQAAAKSBEBkBAF93cHRfY2Vy
dHMvY2FrZXkucGVtVVQFAAP7OkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA2KmISQAAAAAA
AAAAAAAAABQAGAAAAAAAAAAAAKSBph4BAF93cHRfY2VydHMvaW5kZXgudHh0VVQFAAPIPUpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAWqiISZhceX8VAAAAFQAAABkAGAAAAAAAAQAAAKSB9B4B
AF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJVVAUAA/w6Slh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAIAAABaqIhJmFx5fxUAAAAVAAAAHQAYAAAAAAABAAAApIFcHwEAX3dwdF9jZXJ0cy9pbmRleC50
eHQuYXR0ci5vbGRVVAUAA/s6Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABaqIhJB58AyjcA
AAA3AAAAGAAYAAAAAAABAAAApIHIHwEAX3dwdF9jZXJ0cy9pbmRleC50eHQub2xkVVQFAAP7OkpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWqiISYpBnosFBQAAiwYAABgAGAAAAAAAAQAAAKSB
USABAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUBQAD/DpKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFqoiEmwrgeb5AkAADsSAAAYABgAAAAAAAEAAACkgaglAQBfd3B0X2NlcnRzL2xvY2Fs
aG9zdC5wZW1VVAUAA/w6Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADYqYhJsbytnwYAAAAG
AAAAEQAYAAAAAAABAAAApIHeLwEAX3dwdF9jZXJ0cy9zZXJpYWxVVAUAA8g9Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAIAAABaqIhJvlB59gcAAAAHAAAAFQAYAAAAAAABAAAApIEvMAEAX3dwdF9j
ZXJ0cy9zZXJpYWwub2xkVVQFAAP7OkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4KmISXCW
JlpnkwEAx04PAA4AGAAAAAAAAQAAAKSBhTABAGFjY2Vzc19sb2cudHh0VVQFAAPUPUpYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAXaiISQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BNMQCAGFj
Y2Vzc2liaWxpdHkvVVQFAAMBO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAW6iISdf+pe9p
AAAAbAAAAC4AGAAAAAAAAQAAAKSBfMQCAGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1jaGVj
a2VkLXN0ZGVyci50eHRVVAUAA/06Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABdqIhJAAAA
AAAAAAAAAAAAEgAYAAAAAAAAABAA7UFNxQIAYWNjZXNzaWJpbGl0eS9tYWMvVVQFAAMBO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXaiISeGro+FqAAAAbAAAAGEAGAAAAAAAAQAAAKSBmcUC
AGFjY2Vzc2liaWxpdHkvbWFjL2NoZWNrYm94LXBvc3RzLXZhbHVlLWNoYW5nZS1ub3RpZmljYXRp
b24tYWZ0ZXItYWN0aXZhdGlvbi13aXRoLXNwYWNlLXN0ZGVyci50eHRVVAUAAwE7Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABOqYhJIZkETT5CAAAyHgEAOAAYAAAAAAABAAAApIGexgIAY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTcyNDIxLXNhbXBsZS50eHRVVAUA
A8M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADkqIhJyay7CEY/AACv6AAAOAAYAAAAAAAB
AAAApIFOCQMAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTcyNDY2LXNh
bXBsZS50eHRVVAUAA/s7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4qYhJr2VoN41CAAAy
IAEAOAAYAAAAAAABAAAApIEGSQMAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50LTcyNDgxLXNhbXBsZS50eHRVVAUAA5w8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA6
qohJH4UowKBAAAChFAEAOAAYAAAAAAABAAAApIEFjAMAY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LkRldmVsb3BtZW50LTc0MTk5LXNhbXBsZS50eHRVVAUAA4A+Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABnqIhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEXzQMAY29tcG9zaXRpbmcv
VVQFAAMRO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYqiISQAAAAAAAAAAAAAAABUAGAAA
AAAAAAAQAO1BXc0DAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUBQADCDtKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGKoiEmWdG1kagAAAGwAAAA9ABgAAAAAAAEAAACkgazNAwBjb21wb3NpdGlu
Zy9vdmVyZmxvdy90aGVtZS1hZmZlY3RzLXZpc3VhbC1vdmVyZmxvdy1zdGRlcnIudHh0VVQFAAMI
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYaiISQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQ
AO1Bjc4DAGNvbXBvc2l0aW5nL3JlZ2lvbnMvVVQFAAMGO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAYaiISfbK30nFAAAA8gYAAEUAGAAAAAAAAQAAAKSB284DAGNvbXBvc2l0aW5nL3JlZ2lv
bnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItY29tcG9zaXRpbmctc3RkZXJyLnR4dFVUBQAD
BjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGeoiEnzjIa6vgAAAPIGAAA8ABgAAAAAAAEA
AACkgR/QAwBjb21wb3NpdGluZy9zaG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9u
LXN0ZGVyci50eHRVVAUAAxE7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgqIhJAAAAAAAA
AAAAAAAAEgAYAAAAAAAAABAA7UFT0QMAY29tcG9zaXRpbmcvdmlkZW8vVVQFAAMEO0pYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAXaiISTpsObqmAAEAgCABACMAGAAAAAAAAAAAAKSBn9EDAGNv
bXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci1hY3R1YWwucG5nVVQFAAMBO0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAXaiISeoYesR5AAAAhwgAACEAGAAAAAAAAAAAAKSBotIEAGNvbXBvc2l0aW5n
L3ZpZGVvL3Bvc3Rlci1kaWZmLnBuZ1VUBQADATtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AF2oiElnxCQIiQUAAA4SAAAjABgAAAAAAAEAAACkgXbTBABjb21wb3NpdGluZy92aWRlby9wb3N0
ZXItZGlmZnMuaHRtbFVUBQADATtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2oiEmswk9c
DAEAAP0BAAAmABgAAAAAAAEAAACkgVzZBABjb21wb3NpdGluZy92aWRlby9wb3N0ZXItZXhwZWN0
ZWQuaHRtbFVUBQADATtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2oiEl4CBQnjQABAGAg
AQAlABgAAAAAAAAAAACkgcjaBABjb21wb3NpdGluZy92aWRlby9wb3N0ZXItZXhwZWN0ZWQucG5n
VVQFAAMBO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYKiISXKk/CXaQQAArGMAADIAGAAA
AAAAAAAAAKSBtNsFAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdlLXNyYy1hY3R1
YWwucG5nVVQFAAMEO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYKiISWMsx1U2AwAAdAoA
ADAAGAAAAAAAAAAAAKSB+h0GAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdlLXNy
Yy1kaWZmLnBuZ1VUBQADBDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGCoiEnDjkvDkgUA
ACwSAAAyABgAAAAAAAEAAACkgZohBgBjb21wb3NpdGluZy92aWRlby92aWRlby1jbGlwLWNoYW5n
ZS1zcmMtZGlmZnMuaHRtbFVUBQADBDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGCoiElN
ekSKyAEAAJoDAAA1ABgAAAAAAAEAAACkgZgnBgBjb21wb3NpdGluZy92aWRlby92aWRlby1jbGlw
LWNoYW5nZS1zcmMtZXhwZWN0ZWQuaHRtbFVUBQADBDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGCoiEny361EdEEAAJJjAAA0ABgAAAAAAAAAAACkgc8pBgBjb21wb3NpdGluZy92aWRlby92
aWRlby1jbGlwLWNoYW5nZS1zcmMtZXhwZWN0ZWQucG5nVVQFAAMEO0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAYKiISaYJdQHBAAAA8gYAADIAGAAAAAAAAQAAAKSBsWsGAGNvbXBvc2l0aW5n
L3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdlLXNyYy1zdGRlcnIudHh0VVQFAAMEO0pYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAZKiISQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1B3mwGAGNyeXB0
by9VVAUAAww7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABjqIhJAAAAAAAAAAAAAAAADgAY
AAAAAAAAABAA7UEfbQYAY3J5cHRvL3N1YnRsZS9VVAUAAwk7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAABjqIhJJeDTCCwAAAAsAAAAPgAYAAAAAAABAAAApIFnbQYAY3J5cHRvL3N1YnRsZS9y
c2EtZ2VuZXJhdGUta2V5LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAUAAwk7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjqIhJMDu4sUsAAABoAAAAPAAYAAAAAAABAAAApIEL
bgYAY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy1zdGRl
cnIudHh0VVQFAAMJO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZKiISQAAAAAAAAAAAAAA
AA8AGAAAAAAAAAAQAO1BzG4GAGNyeXB0by93b3JrZXJzL1VUBQADDDtKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAGSoiEkAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQRVvBgBjcnlwdG8vd29y
a2Vycy9zdWJ0bGUvVVQFAAMMO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAZKiISSXg0wgs
AAAALAAAADEAGAAAAAAAAQAAAKSBZW8GAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJh
dGUta2V5LXN0ZGVyci50eHRVVAUAAww7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABoqIhJ
AAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UH8bwYAY3NzMy9VVAUAAxQ7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAABhqIhJAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UE7cAYAY3NzMy9iYWNr
Z3JvdW5kL1VUBQADBjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGGoiEk/mLE7vgAAAPIG
AAA4ABgAAAAAAAEAAACkgYVwBgBjc3MzL2JhY2tncm91bmQvYmFja2dyb3VuZC1yZXBlYXQtcm91
bmQtYXV0bzEtc3RkZXJyLnR4dFVUBQADBjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGeo
iEkAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQbVxBgBjc3MzL3NlbGVjdG9yczMvVVQFAAMSO0pY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZaiISQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B
/3EGAGNzczMvc2VsZWN0b3JzMy9odG1sL1VUBQADDTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGWoiElMx28CagAAAGwAAAAuABgAAAAAAAEAAACkgU5yBgBjc3MzL3NlbGVjdG9yczMvaHRt
bC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIudHh0VVQFAAMNO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAZ6iISQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BIHMGAGNzczMvc2VsZWN0b3JzMy94
bWwvVVQFAAMSO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZ6iISTTeKPlqAAAAbAAAAC0A
GAAAAAAAAQAAAKSBbnMGAGNzczMvc2VsZWN0b3JzMy94bWwvY3NzMy1tb2RzZWwtMjUtc3RkZXJy
LnR4dFVUBQADEjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGioiEkAAAAAAAAAAAAAAAAM
ABgAAAAAAAAAEADtQT90BgBjc3MzL3NoYXBlcy9VVAUAAxQ7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABoqIhJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UGFdAYAY3NzMy9zaGFwZXMvc2hh
cGUtb3V0c2lkZS9VVAUAAxQ7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABoqIhJAAAAAAAA
AAAAAAAAKwAYAAAAAAAAABAA7UHZdAYAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9zdXBwb3J0
ZWQtc2hhcGVzL1VUBQADFDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGioiEkAAAAAAAAA
AAAAAAAxABgAAAAAAAAAEADtQT51BgBjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL3N1cHBvcnRl
ZC1zaGFwZXMvaW5zZXQvVVQFAAMUO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaKiISYgS
LlzGAAAA8gYAAFMAGAAAAAAAAQAAAKSBqXUGAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3Vw
cG9ydGVkLXNoYXBlcy9pbnNldC9zaGFwZS1vdXRzaWRlLWluc2V0LTAxMC1zdGRlcnIudHh0VVQF
AAMUO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAaaiISQAAAAAAAAAAAAAAAA0AGAAAAAAA
AAAQAO1B/HYGAGRpc3BsYXlsaXN0cy9VVAUAAxY7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABpqIhJo1f96FAAAACOAAAAMgAYAAAAAAABAAAApIFDdwYAZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAUAAxY7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABpqIhJ8paV1UcAAABJAAAAKQAYAAAAAAABAAAApIH/dwYAZGlzcGxheWxpc3RzL2xh
eWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAUAAxY7Slh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAB0qIhJAAAAAAAAAAAAAAAABAAYAAAAAAAAABAA7UGpeAYAZG9tL1VUBQADLDtKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAHSoiEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQed4BgBk
b20vaHRtbC9VVAUAAyw7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB0qIhJAAAAAAAAAAAA
AAAAEAAYAAAAAAAAABAA7UEqeQYAZG9tL2h0bWwvbGV2ZWwyL1VUBQADLDtKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAHSoiEkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQXR5BgBkb20vaHRt
bC9sZXZlbDIvaHRtbC9VVAUAAyw7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0qIhJz0Xf
o2oAAABsAAAAMgAYAAAAAAABAAAApIHDeQYAZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElucHV0
RWxlbWVudDIwLXN0ZGVyci50eHRVVAUAAyw7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABy
qIhJAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UGZegYAZG9tL3hodG1sL1VUBQADKDtKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAHKoiEkAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQd16BgBk
b20veGh0bWwvbGV2ZWwyL1VUBQADKDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHKoiEkA
AAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQSh7BgBkb20veGh0bWwvbGV2ZWwyL2h0bWwvVVQFAAMo
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcqiISfTa/81qAAAAbAAAADMAGAAAAAAAAQAA
AKSBeHsGAGRvbS94aHRtbC9sZXZlbDIvaHRtbC9IVE1MSW5wdXRFbGVtZW50MjAtc3RkZXJyLnR4
dFVUBQADKDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG6oiEkAAAAAAAAAAAAAAAAIABgA
AAAAAAAAEADtQU98BgBlZGl0aW5nL1VUBQADIDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AG6oiEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQZF8BgBlZGl0aW5nL2V4ZWNDb21tYW5kL1VU
BQADIDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG6oiEndIcPtQgAAAIYAAABBABgAAAAA
AAEAAACkgd98BgBlZGl0aW5nL2V4ZWNDb21tYW5kL2NsaXBib2FyZC1hY2Nlc3Mtd2l0aC11c2Vy
LWdlc3R1cmUtc3RkZXJyLnR4dFVUBQADIDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE6q
iEn5olAbFQsAACVDAAANABgAAAAAAAEAAACkgZx9BgBlcnJvcl9sb2cudHh0VVQFAAOkPkpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAlqiISQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1B+IgG
AGZhc3QvVVQFAANrO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAgaiISQAAAAAAAAAAAAAA
AAwAGAAAAAAAAAAQAO1BN4kGAGZhc3QvY2FudmFzL1VUBQADQjtKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAIGoiEnB/oz0lQAAAEwBAAAmABgAAAAAAAEAAACkgX2JBgBmYXN0L2NhbnZhcy9j
YW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADQjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAIGoiEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQXKKBgBmYXN0L2Nzcy9VVAUAA0E7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACBqIhJ2wjTQjsAAAA/AAAAKQAYAAAAAAABAAAApIG1
igYAZmFzdC9jc3MvY29tcGFyZS1jb250ZW50LXN0eWxlLXN0ZGVyci50eHRVVAUAA0E7Slh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAACAqIhJAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFTiwYA
ZmFzdC9kb20vVVQFAAM/O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAfaiISQAAAAAAAAAA
AAAAABkAGAAAAAAAAAAQAO1BlosGAGZhc3QvZG9tL0hUTUxGb3JtRWxlbWVudC9VVAUAAz07Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9qIhJbugwa2kAAABsAAAARwAYAAAAAAABAAAApIHp
iwYAZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L25hbWVkLXByb3BlcnR5LWdldHRlci1yYWRpb25v
ZGVsaXN0LXN0ZGVyci50eHRVVAUAAz07Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB9qIhJ
AAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UHTjAYAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9V
VAUAAz07Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9qIhJx5aJHmkAAABsAAAAOAAYAAAA
AAABAAAApIEnjQYAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2Vk
LXN0ZGVyci50eHRVVAUAAz07Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACAqIhJFUTka2oA
AABsAAAANgAYAAAAAAABAAAApIECjgYAZmFzdC9kb20vY2xvbmUtbm9kZS1mb3JtLWVsZW1lbnRz
LXdpdGgtYXR0ci1zdGRlcnIudHh0VVQFAAM/O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
gaiISQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1B3I4GAGZhc3QvZHluYW1pYy9VVAUAA0I7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACBqIhJs7m2VWoAAABsAAAAMAAYAAAAAAABAAAApIEj
jwYAZmFzdC9keW5hbWljL2NoZWNrYm94LXNlbGVjdGlvbi1jcmFzaC1zdGRlcnIudHh0VVQFAANC
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAj6iISQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQ
AO1B948GAGZhc3QvZXZlbnRzL1VUBQADXjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIeo
iElYKmd1OQAAAEMAAAAyABgAAAAAAAEAAACkgT2QBgBmYXN0L2V2ZW50cy9kaXNwbGF5LW5vbmUt
b24tZm9jdXMtY3Jhc2gtc3RkZXJyLnR4dFVUBQADTjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAIeoiEl7kEADagAAAGwAAABJABgAAAAAAAEAAACkgeKQBgBmYXN0L2V2ZW50cy9kb21hY3Rp
dmF0ZS1zZXRzLXVuZGVybHlpbmctY2xpY2stZXZlbnQtYXMtaGFuZGxlZC1zdGRlcnIudHh0VVQF
AANOO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAj6iISTC1beM5AAAAQwAAACsAGAAAAAAA
AQAAAKSBz5EGAGZhc3QvZXZlbnRzL21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAUA
A107Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACPqIhJ5669XzsAAABDAAAALwAYAAAAAAAB
AAAApIFtkgYAZmFzdC9ldmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRV
VAUAA147Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACIqIhJAAAAAAAAAAAAAAAACwAYAAAA
AAAAABAA7UERkwYAZmFzdC9mb3Jtcy9VVAUAA1A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AACCqIhJAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UFWkwYAZmFzdC9mb3Jtcy9maWxlL1VUBQAD
RDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIKoiEmFveJiaQAAAGwAAAAzABgAAAAAAAEA
AACkgaCTBgBmYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1wcmVzc2VkLXN0YXRlLXN0ZGVyci50
eHRVVAUAA0Q7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACIqIhJZviLU6wAAADqAAAAMwAY
AAAAAAABAAAApIF2lAYAZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC1z
dGRlcnIudHh0VVQFAANQO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAh6iISQAAAAAAAAAA
AAAAAAwAGAAAAAAAAAAQAO1Bj5UGAGZhc3QvZnJhbWVzL1VUBQADTTtKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAIeoiEnbCNNCOwAAAD8AAAAvABgAAAAAAAEAAACkgdWVBgBmYXN0L2ZyYW1l
cy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMtc3RkZXJyLnR4dFVUBQADTTtKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAI+oiEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQXmWBgBmYXN0L2lt
YWdlcy9VVAUAA147Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACPqIhJUaeCGDEAAAAxAAAA
LQAYAAAAAAABAAAApIG/lgYAZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1jcmFzaC1zdGRl
cnIudHh0VVQFAANdO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAj6iISSGPvTgyAAAAMwAA
ACwAGAAAAAAAAQAAAKSBV5cGAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRl
cnIudHh0VVQFAANeO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAjKiISQAAAAAAAAAAAAAA
AAwAGAAAAAAAAAAQAO1B75cGAGZhc3QvbG9hZGVyL1VUBQADWDtKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAIaoiEnbCNNCOwAAAD8AAABSABgAAAAAAAEAAACkgTWYBgBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS1zdGRlcnIudHh0VVQFAANMO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAh6iISdsI00I7
AAAAPwAAAFMAGAAAAAAAAQAAAKSB/JgGAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0
LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQFAANO
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjKiISdsI00I7AAAAPwAAAC0AGAAAAAAAAQAA
AKSBxJkGAGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVUBQAD
WDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIqoiEkAAAAAAAAAAAAAAAARABgAAAAAAAAA
EADtQWaaBgBmYXN0L21lZGlhc3RyZWFtL1VUBQADVDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAIeoiElkBId5nwAAALUAAABAABgAAAAAAAEAAACkgbGaBgBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC1zdGRlcnIudHh0VVQFAANOO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiKiISQVH/DueAAAAtQAAAEsAGAAAAAAAAQAAAKSBypsG
AGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3Mt
ZGlzYWJsZWQtc3RkZXJyLnR4dFVUBQADTztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIeo
iEkggx9wngAAALUAAABYABgAAAAAAAEAAACkge2cBgBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC1zdGRl
cnIudHh0VVQFAANOO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiKiISSnZPySeAAAAtQAA
ADIAGAAAAAAAAQAAAKSBHZ4GAGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rv
ci1zdGRlcnIudHh0VVQFAANPO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiqiISb/3umWe
AAAAtQAAADMAGAAAAAAAAQAAAKSBJ58GAGZhc3QvbWVkaWFzdHJlYW0vYXBwbHktY29uc3RyYWlu
dHMtYXVkaW8tc3RkZXJyLnR4dFVUBQADVDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIqo
iEnhMv3yngAAALUAAAAqABgAAAAAAAEAAACkgTKgBgBmYXN0L21lZGlhc3RyZWFtL2FyZ3VtZW50
LXR5cGVzLXN0ZGVyci50eHRVVAUAA1Q7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACRqIhJ
AAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UE0oQYAZmFzdC9yZWdpb25zL1VUBQADYTtKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAJGoiEkAAAAAAAAAAAAAAAAXABgAAAAAAAAAEADtQXuhBgBm
YXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL1VUBQADYTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AJGoiEk5AcvdQAAAAHoAAAA1ABgAAAAAAAEAAACkgcyhBgBmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5n
L3doZWVsLXNjcm9sbC1hYnNwb3Mtc3RkZXJyLnR4dFVUBQADYTtKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAJGoiEk5AcvdQAAAAHoAAAAuABgAAAAAAAEAAACkgXuiBgBmYXN0L3JlZ2lvbnMv
c2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1zdGRlcnIudHh0VVQFAANhO0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAkaiISeSKx0M8AAAAPQAAAEAAGAAAAAAAAQAAAKSBI6MGAGZhc3QvcmVnaW9u
cy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xsYWJsZS1zaW5nbGUtcmVnaW9uLXN0ZGVyci50eHRVVAUA
A2E7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACWqIhJAAAAAAAAAAAAAAAACQAYAAAAAAAA
ABAA7UHZowYAZmFzdC94c2wvVVQFAANsO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlqiI
SXL9ZfKFAAAA6QAAACUAGAAAAAAAAQAAAKSBHKQGAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9j
LXN0ZGVyci50eHRVVAUAA2s7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACWqIhJzgkoAo0A
AADwAAAAJwAYAAAAAAABAAAApIEApQYAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRl
cnIudHh0VVQFAANrO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlqiISc+PZg5QAAAAoAAA
ACQAGAAAAAAAAQAAAKSB7qUGAGZhc3QveHNsL3hzbHQtY29udGVudFR5cGUtc3RkZXJyLnR4dFVU
BQADaztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJaoiEmBSnetSwAAAKwAAAA0ABgAAAAA
AAEAAACkgZymBgBmYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRl
cnIudHh0VVQFAANsO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAT6qISQAkyaJwAgAA4QUA
ABEAGAAAAAAAAQAAAKSBVacGAGZ1bGxfcmVzdWx0cy5qc29uVVQFAAOlPkpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAmaiISQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BEKoGAGh0dHAvVVQF
AANxO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAoqiISQAAAAAAAAAAAAAAAAsAGAAAAAAA
AAAQAO1BT6oGAGh0dHAvdGVzdHMvVVQFAAN/O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
naiISQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BlKoGAGh0dHAvdGVzdHMvY2FjaGUvVVQFAAN5
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnaiISe5fL0x8AAAAEQEAADAAGAAAAAAAAQAA
AKSB36oGAGh0dHAvdGVzdHMvY2FjaGUvbWVtb3J5LWNhY2hlLXBydW5pbmctc3RkZXJyLnR4dFVU
BQADeTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJmoiEkAAAAAAAAAAAAAAAASABgAAAAA
AAAAEADtQcWrBgBodHRwL3Rlc3RzL2NhbnZhcy9VVAUAA3E7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAACZqIhJAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UERrAYAaHR0cC90ZXN0cy9jYW52
YXMvd2ViZ2wvVVQFAANxO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmaiISU3UsPV7AAAA
rgAAADsAGAAAAAAAAQAAAKSBY6wGAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL29yaWdpbi1jbGVh
bi1jb25mb3JtYW5jZS1zdGRlcnIudHh0VVQFAANxO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAm6iISQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BU60GAGh0dHAvdGVzdHMvaW5zcGVjdG9y
L1VUBQADdjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJuoiEkAAAAAAAAAAAAAAAAdABgA
AAAAAAAAEADtQaKtBgBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL1VUBQADdjtKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAJuoiElMci/ingcAAK4qAAA3ABgAAAAAAAEAAACkgfmtBgBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRpbWluZy1zdGRlcnIudHh0VVQF
AAN2O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAqaiISQAAAAAAAAAAAAAAABEAGAAAAAAA
AAAQAO1BCLYGAGh0dHAvdGVzdHMvbWVkaWEvVVQFAAONO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAnKiISQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BU7YGAGh0dHAvdGVzdHMvbWVkaWEv
Y2xlYXJrZXkvVVQFAAN4O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnKiISVKqu2PKAAAA
4AEAADkAGAAAAAAAAQAAAKSBp7YGAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5
LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUBQADeDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AKKoiEkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQeS3BgBodHRwL3Rlc3RzL21lZGlhL2hscy9V
VAUAA4A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACdqIhJXm5pdWsBAABHAwAAQAAYAAAA
AAABAAAApIEzuAYAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmli
ZXMtdmlkZW8tc3RkZXJyLnR4dFVUBQADeTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ2o
iEnRhAoUVQEAAPwCAAA6ABgAAAAAAAEAAACkgRi6BgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMt
YXVkaW8tdHJhY2tzLWhhcy1hdWRpby1zdGRlcnIudHh0VVQFAAN6O0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAnaiISd/1p2pUAQAA/AIAAEEAGAAAAAAAAQAAAKSB4bsGAGh0dHAvdGVzdHMv
bWVkaWEvaGxzL2hscy1hdWRpby10cmFja3MtbG9jYWxlLXNlbGVjdGlvbi1zdGRlcnIudHh0VVQF
AAN6O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnaiISREIsD9XAQAA/AIAADAAGAAAAAAA
AQAAAKSBsL0GAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3Mtc3RkZXJyLnR4
dFVUBQADejtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKCoiEn1UpkHswAAAJUBAAAsABgA
AAAAAAEAAACkgXG/BgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtcHJvZ3Jlc3Mtc3RkZXJyLnR4
dFVUBQADeztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKCoiEnxNIWerwAAAJUBAAAwABgA
AAAAAAEAAACkgYrABgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtdmlkZW8tcmVzaXplLXN0ZGVy
ci50eHRVVAUAA3s7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACgqIhJQTaJQrsAAAAqAwAA
PQAYAAAAAAABAAAApIGjwQYAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbGxlci1n
ZXRTdGFydERhdGUtc3RkZXJyLnR4dFVUBQADfDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AKGoiEneH2Yt+gAAAIcDAAA6ABgAAAAAAAEAAACkgdXCBgBodHRwL3Rlc3RzL21lZGlhL2hscy92
aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1zdGRlcnIudHh0VVQFAAN9O0pYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAoqiIST7MEZgtAAAALgAAADwAGAAAAAAAAQAAAKSBQ8QGAGh0dHAvdGVz
dHMvbWVkaWEvaGxzL3ZpZGVvLWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktYWN0dWFsLnR4dFVUBQAD
gDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKKoiEmmV9mXNAEAAMgDAAA6ABgAAAAAAAEA
AACkgebEBgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5
LWRpZmYudHh0VVQFAAOAO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAoqiISZGfzR+uAAAA
fgIAAD4AGAAAAAAAAQAAAKSBjsYGAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWR1cmF0aW9u
LWFjY2Vzc2liaWxpdHktZXhwZWN0ZWQudHh0VVQFAAOAO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAoqiISYV0SmBoCAAAniQAAEIAGAAAAAAAAQAAAKSBtMcGAGh0dHAvdGVzdHMvbWVkaWEv
aGxzL3ZpZGVvLWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktcHJldHR5LWRpZmYuaHRtbFVUBQADgDtK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKKoiEkdFW4qOwEAAGoCAAA8ABgAAAAAAAEAAACk
gZjQBgBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LXN0
ZGVyci50eHRVVAUAA4A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACcqIhJJXmu1scAAAA2
AQAAMgAYAAAAAAABAAAApIFJ0gYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1yZWZl
cmVyLXN0ZGVyci50eHRVVAUAA3g7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACdqIhJ9VlF
a2MAAABjAAAAKgAYAAAAAAABAAAApIF80wYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVu
dC1zdGRlcnIudHh0VVQFAAN5O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAoKiISXqqzgVj
AAAAYwAAADkAGAAAAAAAAQAAAKSBQ9QGAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtcGxheS1zdHJl
YW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUBQADfDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAJ2oiEkAAAAAAAAAAAAAAAAnABgAAAAAAAAAEADtQRnVBgBodHRwL3Rlc3RzL21lZGlhL21v
ZGVybi1tZWRpYS1jb250cm9scy9VVAUAA3o7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACd
qIhJAAAAAAAAAAAAAAAAOQAYAAAAAAAAABAA7UF61QYAaHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvc2tpcC1iYWNrLXN1cHBvcnQvVVQFAAN5O0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAnaiISa5it5PgAQAAvAYAAGIAGAAAAAAAAQAAAKSB7dUGAGh0dHAvdGVzdHMv
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NraXAtYmFjay1zdXBwb3J0L3NraXAtYmFjay1z
dXBwb3J0LWJ1dHRvbi1jbGljay1zdGRlcnIudHh0VVQFAAN5O0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAnaiISQAAAAAAAAAAAAAAADYAGAAAAAAAAAAQAO1BadgGAGh0dHAvdGVzdHMvbWVk
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3N0YXR1cy1zdXBwb3J0L1VUBQADejtKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAJ2oiEnzadw1CwEAACwDAABeABgAAAAAAAEAAACkgdnYBgBodHRw
L3Rlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zdGF0dXMtc3VwcG9ydC9zdGF0dXMt
c3VwcG9ydC1saXZlLWJyb2FkY2FzdC1zdGRlcnIudHh0VVQFAAN6O0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAoKiISbaLSfrtAAAAXwEAAC0AGAAAAAAAAQAAAKSBfNoGAGh0dHAvdGVzdHMv
bWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQADfDtKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAKKoiElt/b4zuQAAAOsAAAAvABgAAAAAAAEAAACkgdDbBgBodHRwL3Rlc3Rz
L21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUBQADgDtKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAKKoiEmOxGTc6gAAAFoBAAAvABgAAAAAAAEAAACkgfLcBgBodHRwL3Rl
c3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUBQADgDtKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKOoiEkJjinPEAEAAPYDAAAmABgAAAAAAAEAAACkgUXeBgBodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLWF1dGgtc3RkZXJyLnR4dFVUBQADgTtKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAKSoiEn3GDa5twAAAOwAAAAtABgAAAAAAAEAAACkgbXfBgBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWVycm9yLWFib3J0LXN0ZGVyci50eHRVVAUAA4M7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACkqIhJ8jR4U7MAAAAjAQAANgAYAAAAAAABAAAApIHT4AYAaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1zdGRlcnIudHh0VVQFAAOEO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApKiISfi4cmKzAAAALwEAACwAGAAAAAAAAQAAAKSB9uEG
AGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS1zdGRlcnIudHh0VVQFAAOEO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgACAAAApaiISQDFRgljAAAAYwAAAC8AGAAAAAAAAQAAAKSBD+MG
AGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wcm9ncmVzcy1zdGRlcnIudHh0VVQFAAOGO0pY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqKiIScMHla9sAAAAxgAAACoAGAAAAAAAAQAAAKSB
2+MGAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUBQADjDtKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKmoiEmH0sM7YwAAAGMAAAArABgAAAAAAAEAAACkgavk
BgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIudHh0VVQFAAONO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAnaiISQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1Bc+UG
AGh0dHAvdGVzdHMvbWltZS9VVAUAA3o7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACdqIhJ
RfZlq14AAACmAAAAKgAYAAAAAAABAAAApIG95QYAaHR0cC90ZXN0cy9taW1lL21pbWUtdHlwZS1z
bmlmZi1zdGRlcnIudHh0VVQFAAN6O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAu6iISQAA
AAAAAAAAAAAAABAAGAAAAAAAAAAQAO1Bf+YGAGh0dHAvdGVzdHMvbWlzYy9VVAUAA7I7Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACdqIhJCX3OiZ4AAAC1AAAAMgAYAAAAAAABAAAApIHJ5gYA
aHR0cC90ZXN0cy9taXNjLzQwMS1hbHRlcm5hdGl2ZS1jb250ZW50LXN0ZGVyci50eHRVVAUAA3o7
Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAChqIhJ6M6gqncAAACOAAAAMQAYAAAAAAABAAAA
pIHT5wYAaHR0cC90ZXN0cy9taXNjL2FzeW5jLWFuZC1kZWZlci1zY3JpcHQtYWN0dWFsLnR4dFVU
BQADfjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKGoiEnorGpt2AAAAJABAAAvABgAAAAA
AAEAAACkgbXoBgBodHRwL3Rlc3RzL21pc2MvYXN5bmMtYW5kLWRlZmVyLXNjcmlwdC1kaWZmLnR4
dFVUBQADfjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKGoiElZwLueeAAAAI4AAAAzABgA
AAAAAAEAAACkgfbpBgBodHRwL3Rlc3RzL21pc2MvYXN5bmMtYW5kLWRlZmVyLXNjcmlwdC1leHBl
Y3RlZC50eHRVVAUAA347Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAChqIhJgdEWHdcHAAB6
GwAANwAYAAAAAAABAAAApIHb6gYAaHR0cC90ZXN0cy9taXNjL2FzeW5jLWFuZC1kZWZlci1zY3Jp
cHQtcHJldHR5LWRpZmYuaHRtbFVUBQADfjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKeo
iEm56kDF1gAAABgBAAA/ABgAAAAAAAEAAACkgSPzBgBodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZy
YW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXN0ZGVyci50eHRVVAUAA4o7Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAC7qIhJFTU1knoAAAC8AAAAKgAYAAAAAAABAAAApIFy9AYAaHR0cC90
ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAOyO0pYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAoqiISQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BUPUGAGh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9VVAUAA387Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACiqIhJ2wjT
QjsAAAA/AAAANwAYAAAAAAABAAAApIGg9QYAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxiYWNr
LWFuY2hvci1yZWxvYWQtc3RkZXJyLnR4dFVUBQADfztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAALKoiEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQUz2BgBodHRwL3Rlc3RzL3NlY3VyaXR5
L1VUBQADoDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKOoiElsIWnoegAAAK4AAABVABgA
AAAAAAEAAACkgZr2BgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1v
dGUtdmlkZW8tYmxvY2tlZC1uby1jcm9zc29yaWdpbi1zdGRlcnIudHh0VVQFAAOBO0pYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAo6iIScwe0YOqAAAAzQAAAEgAGAAAAAAAAQAAAKSBo/cGAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhv
c3Qtc3RkZXJyLnR4dFVUBQADgTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKOoiEkyQiFZ
YwAAAGMAAABHABgAAAAAAAEAAACkgc/4BgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1v
dGUtcmVhZC1yZW1vdGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUBQADgjtKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAMKoiEkAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQbP5BgBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAUAA7s7Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAIAAACiqIhJYVwZgGMAAABjAAAASwAYAAAAAAABAAAApIEX+gYAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dl
ZC1zdGRlcnIudHh0VVQFAAOAO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAoaiISaFQRmh6
AAAArgAAAEwAGAAAAAAAAQAAAKSB//oGAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUAA347Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACjqIhJVIonTqcAAACKAQAAWAAYAAAAAAABAAAApIH/+wYA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYmxvYi11cmwtZG9lcy1u
b3QtbWF0Y2gtc291cmNlLXNlbGYtc3RkZXJyLnR4dFVUBQADgTtKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAKOoiEkAAAAAAAAAAAAAAABEABgAAAAAAAAAEADtQTj9BgBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VU
BQADgTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKOoiEnGGxMu6AAAACYDAAB5ABgAAAAA
AAEAAACkgbb9BgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdy
YWRlLWluc2VjdXJlLXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFp
bi1mcmFtZS1zdGRlcnIudHh0VVQFAAOBO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApKiI
SQAAAAAAAAAAAAAAAD0AGAAAAAAAAAAQAO1BUf8GAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9VVAUAA4M7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACiqIhJ/KDNkLwAAADwAAAAUwAYAAAAAAABAAAApIHI/wYAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93
LWF1ZGlvLXN0ZGVyci50eHRVVAUAA4A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACkqIhJ
e0QOIGMAAABjAAAAUwAYAAAAAAABAAAApIERAQcAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRV
VAUAA4M7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACtqIhJdeKBZWMAAABjAAAASwAYAAAA
AAABAAAApIEBAgcAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlk
ZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOVO0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAAraiISXXigWVjAAAAYwAAAEwAGAAAAAAAAQAAAKSB6QIHAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVy
ci50eHRVVAUAA5U7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACtqIhJ9ocDeWMAAABjAAAA
ZgAYAAAAAAABAAAApIHSAwcAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvdmlkZW8td2l0aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRl
cnIudHh0VVQFAAOWO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAwaiISWOqrGyCAAAAqAAA
AEAAGAAAAAAAAQAAAKSB1QQHAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA7k7Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADCqIhJY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIHRBQcAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3Rk
ZXJyLnR4dFVUBQADuztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKqoiEmh6zyOYwAAAGMA
AAA9ABgAAAAAAAEAAACkgd8GBwBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJj
ZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQFAAOQO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAApKiISQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BuQcHAGh0dHAvdGVzdHMvc2VjdXJpdHkv
bWl4ZWRDb250ZW50L1VUBQADhDtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKSoiEnmwEp/
aAAAAMYAAABOABgAAAAAAAEAAACkgRQIBwBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAUAA4Q7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACvqIhJWZ+3QGgAAADGAAAAOQAYAAAAAAABAAAApIEE
CQcAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy1zdGRlcnIu
dHh0VVQFAAOaO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsqiISWBLZhCRAAAA+wEAAEUA
GAAAAAAAAQAAAKSB3wkHAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1l
bnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADoDtKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIANipiElbBFgOogUAAE0QAAAKABgAAAAAAAEAAACkge8KBwBodHRwZC5jb25mVVQFAAPH
PUpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAqaiISQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQ
AO1B1RAHAGlldGVzdGNlbnRlci9VVAUAA407Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACp
qIhJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UEcEQcAaWV0ZXN0Y2VudGVyL2NzczMvVVQFAAON
O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAqaiISQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQ
AO1BaBEHAGlldGVzdGNlbnRlci9jc3MzL25hbWVzcGFjZXMvVVQFAAONO0pYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAqaiISe2gJ4PBAAAA8gYAADUAGAAAAAAAAQAAAKSBvxEHAGlldGVzdGNl
bnRlci9jc3MzL25hbWVzcGFjZXMvZGVjbGFyaW5nLTAwMS1zdGRlcnIudHh0VVQFAAONO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAu6iISQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B7xIH
AGltcG9ydGVkL1VUBQADsTtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPyoiEkAAAAAAAAA
AAAAAAAPABgAAAAAAAAAEADtQTITBwBpbXBvcnRlZC9ibGluay9VVAUAAys8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAACtqIhJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UF7EwcAaW1wb3J0
ZWQvYmxpbmsvZmFzdC9VVAUAA5Y7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACuqIhJAAAA
AAAAAAAAAAAAGgAYAAAAAAAAABAA7UHJEwcAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9VVAUA
A5c7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACtqIhJAAAAAAAAAAAAAAAAIQAYAAAAAAAA
ABAA7UEdFAcAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9idXR0b24vVVQFAAOWO0pYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAraiIScch79s3AAAAQAAAAEcAGAAAAAAAAQAAAKSBeBQHAGlt
cG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvYnV0dG9uL2J1dHRvbi1yZXNldC1mb2N1cy1ieS1tb3Vz
ZS1zdGRlcnIudHh0VVQFAAOWO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAArqiISQAAAAAA
AAAAAAAAACAAGAAAAAAAAAAQAO1BMBUHAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvcmFuZ2Uv
VVQFAAOXO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArqiIScch79s3AAAAQAAAAD8AGAAA
AAAAAQAAAKSBihUHAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtZm9jdXMt
YnktbW91c2Utc3RkZXJyLnR4dFVUBQADlztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK6o
iEkAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQToWBwBpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1z
L3N1Ym1pdC9VVAUAA5c7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACuqIhJxyHv2zcAAABA
AAAAQQAYAAAAAAABAAAApIGVFgcAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9zdWJtaXQvc3Vi
bWl0LWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAUAA5c7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAD8qIhJAAAAAAAAAAAAAAAAFwAYAAAAAAAAABAA7UFHFwcAaW1wb3J0ZWQvYmxpbmsv
c3RvcmFnZS9VVAUAAys8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD8qIhJAAAAAAAAAAAA
AAAAIQAYAAAAAAAAABAA7UGYFwcAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvVVQF
AAMrPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/KiISYASysV+AAAAhwAAAEQAGAAAAAAA
AQAAAKSB8xcHAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVm
b3JlLWNvbW1pdC1hY3R1YWwudHh0VVQFAAMrPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
/KiISeBIhfcQAgAASwQAAEIAGAAAAAAAAQAAAKSB7xgHAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2Uv
aW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC1kaWZmLnR4dFVUBQADKzxKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPyoiEmgjVmxQgEAAIgCAABGABgAAAAAAAEAAACkgXsbBwBp
bXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1jb21taXQt
ZXhwZWN0ZWQudHh0VVQFAAMrPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/KiISY/eEbBT
CQAA6SYAAEoAGAAAAAAAAQAAAKSBPR0HAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRi
L2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC1wcmV0dHktZGlmZi5odG1sVVQFAAMrPEpYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA/KiISZMeq7tTAAAAWQAAAEQAGAAAAAAAAQAAAKSBFCcHAGlt
cG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC1z
dGRlcnIudHh0VVQFAAMrPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAwqiISQAAAAAAAAAA
AAAAAA0AGAAAAAAAAAAQAO1B5ScHAGltcG9ydGVkL3czYy9VVAUAA7s7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAC7qIhJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UEsKAcAaW1wb3J0ZWQv
dzNjL1dlYkNyeXB0b0FQSS9VVAUAA7E7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADCqIhJ
AAAAAAAAAAAAAAAAJgAYAAAAAAAAABAA7UGAKAcAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9n
ZW5lcmF0ZUtleS9VVAUAA7s7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC7qIhJjzQacEQA
AACgCQAARwAYAAAAAAABAAAApIHgKAcAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0
ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQS1PQUVQLXN0ZGVyci50eHRVVAUAA7E7Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADCqIhJVALJsjYAAADAAgAAUAAYAAAAAAABAAAApIGlKQcAaW1wb3J0
ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NT
MS12MV81LXN0ZGVyci50eHRVVAUAA7s7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA3qYhJ
AAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UFlKgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9VVAUAA5o8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA3qYhJAAAAAAAAAAAAAAAA
KgAYAAAAAAAAABAA7UG/KgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvVVQFAAOaPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAN6mISfGBbsryAAAA+AIAAFAA
GAAAAAAAAQAAAKSBIysHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERC
L2lkYm9iamVjdHN0b3JlLXJlbmFtZS1zdG9yZS1hY3R1YWwudHh0VVQFAAOaPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAN6mISWcstbltAQAAVQQAAE4AGAAAAAAAAQAAAKSBnywHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLXJlbmFt
ZS1zdG9yZS1kaWZmLnR4dFVUBQADmjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADepiEk4
VfTavgAAAJwCAABSABgAAAAAAAEAAACkgZQuBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1yZW5hbWUtc3RvcmUtZXhwZWN0ZWQudHh0VVQF
AAOaPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAN6mISc2rxCWuCAAAmSMAAFYAGAAAAAAA
AQAAAKSB3i8HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9i
amVjdHN0b3JlLXJlbmFtZS1zdG9yZS1wcmV0dHktZGlmZi5odG1sVVQFAAOaPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAwqiISQAAAAAAAAAAAAAAACYAGAAAAAAAAAAQAO1BHDkHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvVVQFAAO7O0pYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAA0aiISQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BfDkHAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL1VUBQAD2TtKWHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAANGoiEkAAAAAAAAAAAAAAAAwABgAAAAAAAAAEADtQeA5BwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9VVAUAA9k7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADRqIhJfM47X48AAAChAAAARwAYAAAAAAABAAAApIFKOgcAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbW9kZS1uby1jb3JzLXN0ZGVy
ci50eHRVVAUAA9k7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADRqIhJKf0URI8AAAChAAAA
TgAYAAAAAAABAAAApIFaOwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvbW9kZS1uby1jb3JzLXdvcmtlci1zdGRlcnIudHh0VVQFAAPZO0pYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAxKiISQAAAAAAAAAAAAAAAC8AGAAAAAAAAAAQAO1BcTwHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvVVQFAAPAO0pYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAwqiIScnXFrSpAAAAxgMAAEQAGAAAAAAAAQAAAKSB2jwHAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1iYXNpYy1z
dGRlcnIudHh0VVQFAAO8O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAwqiISSDbqKKqAAAA
xgMAAEsAGAAAAAAAAQAAAKSBAT4HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2NvcnMvY29ycy1iYXNpYy13b3JrZXItc3RkZXJyLnR4dFVUBQADuztKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAMOoiEn77elEmwAAAEIBAABLABgAAAAAAAEAAACkgTA/BwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtbm8tcHJlZmxp
Z2h0LXN0ZGVyci50eHRVVAUAA747Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADDqIhJRunF
N5oAAABCAQAAUgAYAAAAAAABAAAApIFQQAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC13b3JrZXItc3RkZXJyLnR4dFVUBQAD
vjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMSoiEmPsUesogAAAIQCAABFABgAAAAAAAEA
AACkgXZBBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2Nv
cnMtb3JpZ2luLXN0ZGVyci50eHRVVAUAA8A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADE
qIhJ+jnFg6QAAACEAgAATAAYAAAAAAABAAAApIGXQgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW9yaWdpbi13b3JrZXItc3RkZXJyLnR4dFVUBQAD
vztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANaoiEkAAAAAAAAAAAAAAAAlABgAAAAAAAAA
EADtQcFDBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvVVQFAAPkO0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1KiISQAAAAAAAAAAAAAAACkAGAAAAAAAAAAQAO1BIEQH
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vVVQFAAPfO0pYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA1KiISfzbVUPFAAAATgIAAEcAGAAAAAAAAQAAAKSBg0QHAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vcmVmbGVjdGlvbi1lbWJlZGRl
ZC1zdGRlcnIudHh0VVQFAAPfO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1qiISQAAAAAA
AAAAAAAAADQAGAAAAAAAAAAQAO1ByUUHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9pbmZyYXN0cnVjdHVyZS9VVAUAA+M7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADW
qIhJAAAAAAAAAAAAAAAASgAYAAAAAAAAABAA7UE3RgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9VVAUAA+M7
Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADWqIhJAAAAAAAAAAAAAAAAVgAYAAAAAAAAABAA
7UG7RgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJl
L2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9VVAUAA+M7Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADWqIhJF8HBd2oAAABsAAAAbgAYAAAAAAABAAAApIFLRwcAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50
ZXJmYWNlcy9jb2xsZWN0aW9ucy9yYWRpb25vZGVsaXN0LXN0ZGVyci50eHRVVAUAA+M7Slh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAADhqIhJAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UFdSAcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAUAA/Y7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADZqIhJAAAAAAAAAAAAAAAAQAAYAAAAAAAAABAA7UHG
SAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L1VUBQAD6TtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOCoiEkAAAAAAAAA
AAAAAABPABgAAAAAAAAAEADtQUBJBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQFAAP0O0pYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1qiISa+lm2l8AAAAEQEAAGcAGAAAAAAAAQAAAKSByUkH
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAUAA+Q7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWqIhJySp7AmgAAADGAAAAcgAYAAAAAAABAAAApIHm
SgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQFAAPkO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA16iISc16HvxoAAAAxgAAAG4A
GAAAAAAAAQAAAKSB+ksHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3Vn
aC1zdGRlcnIudHh0VVQFAAPlO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA16iISc16Hvxo
AAAAxgAAAHkAGAAAAAAAAQAAAKSBCk0HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA+U7Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADXqIhJzXoe/GgAAADGAAAAagAYAAAAAAABAAAApIElTgcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQAD5jtKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIANeoiEmAjMAlaAAAAMYAAAB1ABgAAAAAAAEAAACkgTFPBwBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUA
A+Y7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADXqIhJgIzAJWgAAADGAAAAbgAYAAAAAAAB
AAAApIFIUAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhLXN0ZGVy
ci50eHRVVAUAA+Y7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADYqIhJhNyl22gAAADGAAAA
eQAYAAAAAAABAAAApIFYUQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFk
YXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD5ztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANioiEmE3KXbaAAAAMYAAABpABgAAAAAAAEAAACkgXNSBwBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA+c7Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADYqIhJhNyl22gAAADGAAAAdAAYAAAAAAABAAAApIF+UwcAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA+c7Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADYqIhJf//i02gAAADGAAAAfAAYAAAAAAABAAAApIGUVAcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfY2FucGxheXRocm91Z2gt
c3RkZXJyLnR4dFVUBQAD6DtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANioiEl//+LTaAAA
AMYAAAB1ABgAAAAAAAEAAACkgbJVBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJf
Y2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA+g7Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADZqIhJnkKac7IAAAAvAQAAfwAYAAAAAAABAAAApIHJVgcAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQAD
6TtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANmoiEl7r4ctaAAAAMYAAAB4ABgAAAAAAAEA
AACkgTRYBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZHN0YXJ0X3Byb2dy
ZXNzLXN0ZGVyci50eHRVVAUAA+k7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZqIhJEsef
SmgAAADGAAAAZQAYAAAAAAABAAAApIFOWQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Bh
dXNlLXN0ZGVyci50eHRVVAUAA+o7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZqIhJEsef
SmgAAADGAAAAcAAYAAAAAAABAAAApIFVWgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Bh
dXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD6jtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANqoiEkSx59KaAAAAMYAAABkABgAAAAAAAEAAACkgWdbBwBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQFAAPrO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA2qiISRaX+rRoAAAAxgAAAG8AGAAAAAAAAQAAAKSBbVwHAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD6ztKWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANqoiEkWl/q0aAAAAMYAAABnABgAAAAAAAEAAACkgX5dBwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQFAAPsO0pYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA2qiISVthJG1oAAAAxgAAAHIAGAAAAAAAAQAAAKSBh14HAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD7DtK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANuoiElbYSRtaAAAAMYAAABoABgAAAAAAAEAAACk
gZtfBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQAD
7TtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANuoiElfMUGTaAAAAMYAAABzABgAAAAAAAEA
AACkgaVgBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Nfbm9hdXRvcGxheS1z
dGRlcnIudHh0VVQFAAPtO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA26iISYCL6AVoAAAA
xgAAAGoAGAAAAAAAAQAAAKSBumEHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF90aW1ldXBk
YXRlLXN0ZGVyci50eHRVVAUAA+47Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADcqIhJgIvo
BWgAAADGAAAAdQAYAAAAAAABAAAApIHGYgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Rp
bWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPvO0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA2KiISQAAAAAAAAAAAAAAAFoAGAAAAAAAAAAQAO1B3WMHAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9pbnRlcmZhY2VzL1VUBQAD5ztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANio
iEkAAAAAAAAAAAAAAABkABgAAAAAAAAAEADtQXFkBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50
ZXJmYWNlcy9UZXh0VHJhY2svVVQFAAPnO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA2KiI
Sa37e15jAAAAYwAAAHkAGAAAAAAAAQAAAKSBD2UHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRl
cmZhY2VzL1RleHRUcmFjay9hY3RpdmVDdWVzLXN0ZGVyci50eHRVVAUAA+c7Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADcqIhJhNuN+2gAAADGAAAAdwAYAAAAAAABAAAApIElZgcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRV
VAUAA/A7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADcqIhJyS1TImgAAADGAAAAcgAYAAAA
AAABAAAApIE+ZwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxh
eS1zdGRlcnIudHh0VVQFAAPwO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA3aiISc19Ntxo
AAAAxgAAAHIAGAAAAAAAAQAAAKSBUmgHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1
ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVUBQAD8TtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAANmoiEkAAAAAAAAAAAAAAABqABgAAAAAAAAAEADtQWZpBwBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvVVQFAAPpO0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAA2KiISSII8DBjAAAAYwAAAJEAGAAAAAAAAQAAAKSBCmoHAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXRvLW90aGVyLWRv
Y3VtZW50LXN0ZGVyci50eHRVVAUAA+g7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADYqIhJ
IgjwMGMAAABjAAAAjwAYAAAAAAABAAAApIE4awcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlp
bmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50
eHRVVAUAA+g7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZqIhJVqLbyK0AAADMAAAAjwAY
AAAAAAABAAAApIFkbAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJl
c291cmNlL3BhdXNlLXJlbW92ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA+k7Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADdqIhJzX023GgAAADGAAAAcwAYAAAAAAABAAAApIHabQcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4
dFVUBQAD8TtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAN2oiEk2XnHUaAAAAMYAAAB6ABgA
AAAAAAEAAACkge9uBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2Fu
cGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQAD8jtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AN2oiEk2XnHUaAAAAMYAAAB2ABgAAAAAAAEAAACkgQtwBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAAPyO0pYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA3aiISTZecdRoAAAAxgAAAHoAGAAAAAAAAQAAAKSBI3EHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRlcnIu
dHh0VVQFAAPyO0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4KiISTIOFCpoAAAAxgAAAHMA
GAAAAAAAAQAAAKSBP3IHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19w
bGF5aW5nLXN0ZGVyci50eHRVVAUAA/M7Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADgqIhJ
3+8xwtkAAADCAgAAhAAYAAAAAAABAAAApIFUcwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3NyY19y
ZWZsZWN0c19hdHRyaWJ1dGVfbm90X3NvdXJjZV9lbGVtZW50cy1zdGRlcnIudHh0VVQFAAP0O0pY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA2aiISQAAAAAAAAAAAAAAAFUAGAAAAAAAAAAQAO1B
63QHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay9VVAUAA+k7Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADZqIhJAAAAAAAAAAAAAAAAYwAYAAAAAAAAABAA7UF6dQcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvVVQFAAPpO0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAA2aiISaPUcTtjAAAAYwAAAIIAGAAAAAAAAQAAAKSBF3YHAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNrLWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50
eHRVVAUAA+k7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADgqIhJHaBrHGMAAABjAAAAYwAY
AAAAAAABAAAApIE2dwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvXzAwOC1zdGRlcnIudHh0
VVQFAAP0O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA2aiISQAAAAAAAAAAAAAAAFIAGAAA
AAAAAAAQAO1BNngHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAUAA+k7Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADZqIhJWiEdAt4AAADQAgAAbgAYAAAAAAABAAAApIHCeAcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L3RoZS1hdWRpby1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAUAA+k7Slh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADgqIhJAAAAAAAAAAAAAAAANQAYAAAAAAAAABAA7UFI
egcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9V
VAUAA/M7Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADgqIhJAAAAAAAAAAAAAAAARwAYAAAA
AAAAABAA7UG3egcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudC9VVAUAA/M7Slh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADgqIhJSjFb1WoAAABsAAAAWAAYAAAAAAABAAAApIE4ewcAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudC9idXR0
b24tc3RkZXJyLnR4dFVUBQAD8ztKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOGoiEkAAAAA
AAAAAAAAAAA5ABgAAAAAAAAAEADtQTR8BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL3NlbGVjdG9ycy9VVAUAA/Y7Slh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAADhqIhJAAAAAAAAAAAAAAAASAAYAAAAAAAAABAA7UGnfAcAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zZWxlY3RvcnMvcHNldWRvLWNsYXNzZXMvVVQF
AAP2O0pYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4aiISUvdTQNqAAAAbAAAAFoAGAAAAAAA
AQAAAKSBKX0HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
c2VsZWN0b3JzL3BzZXVkby1jbGFzc2VzL2NoZWNrZWQtc3RkZXJyLnR4dFVUBQAD9jtKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAO6oiEkAAAAAAAAAAAAAAAAtABgAAAAAAAAAEADtQSd+BwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9VVAUAAxA8Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADlqIhJDJThd6wAAABqAQAAVwAYAAAAAAABAAAApIGOfgcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
YWN0aXZlc291cmNlYnVmZmVycy1zdGRlcnIudHh0VVQFAAP9O0pYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA5aiISTxFubfCAAAAiQMAAFgAGAAAAAAAAQAAAKSBy38HAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZl
ci1tb2RlLXN0ZGVyci50eHRVVAUAA/47Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADlqIhJ
LTY2SJ4AAAC1AAAAZAAYAAAAAAABAAAApIEfgQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXR0YWNoLXN0b3BzLWRlbGF5aW5nLWxvYWQt
ZXZlbnQtc3RkZXJyLnR4dFVUBQAD/jtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOWoiEmT
Pq/nKAEAANwCAABMABgAAAAAAAEAAACkgVuCBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hdnRyYWNrcy1zdGRlcnIudHh0VVQFAAP+O0pY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5aiISS8YeXaeAAAAtQAAAEwAGAAAAAAAAQAAAKSB
CYQHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWJ1ZmZlcmVkLXN0ZGVyci50eHRVVAUAA/47Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADlqIhJRSRA6rsAAACJAwAASgAYAAAAAAABAAAApIEthQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2xvc2VkLXN0ZGVyci50eHRVVAUA
A/47Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnqIhJZnFdqisBAADIAwAAXwAYAAAAAAAB
AAAApIFshgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVk
aWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYS1iaXRyYXRlLXN0ZGVyci50eHRVVAUAAwE8Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADoqIhJb/ZIQS0BAADIAwAAZgAYAAAAAAABAAAApIEw
iAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtY29uZmlnLWNoYW5nZS1tcDQtYXYtYXVkaW8tYml0cmF0ZS1zdGRlcnIudHh0VVQFAAMDPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6aiISe6SnUuiAQAAfQQAAGYAGAAAAAAAAQAAAKSB
/YkHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWF2LXZpZGVvLWJpdHJhdGUtc3RkZXJyLnR4dFVUBQADBjxK
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOqoiElMnAS9TQEAAJQDAABfABgAAAAAAAEAAACk
gT+MBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQADCDxKWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOuoiEn6+8udSwEAAJQDAABhABgAAAAAAAEAAACkgSWOBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1j
b25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAAMKPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA7KiISeCtIjVNAQAAlAMAAGEAGAAAAAAAAQAAAKSBC5AHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZp
Zy1jaGFuZ2UtbXA0LXYtZnJhbWVzaXplLXN0ZGVyci50eHRVVAUAAww8Slh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADsqIhJeHePpigBAADkAgAASgAYAAAAAAABAAAApIHzkQcAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZGV0YWNoLXN0
ZGVyci50eHRVVAUAAww8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADtqIhJd8R74RwBAACe
AQAASAAYAAAAAAABAAAApIGfkwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS1zdGRlcnIudHh0VVQFAAMOPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA7aiISTQwJ2MdAQAAqQMAAEsAGAAAAAAAAQAAAKSBPZUHAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXByZWxvYWQt
c3RkZXJyLnR4dFVUBQADDjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO6oiElrBuzdIQEA
AIcCAABKABgAAAAAAAEAAACkgd+WBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQADDzxKWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAO6oiEmbsNNjwgAAAD4EAABUABgAAAAAAAEAAACkgYSYBwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3Vy
Y2VidWZmZXJsaXN0LXN0ZGVyci50eHRVVAUAAxA8Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AADuqIhJAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UHUmQcAaW5zcGVjdG9yL1VUBQADEDxKWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGGpiEkAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQRia
BwBpbnNwZWN0b3IvZGVidWdnZXIvVVQFAAPmPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
YamISQAAAAAAAAAAAAAAAB8AGAAAAAAAAAAQAO1BZZoHAGluc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50cy9VVAUAA+Y8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhqYhJP8yzu34AAACH
AAAASwAYAAAAAAABAAAApIG+mgcAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29s
dmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1hY3R1YWwudHh0VVQFAAPmPEpYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAYamISWX7/jOBGwAAmMgAAEkAGAAAAAAAAQAAAKSBwZsHAGluc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlv
bnMtZGlmZi50eHRVVAUAA+Y8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhqYhJP25f9Voa
AABuvQAATQAYAAAAAAABAAAApIHFtwcAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jl
c29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1leHBlY3RlZC50eHRVVAUAA+Y8Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABhqYhJ1g8iktJFAABiiwYAUQAYAAAAAAABAAAApIGm0gcA
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxsLXBhdXNlLWxv
Y2F0aW9ucy1wcmV0dHktZGlmZi5odG1sVVQFAAPmPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAYamISZNtj8xcAAAAXgAAAEsAGAAAAAAAAQAAAKSBAxkIAGluc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMtc3RkZXJyLnR4dFVU
BQAD5jxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO2oiEkF62SVCgYAAF8qAAA2ABgAAAAA
AAEAAACkgeQZCABpbnNwZWN0b3IvZGVidWdnZXIvY29udGludWVVbnRpbE5leHRSdW5Mb29wLXN0
ZGVyci50eHRVVAUAAw08Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADuqIhJAAAAAAAAAAAA
AAAADwAYAAAAAAAAABAA7UFeIAgAaW5zcGVjdG9yL3BhZ2UvVVQFAAMQPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA7qiISUP0MgauAAAAagEAACEAGAAAAAAAAQAAAKSBpyAIAGluc3BlY3Rv
ci9wYWdlL2FyY2hpdmUtc3RkZXJyLnR4dFVUBQADEDxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAPGoiEkAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQbAhCABqcXVlcnkvVVQFAAMWPEpYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8aiISWmMlF1qAAAAbAAAABwAGAAAAAAAAQAAAKSB8SEI
AGpxdWVyeS9hdHRyaWJ1dGVzLXN0ZGVyci50eHRVVAUAAxY8Slh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABNqYhJAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UGxIggAbWVkaWEvVVQFAAPCPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+KiIScb1H1F5AAAArgAAAB8AGAAAAAAAAQAAAKSB
8SIIAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAUAAyM8Slh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAACqYhJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UHDIwgAbWVkaWEvbWVk
aWEtc291cmNlL1VUBQADMzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPyoiElV4j3MxgAA
APUAAAA+ABgAAAAAAAEAAACkgRAkCABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFi
b3J0LXJlc2V0cy1wYXJzZXItc3RkZXJyLnR4dFVUBQADLDxKWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAP2oiEn8bbvbngAAALUAAAA6ABgAAAAAAAEAAACkgU4lCABtZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1zdGRlcnIudHh0VVQFAAMtPEpYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAAKmISeKQH56eAAAAtQAAADcAGAAAAAAAAQAAAKSBYCYIAG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcmVtb3ZlLWNyYXNoLXN0ZGVyci50eHRVVAUA
Ay88Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAAqYhJERN6wZ4AAAC1AAAAQAAYAAAAAAAB
AAAApIFvJwgAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zYW1wbGUtd3JvbmctdHJh
Y2staWQtc3RkZXJyLnR4dFVUBQADLzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAACpiElJ
+OQ2PAEAAKoBAAA8ABgAAAAAAAEAAACkgYcoCABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLXNlZWstZGV0YWNoLWNyYXNoLXN0ZGVyci50eHRVVAUAAy88Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAACqYhJuJFK058AAAC1AAAANQAYAAAAAAABAAAApIE5KggAbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1zdHBwLWNyYXNoLXN0ZGVyci50eHRVVAUAAzM8Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAMqYhJ2T4P8mgAAADGAAAAKAAYAAAAAAABAAAApIFHKwgAbWVk
aWEvc291cmNlcy1mYWxsYmFjay1jb2RlY3Mtc3RkZXJyLnR4dFVUBQADRzxKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAE2piEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQREsCABtZWRpYS90
cmFjay9VVAUAA8I8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNqYhJiDVoy34AAACHAAAA
KgAYAAAAAAABAAAApIFXLAgAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1hY3R1YWwu
dHh0VVQFAAPCPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATamISXG2iKQBAgAAwwMAACgA
GAAAAAAAAQAAAKSBOS0IAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtZGlmZi50eHRV
VAUAA8I8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNqYhJDPrk6jYBAAAzAgAALAAYAAAA
AAABAAAApIGcLwgAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1leHBlY3RlZC50eHRV
VAUAA8I8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNqYhJjtifWT0JAADcJgAAMAAYAAAA
AAABAAAApIE4MQgAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1wcmV0dHktZGlmZi5o
dG1sVVQFAAPCPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATamISd0y/2hcAAAAXgAAACoA
GAAAAAAAAQAAAKSB3zoIAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtc3RkZXJyLnR4
dFVUBQADwjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAypiEnPTinSkAAAAL0AAAAhABgA
AAAAAAEAAACkgZ87CABtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0ZGVyci50eHRVVAUAA0g8Slh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhqYhJw2CGHYEAAADoAgAAOwAYAAAAAAABAAAApIGK
PAgAbWVkaWEvdmlkZW8tbXV0ZWQtYWZ0ZXItc2V0dGluZy1wYWdlLW11dGVkLXN0YXRlLXN0ZGVy
ci50eHRVVAUAA208Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAmqYhJhDwFLsMAAADyBgAA
KAAYAAAAAAABAAAApIGAPQgAbWVkaWEvdmlkZW8tcG9zdGVyLWJhY2tncm91bmQtc3RkZXJyLnR4
dFVUBQADdzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAASpiEkAAAAAAAAAAAAAAAAIABgA
AAAAAAAAEADtQaU+CABwbHVnaW5zL1VUBQADNzxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AASpiEnuXXJFhgAAAPYAAAA7ABgAAAAAAAEAAACkgec+CABwbHVnaW5zL25wcC1zZXQtd2luZG93
LWNhbGxlZC1kdXJpbmctZGVzdHJ1Y3Rpb24tc3RkZXJyLnR4dFVUBQADNzxKWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAK+oiEkz7KLOngIAANgkAAAaABgAAAAAAAEAAACkgeI/CABweXdlYnNv
Y2tldC53cy5sb2ctZXJyLnR4dFVUBQADmjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK+o
iElpkIcNBwEAAI8CAAAaABgAAAAAAAEAAACkgdRCCABweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4
dFVUBQADmjtKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFmoiEkAAAAAAAAAAAAAAAAbABgA
AAAAAAAAAACkgS9ECABweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAA/o6Slh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAABZqIhJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIGERAgAcHl3
ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAP6OkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAT6qISUUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSB2UQIAHJlc3VsdHMuaHRtbFVUBQADpT5K
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAE2qiEkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADt
QfBsCAByZXRyaWVzL1VUBQADoj5KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANqpiEkAAAAA
AAAAAAAAAAAUABgAAAAAAAAAEADtQTJtCAByZXRyaWVzL2NvbXBvc2l0aW5nL1VUBQADyz1KWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANqpiEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQYBt
CAByZXRyaWVzL2NvbXBvc2l0aW5nL3ZpZGVvL1VUBQADyz1KWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIANqpiEk1ti2fqwAAABQDAAArABgAAAAAAAEAAACkgdRtCAByZXRyaWVzL2NvbXBvc2l0
aW5nL3ZpZGVvL3Bvc3Rlci1zdGRlcnIudHh0VVQFAAPLPUpYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA2qmISVu7pr+rAAAAFAMAADoAGAAAAAAAAQAAAKSB5G4IAHJldHJpZXMvY29tcG9zaXRp
bmcvdmlkZW8vdmlkZW8tY2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAUAA8s9Slh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADbqYhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEDcAgAcmV0
cmllcy9odHRwL1VUBQADzT1KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANupiEkAAAAAAAAA
AAAAAAATABgAAAAAAAAAEADtQUpwCAByZXRyaWVzL2h0dHAvdGVzdHMvVVQFAAPNPUpYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAA26mISQAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1Bl3AIAHJl
dHJpZXMvaHR0cC90ZXN0cy9tZWRpYS9VVAUAA809Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AADbqYhJAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UHqcAgAcmV0cmllcy9odHRwL3Rlc3RzL21l
ZGlhL2hscy9VVAUAA809Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADbqYhJIIDxOd0BAABi
BwAARAAYAAAAAAABAAAApIFBcQgAcmV0cmllcy9odHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1k
dXJhdGlvbi1hY2Nlc3NpYmlsaXR5LXN0ZGVyci50eHRVVAUAA809Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABNqohJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGccwgAcmV0cmllcy9pbnNw
ZWN0b3IvVVQFAAOiPkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAATaqISQAAAAAAAAAAAAAA
ABsAGAAAAAAAAAAQAO1B6HMIAHJldHJpZXMvaW5zcGVjdG9yL2RlYnVnZ2VyL1VUBQADoj5KWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAE2qiEkAAAAAAAAAAAAAAAAnABgAAAAAAAAAEADtQT10
CAByZXRyaWVzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9VVAUAA6I+Slh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABNqohJy07B3X4AAACHAAAAUwAYAAAAAAABAAAApIGedAgAcmV0
cmllcy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1
c2UtbG9jYXRpb25zLWFjdHVhbC50eHRVVAUAA6I+Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABNqohJ3FLENYYbAACoyAAAUQAYAAAAAAABAAAApIGpdQgAcmV0cmllcy9pbnNwZWN0b3IvZGVi
dWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRpb25zLWRpZmYu
dHh0VVQFAAOiPkpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATaqIST9uX/VaGgAAbr0AAFUA
GAAAAAAAAQAAAKSBupEIAHJldHJpZXMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jl
c29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy1leHBlY3RlZC50eHRVVAUAA6I+Slh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABNqohJCq3KjNdFAABqiwYAWQAYAAAAAAABAAAApIGjrAgA
cmV0cmllcy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwt
cGF1c2UtbG9jYXRpb25zLXByZXR0eS1kaWZmLmh0bWxVVAUAA6I+Slh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABNqohJ6swhGVwAAABeAAAAUwAYAAAAAAABAAAApIEN8wgAcmV0cmllcy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb2x2ZWQtZHVtcC1hbGwtcGF1c2UtbG9jYXRp
b25zLXN0ZGVyci50eHRVVAUAA6I+Slh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAGqYhJAAAA
AAAAAAAAAAAACwAYAAAAAAAAABAA7UH28wgAc2Nyb2xsYmFycy9VVAUAAzs8Slh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAGqYhJbr0jYTkAAABCAAAAOwAYAAAAAAABAAAApIE79AgAc2Nyb2xs
YmFycy9zY3JvbGxldmVudC1pZnJhbWUtbm8tc2Nyb2xsaW5nLXdoZWVsLXN0ZGVyci50eHRVVAUA
Azs8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABPqohJZ8YtL1rbCAAbIy8ACgAYAAAAAAAB
AAAApIHp9AgAc3RhdHMuanNvblVUBQADpT5KWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAADWp
iEkAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQYfQEQBzdmcvVVQFAAOWPEpYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAGqmISQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BxdARAHN2Zy9hcy1p
bWFnZS9VVAUAA2M8Slh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAaqYhJ2wjTQjsAAAA/AAAA
PwAYAAAAAAABAAAApIEM0REAc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWlt
YWdlcy1kaXNhYmxlZC1zdGRlcnIudHh0VVQFAANjPEpYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAANamISQAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BwNERAHN2Zy9jdXN0b20vVVQFAAOWPEpY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANamISSH09vA6AAAAQgAAADAAGAAAAAAAAQAAAKSB
BdIRAHN2Zy9jdXN0b20vdXNlLWludmFsaWRhdGUtY2xpY2stY3Jhc2gtc3RkZXJyLnR4dFVUBQAD
ljxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACmpiEkAAAAAAAAAAAAAAAALABgAAAAAAAAA
EADtQanSEQB3ZWJhcmNoaXZlL1VUBQADfjxKWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmp
iEnbCNNCOwAAAD8AAAA6ABgAAAAAAAEAAACkge7SEQB3ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwt
c3VicmVzb3VyY2UtYmVmb3JlbG9hZC1zdGRlcnIudHh0VVQFAAN+PEpYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA4KmISc9VL2yoAgAAnhIAABkAGAAAAAAAAQAAAKSBndMRAHdwdHdrX3Byb2Nl
c3NfbG9nLm91dC50eHRVVAUAA9Q9Slh1eAsAAQT1AQAABBQAAABQSwUGAAAAAJIBkgFkwgAAmNYR
AAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296708</attachid>
            <date>2016-12-09 14:56:22 -0800</date>
            <delta_ts>2016-12-09 15:45:56 -0800</delta_ts>
            <desc>Almost done.  Patch for EWS testing.  Need to write change logs.</desc>
            <filename>reg-calls-wip190.patch</filename>
            <type>text/plain</type>
            <size>336877</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1dGVkLWFy
Z3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1j
b21wdXRlZC1hcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9u
IHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTIpOwor
CitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBi
ICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNiKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtM2IpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgbzEgPSB7CisgICAgICAgIG9uZTogMSwKKyAgICAgICAgdHdv
OiAyCisgICAgfQorICAgIGxldCBvMiA9IHsKKyAgICAgICAgdGhyZWU6IDMsCisgICAgICAgIGZp
dmU6IDUKKyAgICB9OworICAgIGxldCBvMyA9IHsKKyAgICAgICAgZm91cjogNCwKKyAgICAgICAg
c2l4OiA2CisgICAgfTsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMihvMS5vbmUsIG8yLmZpdmUp
ICsgc3VtMmIobzEudHdvLCBvMS5vbmUgKyBvMi5maXZlKQorICAgICAgICAgICAgKyBzdW0zKG8y
LnRocmVlLCBvMy5mb3VyLCBvMi5maXZlKSArIHN1bTNiKG8xLnR3bywgbzIudGhyZWUgKyBvMi5m
aXZlLCBvMy5zaXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRl
c3QoKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNh
bGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1t
YW55LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1tYW55LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
ZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYjsK
K30KKworbm9JbmxpbmUoc3VtMmIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTNi
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bTNiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIoMSwg
MikgKyBzdW0yYigyLCAzKSArIHN1bTMoNSwgNSwgNSkgKyBzdW0zYigyLCA0LCA2KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1
bSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oMSwgMiwg
Myk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOworaWYg
KHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2Fs
bGVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHN1bShhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bSk7CisKK2Z1
bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7
CitpZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVz
dWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNhbGxlZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWNh
bGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1wb2x5LWNhbGxlZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rp
b24gc3VtMShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5l
KHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsg
YzsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAg
ICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworbGV0IGZ1bmN0aW9u
cyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7Cisg
ICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKysp
CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwgYiwgYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHkt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXBvbHktZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJuIGEg
KyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQoreworICAg
IHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwg
YikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVu
Y3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykK
K3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7
IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDQwLCAiVGVzdCIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2Fs
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIHN1bShhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5s
aW5lKHN1bSk7CisKK2Z1bmN0aW9uIHRhaWxDYWxsZXIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
c3VtKGIsIGEsIGMpOworfQorCitub0lubGluZSh0YWlsQ2FsbGVyKTsKKworZnVuY3Rpb24gdGVz
dChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSB0YWlsQ2FsbGVyKGEsIGIsIGMpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMSwgMiwgMyk7Citp
ZiAocmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZp
eHVwLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOwor
CitmdW5jdGlvbiBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgKGMgfCAwKTsK
K30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24g
c3VtNChhLCBiLCBjKQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5s
aW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwg
MCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsK
KworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBd
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9u
c1tpICUgNl0oYSwgYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0g
dGVzdCgyLCA0MCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
dmlydHVhbC1hcml0eS1maXh1cC1zdGFja2FyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
YXJpdHktZml4dXAtc3RhY2thcmdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
K2Z1bmN0aW9uIHN1bTEoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgKGQg
fCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYywgZCkK
K3sKKyAgICByZXR1cm4gYiArIGEgKyBjICsgKGQgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMik7
CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEg
KyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYywg
ZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
NCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSAr
IGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwg
YywgZCkKK3sKKyAgICByZXR1cm4gKGQgfCAwKSArIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUs
IHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiLCBjKQor
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlv
biBzdW0yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBi
OworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNSk7
CisKK2Z1bmN0aW9uIHN1bTYoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQor
Citub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywg
c3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAg
ICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0
MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwt
ZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtZXh0cmEtYXJpdHktY2FsbGVlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiKQorewor
ICAgIHJldHVybiBiICsgYTsKK30KKworbm9JbmxpbmUoc3VtMik7CisKK2Z1bmN0aW9uIHN1bTMo
YSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5j
dGlvbiBzdW00KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNSk7CisKK2Z1bmN0aW9uIHN1bTYoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBz
dW0zLCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDQwLCAyLCAiVGVzdCIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMzcsNiArMzIzNyw5IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJl
c3VsdCA9IHJ1bkpTQyh2bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgdm0tPmR1bXBDb3VudGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0Mu
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzU0LDYgKzEzNTQsNyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAq
LzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5oICovOyB9OworCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYy
MUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeVBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAv
KiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUZCNjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVu
aWNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAq
LzsgfTsKIAkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRD
MTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MjksNiArMzczMCw3IEBACiAJ
CTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFC
N0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5UG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBK
U1R5cGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
dGVzdFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtNTU3NCw2ICs1NTc2LDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAw
Qzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhC
QkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgKi8sCkBAIC03NzI3LDYgKzc3MzAsNyBAQAogCQkJCTc5
QjAwQ0JEMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Q0NDREQzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5UG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFC
MyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2
MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHJlZy5pc1NldCgpKTsKICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmln
aW4sIFJlZyByZWcsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgdHlwZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBB
cmd1bWVudFJlZzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNF
eHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1
ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRlclR5cGUoKSA6IERvdWJsZSkKLSAg
ICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFy
Z3VtZW50UmVnKCkuaXNHUFIoKQorICAgICAgICAgICAgICAgICAgICA/ICh2YWx1ZS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCkgfHwgdmFsdWUtPnR5cGUoKSA9PSBJbnQzMikKKyAgICAgICAgICAg
ICAgICAgICAgOiB2YWx1ZS0+dHlwZSgpID09IERvdWJsZSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgICAg
IGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3
IEBAIENhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKCkKICAgICAsIG1faGFzU2VlbkNsb3N1cmUo
ZmFsc2UpCiAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQogICAgICwgbV9hbGxvd1N0dWJzKHRy
dWUpCisgICAgLCBtX2FyZ3VtZW50c0xvY2F0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcmd1
bWVudHNMb2NhdGlvbjo6U3RhY2tBcmdzKSkKICAgICAsIG1faXNMaW5rZWQoZmFsc2UpCiAgICAg
LCBtX2NhbGxUeXBlKE5vbmUpCiAgICAgLCBtX2NhbGxlZUdQUigyNTUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMDk2
MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWxsTW9kZS5oIgogI2lu
Y2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKKyNpbmNsdWRlICJKSVRFbnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1NlbnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtMTU3LDkgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIG1fc3R1YiB8fCBtX2NhbGxlZU9yQ29kZUJsb2NrOyB9
CiAgICAgdm9pZCB1bmxpbmsoVk0mKTsKIAotICAgIHZvaWQgc2V0VXBDYWxsKENhbGxUeXBlIGNh
bGxUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIHVuc2lnbmVkIGNhbGxlZUdQUikKKyAgICB2
b2lkIHNldFVwQ2FsbChDYWxsVHlwZSBjYWxsVHlwZSwgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24sIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQog
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc1ZhcmFyZ3NDYWxsVHlwZShjYWxsVHlwZSkgfHwgKGFy
Z3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykpOworCiAgICAgICAgIG1fY2FsbFR5cGUgPSBj
YWxsVHlwZTsKKyAgICAgICAgbV9hcmd1bWVudHNMb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihhcmd1bWVudHNMb2NhdGlvbik7CiAgICAgICAgIG1fY29kZU9yaWdpbiA9IGNvZGVPcmln
aW47CiAgICAgICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOwogICAgIH0KQEAgLTI3NSw2ICsy
NzksMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1f
Y2FsbFR5cGUpOwogICAgIH0KIAorICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcmd1bWVudHNMb2NhdGlv
bj4obV9hcmd1bWVudHNMb2NhdGlvbik7CisgICAgfQorCisgICAgYm9vbCBhcmd1bWVudHNJblJl
Z2lzdGVycygpCisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNMb2NhdGlvbiAhPSBT
dGFja0FyZ3M7CisgICAgfQorCiAgICAgdWludDMyX3QqIGFkZHJlc3NPZk1heE51bUFyZ3VtZW50
cygpCiAgICAgewogICAgICAgICByZXR1cm4gJm1fbWF4TnVtQXJndW1lbnRzOwpAQCAtMzM5LDYg
KzM1Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NlZW5DbG9zdXJlIDogMTsKICAgICBi
b29sIG1fY2xlYXJlZEJ5R0MgOiAxOwogICAgIGJvb2wgbV9hbGxvd1N0dWJzIDogMTsKKyAgICB1
bnNpZ25lZCBtX2FyZ3VtZW50c0xvY2F0aW9uIDogNDsKICAgICBib29sIG1faXNMaW5rZWQgOiAx
OwogICAgIHVuc2lnbmVkIG1fY2FsbFR5cGUgOiA0OyAvLyBDYWxsVHlwZQogICAgIHVuc2lnbmVk
IG1fY2FsbGVlR1BSIDogODsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNyw2ICsxODM3
LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIAogICAgICwgbV9o
YXNCZWVuQ29tcGlsZWRXaXRoRlRMKGZhbHNlKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90aGVy
Lm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faXNTdHJpY3RNb2RlKG90aGVyLm1faXNTdHJpY3RN
b2RlKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMoZmFsc2UpCiAgICAgLCBtX2NvZGVU
eXBlKG90aGVyLm1fY29kZVR5cGUpCiAgICAgLCBtX3VubGlua2VkQ29kZSgqb3RoZXIubV92bSwg
dGhpcywgb3RoZXIubV91bmxpbmtlZENvZGUuZ2V0KCkpCiAgICAgLCBtX2hhc0RlYnVnZ2VyU3Rh
dGVtZW50KGZhbHNlKQpAQCAtMTkwMiw2ICsxOTAzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Vk0qIHZtLCBTdHJ1Y3R1cmUqIAogICAgICwgbV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMKGZhbHNl
KQogICAgICwgbV9pc0NvbnN0cnVjdG9yKHVubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9y
KCkpCiAgICAgLCBtX2lzU3RyaWN0TW9kZSh1bmxpbmtlZENvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgLCBtX3ByZWZlcnNTdGFja0FyZ3VtZW50cyhmYWxzZSkKICAgICAsIG1fY29kZVR5
cGUodW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX3VubGlua2VkQ29kZSht
X2dsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgdW5saW5rZWRDb2RlQmxvY2spCiAgICAgLCBtX2hh
c0RlYnVnZ2VyU3RhdGVtZW50KGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNyArMzY5
LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7CiAg
ICAgfQotICAgIAorCisgICAgdm9pZCBzZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMoKQorICAgIHsK
KyAgICAgICAgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMgPSB0cnVlOworICAgIH0KKworICAgIGJv
b2wgcHJlZmVyc1N0YWNrQXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3ByZWZlcnNTdGFja0FyZ3VtZW50czsKKyAgICB9CisKICAgICBDb2RlVHlwZSBjb2RlVHlwZSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29kZVR5cGU+KG1fY29k
ZVR5cGUpOwpAQCAtODQ1LDYgKzg1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1faGFzQmVlbkNv
bXBpbGVkV2l0aEZUTCA6IDE7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJv
b2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMg
OiAxOwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOyAvLyBDb2RlVHlwZQogCiAgICAgLy8g
SW50ZXJuYWwgbWV0aG9kcyBmb3IgdXNlIGJ5IHZhbGlkYXRpb24gY29kZS4gSXQgd291bGQgYmUg
cHJpdmF0ZSBpZiBpdCB3YXNuJ3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgbV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLT5k
aXNhbGxvd1N0dWJzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcmFyZURhdGEtPmNh
bGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2Fs
bCwgc3R1YkluZm8uY29kZU9yaWdpbiwgbG9hZGVkVmFsdWVHUFIpOworICAgICAgICAgICAgICAg
IENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2Fk
ZWRWYWx1ZUdQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsK
IApAQCAtMTEwNSw3ICsxMTA1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZQogICAgICAgICAgICAgLy8gV2UgKmFsd2F5cyoga25vdyB0aGF0IHRoZSBnZXR0ZXIv
c2V0dGVyLCBpZiBub24tbnVsbCwgaXMgYSBjZWxsLgogICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86OnJlZ1Qx
KTsKICNlbmRpZgotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3JhcmVEYXRh
LT5jYWxsTGlua0luZm8uZ2V0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZQogCiAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluaygKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRKSVRD
YWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tB
cmdzKSkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9t
QWNjZXNzb3JHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IG1fdHlwZSA9
PSBDdXN0b21BY2Nlc3NvclNldHRlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsMTcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBub24tY2xlYXIg
dmFsdWUuCiAgICAgICAgIEFTU0VSVCghbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKG5vZGUt
PmxvY2FsKCkpLmlzQ2xlYXIoKSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNh
c2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxl
cygpLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKKyAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWRKU1ZhbHVlKSB7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9n
cmFwaCwgdHlwZUZpbHRlckZvcihub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3Jt
YXQoKSkpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgY2Fz
ZSBGb3J3YXJkVmFyYXJnczogewogICAgICAgICAvLyBGSVhNRTogRm9yd2FyZFZhcmFyZ3Mgc2hv
dWxkIGNoZWNrIGlmIHRoZSBjb3VudCBiZWNvbWVzIGtub3duLCBhbmQgaWYgaXQgZG9lcywgaXQg
c2hvdWxkIHR1cm4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0cnVjdCBCYXNp
Y0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBib29sIGlzTGlua2VkOwogI2VuZGlm
CiAgICAgYm9vbCBpc1JlYWNoYWJsZTsKLSAgICAKKwogICAgIFZlY3RvcjxOb2RlKj4gcGhpczsK
ICAgICBQcmVkZWNlc3Nvckxpc3QgcHJlZGVjZXNzb3JzOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjg3LDIwICszNjg3LDY4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBvZiBh
biBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAgIC8v
IG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9j
dXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsK
LSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwotICAg
ICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwg
YnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KLSAgICAgICAgLy8gZXhpdE9L
ID0gdHJ1ZS4KKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2sucmVzaXplKG1fbnVt
QXJndW1lbnRzKTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnJlc2l6
ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIC8vIENyZWF0ZSBhbGwgR2V0QXJndW1lbnRSZWdp
c3RlciBub2RlcyBmaXJzdCBhbmQgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBNb3ZIaW50IG5vZGVz
LAorICAgICAgICAvLyBmb2xsb3dlZCBieSB0aGUgY29ycmVzcG9uZGluZyBTZXRMb2NhbCBub2Rl
cyBhbmQgZmluYWxseSBhbnkgU2V0QXJndW1lbnQgbm9kZXMgZm9yCisgICAgICAgIC8vIHRoZSBy
ZW1haW5pbmcgYXJndW1lbnRzLgorICAgICAgICAvLyBXZSBkbyB0aGlzIHRvIG1ha2UgdGhlIGV4
aXQgcHJvY2Vzc2luZyBjb3JyZWN0LiBXZSBzdGFydCB3aXRoIG1fZXhpdE9LID0gdHJ1ZSBzaW5j
ZQorICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNhbiBleGl0LCBldmVuIHRo
b3VnaCB0aGV5IGRvbid0LiBUaGUgTW92SGludCdzIHRlY2huaWNhbGx5IGNvdWxkCisgICAgICAg
IC8vIGV4aXQgYnV0IHdvbid0LiBUaGUgU2V0TG9jYWxzIGNhbiBleGl0IGFuZCB0aGVyZWZvcmUg
d2Ugd2FudCBhbGwgdGhlIE1vdkhpbnRzCisgICAgICAgIC8vIGJlZm9yZSB0aGUgZmlyc3QgU2V0
TG9jYWwgc28gdGhhdCB0aGUgcmVnaXN0ZXIgc3RhdGUgaXMgY29uc2lzdGVudC4KKyAgICAgICAg
Ly8gV2UgZG8gYWxsIHRoaXMgcHJvY2Vzc2luZyBiZWZvcmUgY3JlYXRpbmcgYW55IFNldEFyZ3Vt
ZW50IG5vZGVzIHNpbmNlIHRoZXkgYXJlCisgICAgICAgIC8vIG1vcmFsbHkgZXF1aXZhbGVudCB0
byB0aGUgU2V0TG9jYWxzIGZvciBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzLgogICAgICAgICBt
X2V4aXRPSyA9IHRydWU7Ci0gICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KSB7CisgICAgICAgIAorICAgICAgICB1
bnNpZ25lZCBudW1SZWdpc3RlckFyZ3VtZW50cyA9IHN0ZDo6bWluKG1fbnVtQXJndW1lbnRzLCBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKKworICAgICAgICBWZWN0
b3I8Tm9kZSosIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM+IGdldEFy
Z3VtZW50UmVnaXN0ZXJOb2RlczsKKworICAgICAgICAvLyBGaXJzdCBjcmVhdGUgR2V0QXJndW1l
bnRSZWdpc3RlciBub2Rlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbnVtUmVnaXN0ZXJBcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAg
IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChHZXRBcmd1bWVudFJlZ2lzdGVyLCBPcEluZm8oMCksCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1l
bnQpKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCB0aGUgTW92SGludCdz
IGZvciB0aGUgR2V0QXJndW1lbnRSZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJn
dW1lbnRSZWdpc3Rlck5vZGVzW2ldOworICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBP
cEluZm8odmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpLCBnZXRBcmd1bWVu
dFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGV4aXQgYW55bW9yZS4KKyAgICAg
ICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBFeGl0IGlz
IG5vdyBva2F5LCBidXQgd2UgbmVlZCB0byBmZW5jZSB3aXRoIGFuIEV4aXRPSyBub2RlLgorICAg
ICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAg
ICAgICAvLyBDcmVhdGUgYWxsIHRoZSBTZXRMb2NhbHMncyBmb3IgdGhlIEdldEFyZ3VtZW50UmVn
aXN0ZXIgbm9kZXMgY3JlYXRlZCBhYm92ZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
Tm9kZSogZ2V0QXJndW1lbnRSZWdpc3RlciA9IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlc1tpXTsK
KyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3
VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKyAgICAg
ICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFp
bGVkKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICB2YXJpYWJs
ZUFjY2Vzc0RhdGEtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOworICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBh
ZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgZ2V0QXJndW1l
bnRSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWls
LmFyZ3VtZW50KGkpID0gc2V0TG9jYWw7CisgICAgICAgICAgICBnZXRBcmd1bWVudFJlZ2lzdGVy
LT5zZXRWYXJpYWJsZUFjY2Vzc0RhdGEoc2V0TG9jYWwtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW2ldID0gc2V0TG9jYWw7Cisg
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0gPSBnZXRBcmd1bWVu
dFJlZ2lzdGVyOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSBjcmVhdGUgYW55IFNl
dEFyZ3VtZW50IG5vZGVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJndW1lbnQgPCBtX251bUFyZ3Vt
ZW50czsgKythcmd1bWVudCkgewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSgKICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOwogICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNo
ZSkpOwogICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVk
KAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwotICAgICAgICAgICAgCiAg
ICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9w
SW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVu
dF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNr
W2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
c0ZvckNoZWNraW5nW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwg
c2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDgxMCw4ICs0ODU4LDEwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdW5ib3ggb3VyIGFyZ3VtZW50cyBoZXJl
IHNpbmNlIHRoYXQgd29uJ3QgYmUKICAgICAgICAgICAgIC8vIGRvbmUgYnkgdGhlIGFyZ3VtZW50
cyBvYmplY3QgY3JlYXRpb24gbm9kZSBhcyB0aGF0IG5vZGUgbWF5IG5vdCBleGlzdC4KICAgICAg
ICAgICAgIG5vdGljZUFyZ3VtZW50c1VzZSgpOwotICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4o
KTsKICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlVmFyYXJnc0Nh
bGwoY3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzLCBDYWxsTW9kZTo6
VGFpbCk7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGluc2VydCBmbHVzaCBub2RlcyBmb3Ig
b3VyIGFyZ3VtZW50cyBhZnRlciB0aGUgVGFpbENhbGxGb3J3YXJkVmFyYXJncworICAgICAgICAg
ICAgLy8gbm9kZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBmbHVzaGVkIHRvIHRoZSBzdGFjayBhbmQg
a2VwdCBhbGl2ZS4KKyAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVj
dGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxs
ZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIC8vIElmIHRo
ZSBjYWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwYXJzZSBhbnkgZnVydGhlciBi
eXRlY29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwgZXhpdCB0aGUgZnVuY3Rpb24uCiAgICAgICAg
ICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4gd2Ugd2Fu
dCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3BfanVtcCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNs
ZWFuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
OSwxNCArMjk5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBUaGUgcnVsZXMgZm9yIHRo
cmVhZGVkIENQUyBmb3JtOgogICAgICAgICAgICAgLy8gCiAgICAgICAgICAgICAvLyBIZWFkIHZh
cmlhYmxlOiBkZXNjcmliZXMgd2hhdCBpcyBsaXZlIGF0IHRoZSBoZWFkIG9mIHRoZSBiYXNpYyBi
bG9jay4KLSAgICAgICAgICAgIC8vIEhlYWQgdmFyaWFibGUgbGlua3MgbWF5IHJlZmVyIHRvIEZs
dXNoLCBQaGFudG9tTG9jYWwsIFBoaSwgb3IgU2V0QXJndW1lbnQuCi0gICAgICAgICAgICAvLyBT
ZXRBcmd1bWVudCBtYXkgb25seSBhcHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suCisgICAgICAgICAg
ICAvLyBIZWFkIHZhcmlhYmxlIGxpbmtzIG1heSByZWZlciB0byBGbHVzaCwgUGhhbnRvbUxvY2Fs
LCBQaGksIEdldEFyZ3VtZW50UmVnaXN0ZXIKKyAgICAgICAgICAgIC8vIG9yIFNldEFyZ3VtZW50
LgorICAgICAgICAgICAgLy8gR2V0QXJndW1lbnRSZWdpc3RlciBhbmQgU2V0QXJndW1lbnQgbWF5
IG9ubHkgYXBwZWFyIGluIHRoZSByb290IGJsb2NrLgogICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgIC8vIFRhaWwgdmFyaWFibGU6IHRoZSBsYXN0IHRoaW5nIHRoYXQgaGFwcGVuZWQgdG8gdGhl
IHZhcmlhYmxlIGluIHRoZSBibG9jay4KLSAgICAgICAgICAgIC8vIEl0IG1heSBiZSBhIEZsdXNo
LCBQaGFudG9tTG9jYWwsIEdldExvY2FsLCBTZXRMb2NhbCwgU2V0QXJndW1lbnQsIG9yIFBoaS4K
LSAgICAgICAgICAgIC8vIFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBi
bG9jay4gTm90ZSB0aGF0IGlmIHRoZXJlIGV2ZXIKLSAgICAgICAgICAgIC8vIHdhcyBhIEdldExv
Y2FsIHRvIHRoZSB2YXJpYWJsZSwgYW5kIGl0IHdhcyBmb2xsb3dlZCBieSBQaGFudG9tTG9jYWxz
IGFuZAotICAgICAgICAgICAgLy8gRmx1c2hlcyBidXQgbm90IFNldExvY2FscywgdGhlbiB0aGUg
dGFpbCB2YXJpYWJsZSB3aWxsIGJlIHRoZSBHZXRMb2NhbC4KKyAgICAgICAgICAgIC8vIEl0IG1h
eSBiZSBhIEZsdXNoLCBQaGFudG9tTG9jYWwsIEdldExvY2FsLCBTZXRMb2NhbCwgR2V0QXJndW1l
bnRSZWdpc3RlciwKKyAgICAgICAgICAgIC8vIFNldEFyZ3VtZW50LCBvciBQaGkuIEdldEFyZ3Vt
ZW50UmVnaXN0ZXIgYW5kIFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhcgorICAgICAgICAgICAg
Ly8gaW4gdGhlIHJvb3QgYmxvY2suIE5vdGUgdGhhdCBpZiB0aGVyZSBldmVyIHdhcyBhIEdldExv
Y2FsIHRvIHRoZSB2YXJpYWJsZSwKKyAgICAgICAgICAgIC8vIGFuZCBpdCB3YXMgZm9sbG93ZWQg
YnkgUGhhbnRvbUxvY2FscyBhbmQgRmx1c2hlcyBidXQgbm90IFNldExvY2FscywgdGhlbgorICAg
ICAgICAgICAgLy8gdGhlIHRhaWwgdmFyaWFibGUgd2lsbCBiZSB0aGUgR2V0TG9jYWwuCiAgICAg
ICAgICAgICAvLyBUaGlzIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgeW91IG9ubHkgY2FyZSB0aGF0
IHRoZSB0YWlsIHZhcmlhYmxlIGlzIGEKICAgICAgICAgICAgIC8vIEZsdXNoIG9yIFBoYW50b21M
b2NhbCBpZiBub3RoaW5nIGVsc2UgaW50ZXJlc3RpbmcgaGFwcGVuZWQuIExpa2V3aXNlLCBpZgog
ICAgICAgICAgICAgLy8gdGhlcmUgZXZlciB3YXMgYSBTZXRMb2NhbCBhbmQgaXQgd2FzIGZvbGxv
d2VkIGJ5IEZsdXNoZXMsIHRoZW4gdGhlIHRhaWwKQEAgLTM2NywxMiArMzY5LDEzIEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdm9pZCBzcGVjaWFsQ2FzZUFyZ3VtZW50cygpCiAgICAgewotICAgICAg
ICAvLyBOb3JtYWxseSwgYSBTZXRBcmd1bWVudCBkZW5vdGVzIHRoZSBzdGFydCBvZiBhIGxpdmUg
cmFuZ2UgZm9yIGEgbG9jYWwncyB2YWx1ZSBvbiB0aGUgc3RhY2suCi0gICAgICAgIC8vIEJ1dCB0
aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1h
Y2hpbmUgQ29kZUJsb2NrIGdldAotICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBo
YXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBh
cmd1bWVudHMKLSAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZv
ciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQot
ICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50
Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAvLyBOb3JtYWxs
eSwgYSBTZXRBcmd1bWVudCBvciBTZXRMb2NhbCBkZW5vdGVzIHRoZSBzdGFydCBvZiBhIGxpdmUg
cmFuZ2UgZm9yCisgICAgICAgIC8vIGEgbG9jYWwncyB2YWx1ZSBvbiB0aGUgc3RhY2suIEJ1dCB0
aG9zZSBTZXRBcmd1bWVudHMgYW5kIFNldExvY2FscyB1c2VkCisgICAgICAgIC8vIGZvciB0aGUg
YWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0IHNwZWNpYWwtY2Fz
ZWQuIFdlIGNvdWxkIGhhdmUKKyAgICAgICAgLy8gaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQg
bm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwK
KyAgICAgICAgLy8gYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVt
ZWQgbGlrZSBJUiBvdmVya2lsbC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5t
X2FyZ3VtZW50c09uU3RhY2suc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgbV9ncmFwaC5ibG9j
aygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9h
cmd1bWVudHNPblN0YWNrW2ldKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtp
bmQgb3BlcmFuZEtpbmQ+CkBAIC00ODAsNiArNDgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAg
ICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIEZsdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNiArNDA2LDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhpOgogICAgIGNh
c2UgUGhhbnRvbUxvY2FsOgogICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1
bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNl
IFN3aXRjaDoKQEAgLTQ3MCw3ICs0NzEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICAv
LyBERkcgYmFja2VuZCByZXF1aXJlcyB0aGF0IHRoZSBsb2NhbHMgdGhhdCB0aGlzIHJlYWRzIGFy
ZSBmbHVzaGVkLiBGVEwgYmFja2VuZCBjYW4gaGFuZGxlIHRob3NlCiAgICAgICAgIC8vIGxvY2Fs
cyBiZWluZyBwcm9tb3RlZC4KLSAgICAgICAgaWYgKCFpc0ZUTChncmFwaC5tX3BsYW4ubW9kZSkp
CisgICAgICAgIGlmICghaXNGVEwoZ3JhcGgubV9wbGFuLm1vZGUpICYmICFub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmVhZChTdGFjayk7CiAgICAg
ICAgIAogICAgICAgICAvLyBFdmVuIHRob3VnaCBpdCdzIHBoYW50b20sIGl0IHN0aWxsIGhhcyB0
aGUgcHJvcGVydHkgdGhhdCBvbmUgY2FuJ3QgYmUgcmVwbGFjZWQgd2l0aCBhbm90aGVyLgpAQCAt
NTU5LDExICs1NjAsMTggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAg
ICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIAorICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAg
Ly8gV2UgcmVhZCBhbGwgYXJndW1lbnRzIGFmdGVyICJ0aGlzIi4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmcgPSAxOyBhcmcgPCBncmFwaC5tX2FyZ3VtZW50c09uU3RhY2suc2l6ZSgpOyBhcmcr
KykKKyAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmcpKSk7CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShT
aWRlU3RhdGUpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldEdldHRlcjoKICAgICAg
ICAgcmVhZChHZXR0ZXJTZXR0ZXJfZ2V0dGVyKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihH
ZXR0ZXJMb2MsIEdldHRlclNldHRlcl9nZXR0ZXIsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDggQEAgZW51bSBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25S
ZXN1bHQgeyBTdHJ1YwogCiBlbnVtIE9wdGltaXphdGlvbkZpeHBvaW50U3RhdGUgeyBCZWZvcmVG
aXhwb2ludCwgRml4cG9pbnROb3RDb252ZXJnZWQsIEZpeHBvaW50Q29udmVyZ2VkIH07CiAKK2Vu
dW0gU3RyZW5ndGhSZWR1Y2VBcmd1bWVudEZsdXNoZXMgeyBEb250T3B0aW1pemVBcmd1bWVudEZs
dXNoZXMsIE9wdGltaXplQXJndW1lbnRGbHVzaGVzIH07CisKIC8vIERlc2NyaWJlcyB0aGUgZm9y
bSB5b3UgY2FuIGV4cGVjdCB0aGUgZW50aXJlIGdyYXBoIHRvIGJlIGluLgogZW51bSBHcmFwaEZv
cm0gewogICAgIC8vIExvYWRTdG9yZSBmb3JtIG1lYW5zIHRoYXQgYmFzaWMgYmxvY2tzIG1heSBm
cmVlbHkgdXNlIEdldExvY2FsLCBTZXRMb2NhbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAg
IGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrKTsKKyAgICAgICAgY2xl
YW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nKTsKIAogICAgICAgICAv
LyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldEZyb21Bcmd1bWVu
dHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0
ZXI6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIExvZ1NoYWRvd0NoaWNrZW5Qcm9s
b2d1ZToKICAgICBjYXNlIExvZ1NoYWRvd0NoaWNrZW5UYWlsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5
MCw5IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAvLyBtYWtl
IHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2VzIGZpbmFsaXphdGlvbiBvbiB0
aGUgbWFpbiB0aHJlYWQuCiAgICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcik7Ci0gICAgdm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KTsKLSAgICB2bS5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7
CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
OworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rRGlyZWN0Q2FsbFRodW5rR2Vu
ZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua1BvbHltb3JwaGlj
Q2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICAKICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCiAg
ICAgICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVy
YWwoIlByZXBhcmluZyBmb3IgREZHIGNvbXBpbGF0aW9uLiIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc4Niw2ICsxNzg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6Cisg
ICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgICAg
ICBjYXNlIEdldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
ZW5lcmF0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiAr
MTA0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGZvcm1hdCAmIERhdGFGb3JtYXRKUyk7
CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgZm9ybWF0KTsKICAgICB9CisK
KyAgICB2b2lkIGluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3Qg
dXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFGb3JtYXQgcmVnaXN0ZXJGb3JtYXQgPSAgRGF0YUZv
cm1hdEpTKQorICAgIHsKKyAgICAgICAgbV9ub2RlID0gbm9kZTsKKyAgICAgICAgbV91c2VDb3Vu
dCA9IHVzZUNvdW50OworICAgICAgICBtX3JlZ2lzdGVyRm9ybWF0ID0gcmVnaXN0ZXJGb3JtYXQ7
CisgICAgICAgIG1fc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0Tm9uZTsKKyAgICAgICAgbV9jYW5G
aWxsID0gZmFsc2U7CisgICAgICAgIHUuZ3ByID0gZ3ByOworICAgICAgICBtX2Jvcm5Gb3JPU1Ig
PSBmYWxzZTsKKyAgICAgICAgbV9pc0NvbnN0YW50ID0gZmFsc2U7CisgICAgICAgIEFTU0VSVCht
X3VzZUNvdW50KTsKKyAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQgaW5p
dEpTVmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyB0YWdHUFIsIEdQ
UlJlZyBwYXlsb2FkR1BSLCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NCw3ICsyOTQsNiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLnZhcmlhbnRz
LnNpemUoKTsgKytpKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0
YS52YXJpYW50c1tpXSwgY29udGV4dCkpOwogICAgIH0KLSAgICBBU1NFUlQobm9kZS0+aGFzVmFy
aWFibGVBY2Nlc3NEYXRhKCp0aGlzKSA9PSBub2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSk7CiAg
ICAgaWYgKG5vZGUtPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgqdGhpcykpIHsKICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT50cnlHZXRWYXJpYWJs
ZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YSkgewpAQCAtMzcz
LDYgKzM3Miw4IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEtPmNhc2VzW2ldLnZhbHVl
LCBjb250ZXh0KSwgIjoiLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQpOwogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJkZWZhdWx0OiIsIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICB9CisgICAgaWYg
KG5vZGUtPmhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKQorICAgICAgICBvdXQucHJpbnQoY29t
bWEsIG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpLCAiKCIsIEdQUkluZm86OnRvQXJndW1l
bnRSZWdpc3Rlcihub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSksICIpIik7CiAgICAgQ2xv
YmJlclNldCByZWFkczsKICAgICBDbG9iYmVyU2V0IHdyaXRlczsKICAgICBhZGRSZWFkc0FuZFdy
aXRlcygqdGhpcywgbm9kZSwgcmVhZHMsIHdyaXRlcyk7CkBAIC0zOTYsNyArMzk3LDcgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJXYXNIb2lzdGVkIik7CiAgICAgb3V0LnByaW50KCIpIik7CiAKLSAgICBpZiAobm9k
ZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgJiYgbm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRh
KCkpCisgICAgaWYgKChub2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSB8fCBub2RlLT5vcCgpID09
IEdldEFyZ3VtZW50UmVnaXN0ZXIpICYmIG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgp
KQogICAgICAgICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9k
ZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSkpOwogICAgIGVsc2Ug
aWYgKG5vZGUtPmhhc0hlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgIG91dC5wcmludCgiICBwcmVk
aWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSk7CkBA
IC01MDYsOCArNTA3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVt
cEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwg
IjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlv
blN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAg
ICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3Jt
YXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAg
ICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAi
XG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgY2hl
Y2tpbmc6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzRm9yQ2hlY2tpbmcpLCAiXG4iKTsKKyAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBvbiBzdGFjazogIiwgbGlzdER1bXAobV9hcmd1bWVu
dHNPblN0YWNrKSwgIlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgiXG4iKTsKICAgICAKICAg
ICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC0xNjIwLDEzICsxNjIzLDEzIEBAIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgaWYgKCFjdXJyZW50
Tm9kZSB8fCBub2RlLT5vcmlnaW4gIT0gY3VycmVudE5vZGUtPm9yaWdpbikgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2so
KnRoaXMpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgfHwg
bm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CiAgICAgICAgICAgICAgICAgVmFs
dWVQcm9maWxlKiByZXN1bHQgPSBbJl0gKCkgLT4gVmFsdWVQcm9maWxlKiB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3Vt
ZW50ID0gbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3Vt
ZW50Tm9kZSA9IG1fYXJndW1lbnRzT25TdGFja1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlIHx8ICFhcmd1bWVudE5vZGUtPmFjY2Vzc2VzU3RhY2soKnRo
aXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAy
MDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1OSw3ICs4NTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsQ2F0Y2hFeGNl
cHRpb25Jbk1hY2hpbmVGcmFtZShDb2RlT3JpZ2luLCBDb2RlT3JpZ2luJiBvcENhdGNoT3JpZ2lu
T3V0LCBIYW5kbGVySW5mbyomIGNhdGNoSGFuZGxlck91dCk7CiAgICAgCiAgICAgYm9vbCBuZWVk
c1Njb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBt
X2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQotICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CisgICAgYm9vbCBuZWVkc0Zs
dXNoZWRUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2Rl
QmxvY2stPnVzZXNFdmFsKCk7IH0KIAogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsK
QEAgLTg3OCw5ICs4NzgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgQmFnPFN0b3JhZ2VBY2Nlc3NE
YXRhPiBtX3N0b3JhZ2VBY2Nlc3NEYXRhOwogICAgIAotICAgIC8vIEluIENQUywgdGhpcyBpcyBh
bGwgb2YgdGhlIFNldEFyZ3VtZW50IG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNo
aW5lIGNvZGUgYmxvY2sKLSAgICAvLyB0aGF0IHN1cnZpdmVkIERDRS4gQWxsIG9mIHRoZW0gZXhj
ZXB0IG1heWJlICJ0aGlzIiB3aWxsIHN1cnZpdmUgRENFLCBiZWNhdXNlIG9mIHRoZSBGbHVzaAot
ICAgIC8vIG5vZGVzLgorICAgIC8vIEluIENQUywgdGhpcyBpcyBhbGwgb2YgdGhlIEdldEFyZ3Vt
ZW50UmVnaXN0ZXIgYW5kIFNldEFyZ3VtZW50IG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluCisg
ICAgLy8gdGhlIG1hY2hpbmUgY29kZSBibG9jayB0aGF0IHN1cnZpdmVkIERDRS4gQWxsIG9mIHRo
ZW0gZXhjZXB0IG1heWJlICJ0aGlzIiB3aWxsIHN1cnZpdmUgRENFLAorICAgIC8vIGJlY2F1c2Ug
b2YgdGhlIEZsdXNoIG5vZGVzLgogICAgIC8vCiAgICAgLy8gSW4gU1NBLCB0aGlzIGlzIGFsbCBv
ZiB0aGUgR2V0U3RhY2sgbm9kZXMgZm9yIHRoZSBhcmd1bWVudHMgaW4gdGhlIG1hY2hpbmUgY29k
ZSBibG9jayB0aGF0CiAgICAgLy8gbWF5IGhhdmUgc29tZSBzcGVjdWxhdGlvbiBpbiB0aGUgcHJv
bG9ndWUgYW5kIHN1cnZpdmVkIERDRS4gTm90ZSB0aGF0IHRvIGdldCB0aGUgc3BlY3VsYXRpb24K
QEAgLTkwMywxMSArOTAzLDEyIEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0
aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3
b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBt
X2FyZ3VtZW50czsKKyAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzT25TdGFjazsKKyAg
ICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzRm9yQ2hlY2tpbmc7CiAgICAgCiAgICAgLy8g
SW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50
IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1h
dD4gbV9hcmd1bWVudEZvcm1hdHM7Ci0gICAgCisKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFi
bGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJpYWJsZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVj
dG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAgICAgU2VnbWVu
dGVkVmVjdG9yPFN0cnVjdHVyZVNldCwgMTY+IG1fc3RydWN0dXJlU2V0OwpAQCAtOTU0LDYgKzk1
NSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3Rh
dGUgbV91bmlmaWNhdGlvblN0YXRlOwogICAgIFBsYW5TdGFnZSBtX3BsYW5TdGFnZSB7IFBsYW5T
dGFnZTo6SW5pdGlhbCB9OworICAgIFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzIG1fc3Ry
ZW5ndGhSZWR1Y2VBcmd1bWVudHMgPSB7IFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzOjpE
b250T3B0aW1pemVBcmd1bWVudEZsdXNoZXMgfTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291
bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNF
eGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMSArMTA2LDExIEBAIHZvaWQgSW5QbGFjZUFi
c3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBKQogICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzT25T
dGFja1tpXTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCB8fCBub2RlLT5vcCgpID09IFNldExvY2FsKTsKICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSwxOCArOTksNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogICAg
IH0KIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKLXsKLSAgICAvLyBUaGlz
IGNvZGUgY3VycmVudGx5IG1hdGNoZXMgdGhlIG9sZCBKSVQuIEluIHRoZSBmdW5jdGlvbiBoZWFk
ZXIgd2UgbmVlZCB0bwotICAgIC8vIHNhdmUgcmV0dXJuIGFkZHJlc3MgYW5kIGNhbGwgZnJhbWUg
dmlhIHRoZSBwcm9sb2d1ZSBhbmQgcGVyZm9ybSBhIGZhc3Qgc3RhY2sgY2hlY2suCi0gICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MgotICAg
IC8vIFdlJ2xsIG5lZWQgdG8gY29udmVydCB0aGUgcmVtYWluaW5nIGN0aV8gc3R5bGUgY2FsbHMg
KHNwZWNpZmljYWxseSB0aGUgc3RhY2sKLSAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBl
bmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4K
LSAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4
Y2VwdGlvbiBoYW5kbGVyKS4KLSAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKLX0KLQogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnko
KQogewogICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKQEAgLTI3Nyw3ICsyNjUsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fanNDYWxscy5zaXplKCk7ICsraSkgewogICAgICAgICBKU0NhbGxSZWNvcmQm
IHJlY29yZCA9IG1fanNDYWxsc1tpXTsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJl
Y29yZC5pbmZvOwotICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5j
dGlvblB0cihtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihpbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgaW5mby5zZXRDYWxsTG9jYXRpb25zKAogICAgICAg
ICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwocmVj
b3JkLnNsb3dDYWxsKSksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocmVjb3JkLnRhcmdldFRvQ2hlY2spKSwKQEAgLTI4Nyw2ICsyNzUsOCBAQCB2
b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgZm9yIChKU0RpcmVj
dENhbGxSZWNvcmQmIHJlY29yZCA6IG1fanNEaXJlY3RDYWxscykgewogICAgICAgICBDYWxsTGlu
a0luZm8mIGluZm8gPSAqcmVjb3JkLmluZm87CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNv
cmQuY2FsbCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCkpOworICAgICAg
ICBpZiAocmVjb3JkLmhhc1Nsb3dDYWxsKCkpCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
cmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0
dWIobGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNM
b2NhdGlvbigpKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExv
Y2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCiAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YocmVjb3JkLnNsb3dQYXRoKSwKQEAgLTM1NCw4ICszNDQsMTQg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBMYWJlbCBtYWluRW50cnkodGhpcyk7CisKICAgICBz
ZXRTdGFydE9mQ29kZSgpOwotICAgIGNvbXBpbGVFbnRyeSgpOworICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CisKKyAgICBMYWJlbCBlbnRyeVBvaW50KHRoaXMpOworICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwog
ICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CiAKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFp
bGFibGUgaW4gdGhlIEpTU3RhY2suCkBAIC0zODIsNiArMzc4LDIwIEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxs
RnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9y
LCBtX2NvZGVCbG9jayk7CiAKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7CisKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFy
Z3VtZW50IHJlZ2lzdGVycworICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgIGxvYWQzMihwYXlsb2Fk
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJn
dW1lbnRDb3VudCgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJn
SW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdJbmRleCsrKQorICAgICAgICBsb2FkNjQoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4KSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rp
b25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGp1bXAoZW50cnlQb2ludCk7CisjZW5k
aWYKKwogICAgIC8vIEdlbmVyYXRlIHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUt
PnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAg
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hw
b2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsK
QEAgLTQwNiwyNCArNDE2LDg3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGNv
ZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwogCiAgICAgZGlz
YXNzZW1ibGUoKmxpbmtCdWZmZXIpOwotICAgIAorCisgICAgSklURW50cnlQb2ludHMgZW50cnlw
b2ludHM7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAg
IGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyAgICBlbnRyeXBvaW50cy5z
ZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YobV9zdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKKyNlbHNlCisgICAgZW50cnlwb2lu
dHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVy
LT5sb2NhdGlvbk9mKG1haW5FbnRyeSkpOworI2VuZGlmCisKICAgICBtX2dyYXBoLm1fcGxhbi5m
aW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3Jh
cGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikpOworICAg
ICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bigpCiB7CiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBu
dW1QYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOworICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCk7CisgICAgSnVtcExpc3QgY29udGludWVSZWdpc3RlckVudHJ5OworICAg
IExhYmVsIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUyArIDFdOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgIC8vIFNwaWxs
IGFueSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhl
IHN0YWNrLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4
ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDE7CisgICAgICAg
ICAgICBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBleHRyYVJl
Z2lzdGVyQXJndW1lbnRJbmRleC0tKSB7CisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0Vu
dHJ5cG9pbnRzW2V4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4ICsgMV0gPSBsYWJlbCgpOworICAg
ICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCks
IGV4dHJhUmVnaXN0ZXJBcmd1bWVudEluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbmNy
ZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzRXh0cmEpOworCisgICAgY29udGludWVSZWdp
c3RlckVudHJ5LmFwcGVuZChqdW1wKCkpOworCisgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlD
aGVjayA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0Fy
aXR5KTsKKworICAgIExhYmVsIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHkodGhpcyk7CisKKyAgICBK
dW1wIHJlZ2lzdGVyQ2hlY2tBcml0eTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJDaGVj
a0FyaXR5ID0gYnJhbmNoMzIoTm90RXF1YWwsIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVt
UGFyYW1ldGVycykpOworICAgIGVsc2UgeworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkgPSBi
cmFuY2gzMihCZWxvdywgYXJnQ291bnRSZWcsIFRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSk7
CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzID0gbGFiZWwoKTsK
KyAgICB9CisgICAgCisgICAgTGFiZWwgcmVnaXN0ZXJFbnRyeU5vQXJpdHkodGhpcyk7CisKKyAg
ICBpZiAobnVtUGFyYW1ldGVycyA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW251bVBhcmFtZXRl
cnNdID0gcmVnaXN0ZXJFbnRyeU5vQXJpdHk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMs
IFZNOjpSZWdBcmdzTm9Bcml0eSk7CisKKyAgICBjb250aW51ZVJlZ2lzdGVyRW50cnkubGluayh0
aGlzKTsKKyNlbmRpZgorCisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCisgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vID09PSBGdW5jdGlvbiBoZWFkZXIgY29kZSBnZW5l
cmF0aW9uID09PQogICAgIC8vIFRoaXMgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIHdpdGhvdXQg
cGVyZm9ybWluZyBhbiBhcml0eSBjaGVjay4KICAgICAvLyBJZiB3ZSBuZWVkZWQgdG8gcGVyZm9y
bSBhbiBhcml0eSBjaGVjayB3ZSB3aWxsIGFscmVhZHkgaGF2ZSBtb3ZlZCB0aGUgcmV0dXJuIGFk
ZHJlc3MsCiAgICAgLy8gc28gZW50ZXIgYWZ0ZXIgdGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlD
aGVjayh0aGlzKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlMKKyAgICBzdG9yZVB0cihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIGFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisgICAgc3RvcmUzMihhcmdDb3VudFJlZywgcGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisKKyAgICBMYWJlbCBmcm9tU3Rh
Y2tFbnRyeSh0aGlzKTsKKyNlbmRpZgorICAgIAorICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwogICAgIC8vIFBsYW50
IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFj
ay4KLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3Jh
cGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QxKTsKLSAgICBKdW1wIHN0YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFi
c29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCkgLSAxKS5v
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgSnVtcCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRy
KEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgLy8gTW92ZSB0aGUgc3RhY2sgcG9pbnRlciBk
b3duIHRvIGFjY29tbW9kYXRlIGxvY2FscwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9ncmFw
aC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtNDUyLDI4ICs1MjUsMTA1
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogCiAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBt
X2NvZGVCbG9jayk7CisKKyAgICBKdW1wTGlzdCBhcml0eU9LOwogICAgIAotICAgIC8vIFRoZSBm
YXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVj
dCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgLy8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2Fs
bCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2Fs
bHkKLSAgICAvLyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZl
IGJlZW4gcGFzc2VkLCBvciBoYXZlIGFscmVhZHkgY2hlY2tlZCkuCi0gICAgLy8gSW4gY2FzZXMg
d2hlcmUgYW4gYXJpdHkgY2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgotICAgIC8v
IEZJWE1FOiBjaGFuZ2UgdGhpcyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBERkcgc3R5bGUgb3BlcmF0
aW9uIChub3JtYWwgQyBjYWxsaW5nIGNvbnZlbnRpb25zKS4KLSAgICBtX2FyaXR5Q2hlY2sgPSBs
YWJlbCgpOwotICAgIGNvbXBpbGVFbnRyeSgpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICBqdW1wKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHkpOworCisg
ICAgSnVtcExpc3QgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXA7CisgICAgaWYgKG51bVBhcmFtZXRl
cnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAg
IHJlZ2lzdGVyQ2hlY2tBcml0eS5saW5rKHRoaXMpOworICAgICAgICByZWdpc3RlckFyaXR5TmVl
ZHNGaXh1cC5hcHBlbmQoYnJhbmNoMzIoQmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIo
bV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpKTsKKworICAgICAgICAvLyBXZSBoYXZlIGV4
dHJhIHJlZ2lzdGVyIGFyZ3VtZW50cy4KKworICAgICAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2lu
dCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgY29ycmVjdCBudW1iZXIg
b2YgYXJndW1lbnRzCisgICAgICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdl
IG9ubHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5Cisg
ICAgICAgIC8vIGRldGVybWluZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmUg
YmVlbiBwYXNzZWQsIG9yIGhhdmUgYWxyZWFkeSBjaGVja2VkKS4KKyAgICAgICAgLy8gSW4gY2Fz
ZXMgd2hlcmUgYW4gYXJpdHkgY2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgorICAg
ICAgICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisKKyAg
ICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgICAg
ICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3NlZCB0byBmdW5jdGlvbgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ0luZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKGFyZ0luZGV4KSkubGlua1RvKG1haW5FbnRyeSwgdGhpcyk7CisgICAgICAgICAgICBlbWl0
UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JG
dW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICB9CisgICAgICAg
IGp1bXAobWFpbkVudHJ5KTsKKyAgICB9CisKKyAgICAvLyBGYWxsIHRocm91Z2gKKyAgICBpZiAo
bnVtUGFyYW1ldGVycyA+IDApIHsKKyAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBh
ICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJndW1lbnRGaXh1
cENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycyAtIDEsIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICBMYWJlbCByZWdpc3RlckFyZ3VtZW50c05l
ZWRBcml0eUZpeHVwID0gbGFiZWwoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gMTsgYXJnSW5kZXggPD0gcmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQ7IGFyZ0luZGV4Kysp
CisgICAgICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4XSA9IHJl
Z2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXA7CisgICAgfQorCisgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0Zp
eHVwLmxpbmsodGhpcyk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA+PSBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICByZWdpc3RlckNoZWNrQXJpdHku
bGluayh0aGlzKTsKKworICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJv
bG9ndWUoKTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBKdW1wIGNvbnRpbnVlVG9T
dGFja0FyaXR5Rml4dXAgPSBqdW1wKCk7CisjZW5kaWYKKyNlbmRpZgorCisgICAgbV9zdGFja0Fy
Z3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6U3RhY2tBcmdzQXJpdHkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNvbnRp
bnVlVG9TdGFja0FyaXR5Rml4dXAubGluayh0aGlzKTsKKyNlbmRpZgorCisgICAgZW1pdEZ1bmN0
aW9uUHJvbG9ndWUoKTsKIAogICAgIGxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
KFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6
cmVnVDEpOwotICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0
ZWRJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkubGlua1RvKGZyb21Bcml0eUNo
ZWNrLCB0aGlzKTsKKyAgICBhcml0eU9LLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
KTsKKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7
CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIGlmIChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigt
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhj
ZXB0aW9uKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RB
cml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86OnJlZ1QwKTsKICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7Ci0gICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5s
aW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBwZW5kKGJyYW5jaFRl
c3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCiAgICAgZW1pdFN0b3JlQ29k
ZU9yaWdpbihDb2RlT3JpZ2luKDApKTsKICAgICBtb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIG1fY2FsbEFyaXR5Rml4dXAgPSBjYWxsKCk7
CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgSnVt
cCB0b0ZpbGxSZWdpc3RlcnMgPSBqdW1wKCk7CisKKyAgICBtX3N0YWNrQXJnc0FyaXR5T0tFbnRy
eSA9IGxhYmVsKCk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NO
b0FyaXR5KTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgYXJpdHlPSy5saW5r
KHRoaXMpOworICAgIHRvRmlsbFJlZ2lzdGVycy5saW5rKHRoaXMpOworCisgICAgLy8gTG9hZCBh
cmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBsb2FkNjQoQWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAr
IGFyZ0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCisgICAganVtcChmcm9t
U3RhY2tFbnRyeSk7CisjZWxzZQorICAgIGFyaXR5T0subGlua1RvKGZyb21Bcml0eUNoZWNrLCB0
aGlzKTsKICAgICBqdW1wKGZyb21Bcml0eUNoZWNrKTsKKyNlbmRpZgogICAgIAogICAgIC8vIEdl
bmVyYXRlIHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2Vu
ZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CkBAIC01MDIsMTAgKzY1MiwzNSBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIAogICAgIGRpc2Fzc2Vt
YmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlD
aGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKKyAgICBKSVRFbnRy
eVBvaW50cyBlbnRyeXBvaW50czsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtYWluRW50cnlDb2RlUHRyID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVu
dHJ5Tm9Bcml0eSk7CisjZWxzZQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnlD
b2RlUHRyID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpOworI2VuZGlmCisgICAg
ZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
LCBtYWluRW50cnlDb2RlUHRyKTsKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJncywgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lzdGVy
QXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncykpOworICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9y
KFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fcmVn
aXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spKTsKKworICAgIGZvciAodW5zaWduZWQgYXJnQ291bnQg
PSAxOyBhcmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdDb3VudCsrKSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAg
ICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAgICBlbnRyeSA9
IG1haW5FbnRyeUNvZGVQdHI7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyQXJndW1lbnRzRW50
cnlwb2ludHNbYXJnQ291bnRdLmlzU2V0KCkpCisgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
bV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGVudHJ5cG9pbnRzLnNldEVu
dHJ5Rm9yKEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQo
YXJnQ291bnQpLCBlbnRyeSk7CisgICAgfQorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0
YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3N0
YWNrQXJnc0FyaXR5T0tFbnRyeSkpOworI2Vsc2UKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZv
cihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
bWFpbkVudHJ5KSk7CisjZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3N0YWNrQXJnc1dpdGhB
cml0eUNoZWNrKSk7CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1f
aml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
ZW50cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpkaXNhc3NlbWJsZShMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVjdENhbGxSZWNvcmQo
Y2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRKU0RpcmVj
dENhbGwoQ2FsbCBjYWxsLCBDYWxsIHNsb3dDYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVj
dENhbGxSZWNvcmQoY2FsbCwgc2xvd0NhbGwsIHNsb3dQYXRoLCBpbmZvKSk7CisgICAgfQorICAg
IAogICAgIHZvaWQgYWRkSlNEaXJlY3RUYWlsQ2FsbChQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1
bXAsIENhbGwgY2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5mbykKICAgICB7
CiAgICAgICAgIG1fanNEaXJlY3RUYWlsQ2FsbHMuYXBwZW5kKEpTRGlyZWN0VGFpbENhbGxSZWNv
cmQocGF0Y2hhYmxlSnVtcCwgY2FsbCwgc2xvd1BhdGgsIGluZm8pKTsKQEAgLTI2Nyw3ICsyNzIs
NiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOwog
ICAgIAogICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIHRvIGNvbXBpbGUuCi0gICAgdm9p
ZCBjb21waWxlRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5
KCk7CiAgICAgdm9pZCBjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCk7CiAgICAgdm9pZCBjb21w
aWxlQm9keSgpOwpAQCAtMzE4LDcgKzMyMiwxOCBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIEpTRGlyZWN0Q2FsbFJlY29yZChDYWxsIGNhbGwsIENh
bGwgc2xvd0NhbGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgICAg
ICAgICA6IGNhbGwoY2FsbCkKKyAgICAgICAgICAgICwgc2xvd0NhbGwoc2xvd0NhbGwpCisgICAg
ICAgICAgICAsIHNsb3dQYXRoKHNsb3dQYXRoKQorICAgICAgICAgICAgLCBpbmZvKGluZm8pCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzU2xvd0NhbGwoKSB7IHJldHVy
biBzbG93Q2FsbC5tX2xhYmVsLmlzU2V0KCk7IH0KKwogICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIENhbGwgc2xvd0NhbGw7CiAgICAgICAgIExhYmVsIHNsb3dQYXRoOwogICAgICAgICBDYWxs
TGlua0luZm8qIGluZm87CiAgICAgfTsKQEAgLTMzMSw3ICszNDYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLCBpbmZvKGluZm8pCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXA7CiAgICAgICAgIENhbGwgY2FsbDsK
ICAgICAgICAgTGFiZWwgc2xvd1BhdGg7CkBAIC0zNTUsNyArMzcwLDEyIEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdEluZm8+IG1fZXhjZXB0aW9uSGFuZGxl
ck9TUkV4aXRDYWxsU2l0ZXM7CiAgICAgCiAgICAgQ2FsbCBtX2NhbGxBcml0eUZpeHVwOwotICAg
IExhYmVsIG1fYXJpdHlDaGVjazsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgTGFiZWwgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjazsKKyAgICBMYWJlbCBtX3N0
YWNrQXJnc0FyaXR5T0tFbnRyeTsKKyNlbmRpZgorICAgIExhYmVsIG1fc3RhY2tBcmdzV2l0aEFy
aXR5Q2hlY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0aXZlSklUPiBtX3NwZWN1bGF0
aXZlOwogICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlcjsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5h
bGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUpJVEZpbmFsaXplcjo6SklURmlu
YWxpemVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1bmlx
dWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRo
QXJpdHlDaGVjaykKK0pJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFBhc3NS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlciwgSklURW50cnlQb2ludHMmIGVudHJ5cG9pbnRzKQogICAgIDogRmluYWxpemVy
KHBsYW4pCiAgICAgLCBtX2ppdENvZGUoaml0Q29kZSkKICAgICAsIG1fbGlua0J1ZmZlcihXVEZN
b3ZlKGxpbmtCdWZmZXIpKQotICAgICwgbV93aXRoQXJpdHlDaGVjayh3aXRoQXJpdHlDaGVjaykK
KyAgICAsIG1fZW50cnlwb2ludHMoZW50cnlwb2ludHMpCiB7CiB9CiAKQEAgLTU2LDkgKzU3LDgg
QEAgc2l6ZV90IEpJVEZpbmFsaXplcjo6Y29kZVNpemUoKQogCiBib29sIEpJVEZpbmFsaXplcjo6
ZmluYWxpemUoKQogewotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAg
IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIs
IHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2Rl
OjpERkdKSVQpKS5kYXRhKCkpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfREZHX0NPREUoKm1f
bGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dp
dGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpOwor
ICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb2RlUmVmLCBtX2VudHJ5cG9pbnRzKSk7CiAgICAgCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+
c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIApAQCAtNjksMTAgKzY5LDExIEBAIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiAKIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0
aW9uKCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJpdHlDaGVjay5pc0VtcHR5VmFs
dWUoKSk7Ci0gICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJlZigKLSAgICAgICAgRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpLAotICAgICAgICBtX3dpdGhBcml0eUNoZWNrKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCghbV9lbnRyeXBvaW50cy5lbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuaXNF
bXB0eVZhbHVlKCkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpOworCisgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklU
RW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKKwogICAgIG1fcGxh
bi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAKICAgICBmaW5hbGl6ZUNv
bW1vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklURmluYWxpemVyIDogcHVibGljIEZpbmFs
aXplciB7CiBwdWJsaWM6Ci0gICAgSklURmluYWxpemVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENv
ZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3
aXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OkVtcHR5VmFsdWUpKTsKKyAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NSZWZQdHI8SklU
Q29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgSklURW50cnlQb2ludHMmKTsKICAg
ICB2aXJ0dWFsIH5KSVRGaW5hbGl6ZXIoKTsKICAgICAKICAgICBzaXplX3QgY29kZVNpemUoKSBv
dmVycmlkZTsKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBmaW5hbGl6ZUNvbW1vbigpOwotICAgIAorCiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29k
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwotICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBtX3dpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRz
IG1fZW50cnlwb2ludHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6
ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwot
ICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxp
bmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAg
ICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dy
YXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAgICAgICAgaWYg
KChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50IHx8IG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCisg
ICAgICAgICAgICAgICAgICAgICYmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgfHwgbm9k
ZSAhPSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQo
KV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9k
ZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVz
aEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmx1c2hBY2Nlc3NEYXRhKQpAQCAtMTE3LDcgKzExNyw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9w
ZXJhbmQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwpOyAvLyBXZSBzaG91bGQg
aGF2ZSBpbnNlcnRlZCBhIEZsdXNoIGJlZm9yZSB0aGlzIQogICAgICAgICAgICAgaW5pdGlhbEFj
Y2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICAgICAgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJ
KHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgRXhpdE1vZGUgbWF5RXhpdElt
cGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRD
YWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSw2ICs0MSw4IEBAIE1pbmlmaWVkTm9kZSBNaW5pZmllZE5vZGU6OmZyb21Ob2Rl
KE5vZGUKICAgICByZXN1bHQubV9vcCA9IG5vZGUtPm9wKCk7CiAgICAgaWYgKGhhc0NvbnN0YW50
KG5vZGUtPm9wKCkpKQogICAgICAgICByZXN1bHQubV9pbmZvID0gSlNWYWx1ZTo6ZW5jb2RlKG5v
ZGUtPmFzSlNWYWx1ZSgpKTsKKyAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50
UmVnaXN0ZXIpCisgICAgICAgIHJlc3VsdC5tX2luZm8gPSAwOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBQaGFudG9tRGlyZWN0QXJndW1lbnRzIHx8IG5vZGUtPm9w
KCkgPT0gUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7CiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90Pihub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUu
aAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBA
IGlubGluZSBib29sIGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgoTm9kZVQKICAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBo
YW50b21DbG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgYm9vbCBOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgm
IAogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoKICAgICBjYXNlIFNldEFy
Z3VtZW50OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEZsdXNoOgog
ICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODI4LDYgKzgyOCw5
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYpOwogICAg
IGJvb2wgYWNjZXNzZXNTdGFjayhHcmFwaCYgZ3JhcGgpCiAgICAgeworICAgICAgICBpZiAob3Ao
KSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgICAgIHJldHVybiBoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoZ3JhcGgpOwogICAgIH0KICAgICAK
QEAgLTg0Niw2ICs4NDksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
VmFyaWFibGVBY2Nlc3NEYXRhKj4oKS0+ZmluZCgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHNl
dFZhcmlhYmxlQWNjZXNzRGF0YShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlKQorICAgIHsK
KyAgICAgICAgbV9vcEluZm8gPSB2YXJpYWJsZTsKKyAgICB9CisgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGxvY2FsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+bG9jYWwoKTsKQEAgLTEyMTQsNiArMTIyMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CiAgICAgfQogICAgIAorICAg
IGJvb2wgaGFzQXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBv
cCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXI7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGFy
Z3VtZW50UmVnaXN0ZXJJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQXJndW1lbnRS
ZWdpc3RlckluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFzPHVuc2lnbmVkPigp
OworICAgIH0KKyAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1
cm4gISFyZXN1bHQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBO
b3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55
d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
bWFjcm8oR2V0QXJndW1lbnRSZWdpc3RlciwgTm9kZVJlc3VsdEpTIC8qIHwgTm9kZU11c3RHZW5l
cmF0ZSAqLykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbG9jYWwgdmFyaWFibGUgYWNjZXNz
LiBUaGVzZSBub2RlcyBhcmUgbGlua2VkIHRvZ2V0aGVyIHVzaW5nIFBoaSBub2Rlcy4gKi9cCiAg
ICAgLyogQW55IHR3byBub2RlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIFBoaSBncmFwaCB3
aWxsIHNoYXJlIHRoZSBzYW1lICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEx
IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGUKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOiB7CisgICAgICAgIG1f
YXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkuc2V0Tm9kZShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBNb3ZIaW50OiB7CiAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKS5z
ZXROb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsMTYgKzExMiwzMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRv
IGhlcmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAg
Ci0gICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihiYXNlbGluZS0+bnVtUGFy
YW1ldGVycygpKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRh
cmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlm
ICghb2xkTm9kZSkgewotICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlz
IGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAg
ICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAg
ICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhbiBhcmd1bWVudCBub2RlIGV2
ZW4gaWYgaXQncyBub3QgbmVlZGVkLgorICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAg
bV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCi0gICAgICAgICAgICAgICAg
T3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBOb2RlKiBub2Rl
OworICAgICAgICAgICAgTm9kZSogc3RhY2tOb2RlOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50
IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAg
ICAgICAgIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgR2V0QXJndW1lbnRSZWdpc3Rlciwgb3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFy
Z3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5ld1Jvb3Qt
PmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRM
b2NhbCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwg
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICBzdGFja05vZGUgPSBub2RlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbYXJndW1l
bnRdID0gbm9kZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrW2FyZ3Vt
ZW50XSA9IHN0YWNrTm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0g
MDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE0LDcgKzMxNCw5IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIK
ICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAgICAgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwog
ICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgIGRmZy5tX3N0cmVuZ3RoUmVkdWNlQXJndW1l
bnRzID0gT3B0aW1pemVBcmd1bWVudEZsdXNoZXM7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtQ0ZH
U2ltcGxpZmljYXRpb24oZGZnKTsKKyAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVj
dGlvbihkZmcpOwogICAgIGNoYW5nZWQgfD0gcGVyZm9ybUxvY2FsQ1NFKGRmZyk7CiAgICAgCiAg
ICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBv
dXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KKyAg
ICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IHN0YWNrIGFyZ3VtZW50cywgZXhjZXB0
IHRoaXMsIGFyZSBkZWZpbml0ZWx5IHJlYWQuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLSA+IDE7KQogICAgICAg
ICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdCgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tp
bmdbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSB8fCBu
b2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkZyb21WYWx1ZShtX2dyYXBoLm1fcGxhbi5tdXN0SGFuZGxlVmFsdWVzW2ldKSk7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJl
Z2lzdGVyOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uID0gdmFyaWFibGUtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICghdmFyaWFi
bGUtPmNvdWxkUmVwcmVzZW50SW50NTIoKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1Mk9ubHkp
KQorICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNBbnlJbnRB
c0RvdWJsZSkgJiB+U3BlY0ludDUyT25seTsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQor
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFVJbnQzMlRvTnVtYmVyOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2FuU3BlY3VsYXRlSW50
MzIobV9wYXNzKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjSW50MzJPbmx5KTsKQEAgLTk2OCw2ICs5NzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNh
c2UgR2V0TG9jYWw6CiAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgIGNhc2UgR2V0QXJn
dW1lbnRSZWdpc3RlcjoKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2Fz
ZSBWYWx1ZUFkZDoKICAgICAgICAgY2FzZSBBcml0aEFkZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIAogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKICAgICAgICAgCi0gICAg
ICAgIC8vIEFsbCBvZiB0aGUgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9v
dC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQorICAgICAgICAvLyBBbGwgb2YgdGhl
IHN0YWNrIGFyZ3VtZW50cyBzaG91bGQgYmUgbGl2ZSBhdCBoZWFkIG9mIHJvb3QuIE5vdGUgdGhh
dCB3ZSBtYXkgZmluZCB0aGF0IHNvbWUKICAgICAgICAgLy8gbG9jYWxzIGFyZSBsaXZlIGF0IGhl
YWQgb2Ygcm9vdC4gVGhpcyBzZWVtcyB3cm9uZyBidXQgaXNuJ3QuIFRoaXMgd2lsbCBoYXBwZW4g
Zm9yIGV4YW1wbGUKICAgICAgICAgLy8gaWYgdGhlIGZ1bmN0aW9uIGFjY2Vzc2VzIGNsb3N1cmUg
dmFyaWFibGUgIzQyIGZvciBzb21lIG90aGVyIGZ1bmN0aW9uIGFuZCB3ZSBlaXRoZXIgZG9uJ3QK
ICAgICAgICAgLy8gaGF2ZSB2YXJpYWJsZSAjNDIgYXQgYWxsIG9yIHdlIGhhdmVuJ3Qgc2V0IGl0
IGF0IHJvb3QsIGZvciB3aGF0ZXZlciByZWFzb24uIEJhc2ljYWxseSB0aGlzCkBAIC0xNTcsOCAr
MTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLy8KICAgICAgICAgLy8gRm9yIG91ciBwdXJwb3Nl
cyBoZXJlLCB0aGUgaW1wcmVjaXNpb24gaW4gdGhlIGFsaWFzaW5nIGlzIGhhcm1sZXNzLiBJdCBq
dXN0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgLy8gbWF5IG5vdCBkbyBhcyBtdWNoIFBoaSBwcnVu
aW5nIGFzIHdlIHdhbnRlZC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVBdEhlYWQuYXRJ
bmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KQotICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0SW5kZXgoMCkuYXJndW1lbnQoaSkpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJn
dW1lbnRzKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChpID49IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICAvLyBTdGFjayBhcmd1
bWVudHMgYXJlIGxpdmUgYXQgdGhlIGhlYWQgb2Ygcm9vdC4KKyAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1bWVudChp
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIE5leHQg
aWRlbnRpZnkgd2hlcmUgd2Ugd291bGQgd2FudCB0byBzaW5rIFB1dFN0YWNrcyB0by4gV2Ugc2F5
IHRoYXQgdGhlcmUgaXMgYSBkZWZlcnJlZAogICAgICAgICAvLyBmbHVzaCBpZiB3ZSBoYWQgYSBQ
dXRTdGFjayB3aXRoIGEgZ2l2ZW4gRmx1c2hGb3JtYXQgYnV0IGl0IGhhc24ndCBiZWVuIG1hdGVy
aWFsaXplZCB5ZXQuCkBAIC0zNTgsNyArMzYyLDggQEAgcHVibGljOgogICAgICAgICAgICAgZm9y
IChOb2RlKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKLSAgICAgICAgICAgICAgICAg
ICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250YWlucyhub2RlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1dFN0YWNrc1RvU2luay5hZGQobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IHNzYUNhbGN1bGF0b3IubmV3RGVmKAogICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZFRv
VmFyaWFibGUub3BlcmFuZChub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2ssIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CkBAIC00ODMs
MTEgKzQ4OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgZGVsZXRlIGFy
Z3VtZW50IFB1dFN0YWNrcywgbm8gbmVlZCB0byBhZGQgb25lIGJhY2suCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2suY29udGFpbnMoaW5jb21p
bmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gR290dGEgaW5zZXJ0IGEgUHV0U3RhY2suCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJJbnNlcnRpbmcgYSBQdXRTdGFjayBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBub2RlLCAiXG4i
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9w
ZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTUzOCw2ICs1NDcsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNDb25jcmV0ZShkZWZlcnJlZC5vcGVyYW5kKG9wZXJhbmQpKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2su
Y29udGFpbnMoaW5jb21pbmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBwaGlOb2RlLCBp
bmNvbWluZyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJc3N1ZSBhIEdldFN0YWNrIHRvIGdldCB0aGUgdmFsdWUuIFRoaXMgbWlnaHQg
aW50cm9kdWNlIHNvbWUgcmVkdW5kYW5jeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiAr
MTcyLDcgQEAgcHVibGljOgogICAgICAgICBtX2RhdGFbaW5kZXhdLm5hbWUgPSBuYW1lOwogICAg
ICAgICBtX2RhdGFbaW5kZXhdLnNwaWxsT3JkZXIgPSBzcGlsbE9yZGVyOwogICAgIH0KKwogICAg
IHZvaWQgcmVsZWFzZShSZWdJRCByZWcpCiAgICAgewogICAgICAgICByZWxlYXNlQXRJbmRleChC
YW5rSW5mbzo6dG9JbmRleChyZWcpKTsKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICsrbV9kYXRhW2luZGV4XS5sb2NrQ291bnQ7CiAgICAgICAgIEFTU0VSVChtX2RhdGFbaW5k
ZXhdLmxvY2tDb3VudCk7CiAgICAgfQorCiAgICAgdm9pZCB1bmxvY2soUmVnSUQgcmVnKQogICAg
IHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBCYW5rSW5mbzo6dG9JbmRleChyZWcpOwpAQCAt
MjM2LDYgKzIzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9iYW5rLT5pc0xv
Y2tlZEF0SW5kZXgobV9pbmRleCk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHVubG9jaygp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JhbmstPnVubG9ja0F0SW5k
ZXgobV9pbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVsZWFzZSgp
IGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYmFuay0+cmVsZWFzZUF0SW5kZXgobV9p
bmRleCk7CkBAIC0yOTgsNiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2Rh
dGFbaW5kZXhdLmxvY2tDb3VudDsKICAgICB9CiAKKyAgICB2b2lkIHVubG9ja0F0SW5kZXgodW5z
aWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBOVU1fUkVHUyk7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGFbaW5kZXhdLmxvY2tDb3VudCk7CisgICAgICAgIC0tbV9kYXRh
W2luZGV4XS5sb2NrQ291bnQ7CisgICAgfQorCiAgICAgVmlydHVhbFJlZ2lzdGVyIG5hbWVBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwg
TlVNX1JFR1MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RmluZCBhbGwgU2V0TG9jYWxzIGFuZCBjcmVhdGUgRGVmcyBmb3IgdGhlbS4gV2UgaGFuZGxlIFNl
dEFyZ3VtZW50IGJ5IGNyZWF0aW5nIGEKLSAgICAgICAgLy8gR2V0TG9jYWwsIGFuZCByZWNvcmRp
bmcgdGhlIGZsdXNoIGZvcm1hdC4KKyAgICAgICAgLy8gR2V0U3RhY2ssIGFuZCByZWNvcmRpbmcg
dGhlIGZsdXNoIGZvcm1hdC4gV2UgaGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgYnkgZGlyZWN0
bHkKKyAgICAgICAgLy8gYWRkaW5nIHRoZSBub2RlIHRvIG1fYXJndW1lbnRNYXBwaW5nIGhhc2gg
bWFwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0g
bV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2spCkBAIC04
MywxNCArODQsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gYXNzaWdubWVudCBmb3IgZXZl
cnkgbG9jYWwuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJ
bmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpICE9IFNldExvY2FsICYmIG5vZGUtPm9wKCkgIT0gU2V0QXJndW1lbnQpCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwgJiYgbm9kZS0+b3AoKSAhPSBTZXRB
cmd1bWVudCAmJiBub2RlLT5vcCgpICE9IEdldEFyZ3VtZW50UmVnaXN0ZXIpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGU7CisgICAg
ICAgICAgICAgICAgTm9kZSogY2hpbGROb2RlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCkKICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2Rl
ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUt
Pm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgICAgICAgICAgICAgbV9hcmd1
bWVudE1hcHBpbmcuYWRkKG5vZGUsIG5vZGUpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBA
IC0xMDEsOSArMTA0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJn
dW1lbnRHZXR0ZXJzLmFkZChjaGlsZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX2FyZ3Vt
ZW50TWFwcGluZy5hZGQobm9kZSwgY2hpbGROb2RlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9jYWxjdWxhdG9yLm5ld0RlZigKLSAgICAg
ICAgICAgICAgICAgICAgbV9zc2FWYXJpYWJsZUZvclZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJs
b2NrLCBjaGlsZE5vZGUpOworCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSkgeworICAg
ICAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zc2FWYXJpYWJsZUZvclZhcmlhYmxlLmdldCh2YXJpYWJsZSksIGJsb2NrLCBjaGls
ZE5vZGUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkBAIC0yOTQsNyArMjk5
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJh
bmQodmFyaWFibGUtPmxvY2FsKCkpID0gY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9j
YWwoKSkgPSBub2RlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOiB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2FyZ3VtZW50R2V0dGVycy5jb250YWlucyhub2RlKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgp
LT5sb2NhbCkgPSBub2RlOwpAQCAtMzgyLDE3ICszOTMsMjEgQEAgcHVibGljOgogICAgICAgICAg
ICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxv
Y2spOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3Jt
YXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmcuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJn
dW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNo
ZWNraW5nW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9k
ZSk7Ci0gICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0
OworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikgewor
ICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSB2YXJpYWJsZS0+Zmx1
c2hGb3JtYXQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGZvcm1hdCA9
IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9h
ZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0gPSBub2RlOyAvLyBSZWNv
cmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBl
eGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zv
cm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0UmVzdExl
bmd0aDoKICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChkeW5hbWljT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAg
ICAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxlZVBheWxvYWRHUFIpOworICAgIGluZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwg
U3RhY2tBcmdzLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZVBheWxvYWRHUFIpOwogICAg
IAogICAgIGF1dG8gc2V0UmVzdWx0QW5kUmVzZXRTdGFjayA9IFsmXSAoKSB7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CkBAIC0xMDgxLDcgKzEwODEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAg
ICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgfQogCi0gICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNTYxNCw2ICs1NjE0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgS2ls
bFN0YWNrOgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6
CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsT3V0T2ZCb3VuZHM6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBo
YW50b21TcHJlYWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDE0ICs4MCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpib3hJbnQ1MihHUFJSZWcgc291CiAg
ICAgdW5sb2NrKGZwcik7CiB9CiAKLUdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSBlZGdlKQorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Us
IEdQUlJlZyBncHJUb1VzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBn
ZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKICAgICAK
ICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1h
dE5vbmU6IHsKLSAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBhbGxvY2F0ZShncHJUb1VzZSk7CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0
YW50KCkpIHsKICAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgp
OwpAQCAtMTIwLDcgKzEyMCwxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgCiAgICAgICAgIC8vIElmIHRoZSByZWdpc3RlciBoYXMgYWxyZWFkeSBiZWVuIGxvY2tl
ZCB3ZSBuZWVkIHRvIHRha2UgYSBjb3B5LgogICAgICAgICAvLyBJZiBub3QsIHdlJ2xsIHplcm8g
ZXh0ZW5kIGluIHBsYWNlLCBzbyBtYXJrIG9uIHRoZSBpbmZvIHRoYXQgdGhpcyBpcyBub3cgdHlw
ZSBEYXRhRm9ybWF0SW50MzIsIG5vdCBEYXRhRm9ybWF0SlNJbnQzMi4KICAgICAgICAgaWYgKG1f
Z3Bycy5pc0xvY2tlZChncHIpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2Nh
dGUoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7Cisg
ICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3By
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoZ3ByVG9Vc2UgIT0gSW52YWxpZEdQUlJlZyAmJiBncHIgIT0gZ3ByVG9Vc2UpIHsKKyAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZShncHJUb1VzZSk7CiAgICAgICAgICAg
ICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByLCByZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMTM4LDYgKzE0Mywx
MSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNDZWxsOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewogICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgaWYgKGdwclRvVXNlICE9IEludmFs
aWRHUFJSZWcgJiYgZ3ByICE9IGdwclRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
ID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgICAgIG1fZ3By
cy5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQpAQCAtNjMyLDYgKzY0Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7CiAgICAgQ2FsbExpbmtJbmZvOjpDYWxs
VHlwZSBjYWxsVHlwZTsKKyAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9
IFN0YWNrQXJnczsKICAgICBib29sIGlzVmFyYXJncyA9IGZhbHNlOwogICAgIGJvb2wgaXNGb3J3
YXJkVmFyYXJncyA9IGZhbHNlOwogICAgIGJvb2wgaXNUYWlsID0gZmFsc2U7CkBAIC03MTQsNyAr
NzI1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAg
IEdQUlJlZyBjYWxsZWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIENhbGxGcmFtZVNodWZmbGVE
YXRhIHNodWZmbGVEYXRhOwotICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHRhaWxDYWxsZWU7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGNhbGxlZUdQUlRl
bXBvcmFyeTsKKworICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6REZHQ2FsbGVyKTsK
KwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKGlzRGly
ZWN0KSB7CkBAIC03MzMsNiArNzQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSOwogICAgICAgICB1bnNpZ25lZCBu
dW1Vc2VkU3RhY2tTbG90cyA9IG1faml0LmdyYXBoKCkubV9uZXh0TWFjaGluZUxvY2FsOwogICAg
ICAgICAKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpDYWxsVmFyYXJncyk7
CiAgICAgICAgIGlmIChpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQpAQCAtODQxLDE1ICs4NTcs
MjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGlzVGFpbCkgeworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigm
bV9qaXQsIFZNOjpUYWlsQ2FsbCk7CiAgICAgICAgICAgICBFZGdlIGNhbGxlZUVkZ2UgPSBtX2pp
dC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApOwotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2Fs
bGVlKHRoaXMsIGNhbGxlZUVkZ2UpOwotICAgICAgICAgICAgY2FsbGVlR1BSID0gY2FsbGVlLmdw
cigpOworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZ2V0IHRoZSBhIHNwZWNpZmljIHJlZ2lzdGVy
IGZvciB0aGUgY2FsbGVlLCBzaW5jZSB0aGF0IHdpbGwganVzdCBtb3ZlCisgICAgICAgICAgICAv
LyBmcm9tIGFueSBjdXJyZW50IHJlZ2lzdGVyLiAgV2hlbiB3ZSBzaWxlbnQgZmlsbCBpbiB0aGUg
c2xvdyBwYXRoIHdlJ2xsIGZpbGwKKyAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCByZWdpc3Rl
ciBhbmQgd29uJ3QgaGF2ZSB0aGUgY2FsbGVlIGluIHRoZSByaWdodCByZWdpc3Rlci4KKyAgICAg
ICAgICAgIC8vIFRoZXJlZm9yZSB3ZSBhbGxvY2F0ZSBhIHRlbXAgcmVnaXN0ZXIgZm9yIHRoZSBj
YWxsZWUgYW5kIG1vdmUgb3Vyc2VsdmVzLgorICAgICAgICAgICAgdGFpbENhbGxlZS5lbXBsYWNl
KHRoaXMsIGNhbGxlZUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHRhaWxDYWxsZWVHUFIgPSB0
YWlsQ2FsbGVlLT5ncHIoKTsKKyAgICAgICAgICAgIGNhbGxlZUdQUiA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgICAgIGlmICh0YWlsQ2FsbGVlR1BSICE9IGNhbGxlZUdQ
UikKKyAgICAgICAgICAgICAgICBjYWxsZWVHUFJUZW1wb3JhcnkgPSBHUFJUZW1wb3JhcnkodGhp
cywgY2FsbGVlR1BSKTsKICAgICAgICAgICAgIGlmICghaXNEaXJlY3QpCi0gICAgICAgICAgICAg
ICAgY2FsbGVlLnVzZSgpOworICAgICAgICAgICAgICAgIHRhaWxDYWxsZWUtPnVzZSgpOwogCisg
ICAgICAgICAgICBhcmd1bWVudHNMb2NhdGlvbiA9IGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFs
bG9jYXRlZEFyZ3MpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdpc3Rl
cnMgPSBhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3M7CiAgICAgICAgICAgICBzaHVmZmxl
RGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyOwogICAg
ICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gbV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lz
dGVyQ291bnQoKTsKLSAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zl
cnk6OmluR1BSKGNhbGxlZUdQUiwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIHNodWZmbGVE
YXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKHRhaWxDYWxsZWVHUFIsIERhdGFGb3Jt
YXRKUyk7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6ZShudW1BbGxvY2F0ZWRB
cmdzKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFy
Z3M7ICsraSkgewpAQCAtODY0LDcgKzg5MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzW2ldID0gVmFs
dWVSZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7CiAKICAgICAgICAgICAgIHNodWZm
bGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7Ci0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBDYWxsRXZhbCkg
eworICAgICAgICAgICAgLy8gQ2FsbEV2YWwgaXMgaGFuZGxlZCB3aXRoIHRoZSBhcmd1bWVudHMg
aW4gdGhlIHN0YWNrCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVBheWxv
YWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKIAogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7IGkrKykgewpAQCAtODc4LDE1ICs5
MDUsNTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwg
bnVtQWxsb2NhdGVkQXJnczsgKytpKQogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpJVENvbXBpbGVyOjpjYWxsZWVBcmd1bWVudFNsb3QoaSkp
OworCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkNhbGxFdmFsKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3Nl
ZEFyZ3M7IGktLSA+IDA7KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHBsYXRmb3JtQXJnR1BS
ID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7CisgICAgICAgICAgICAg
ICAgRWRnZSBhcmdFZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZp
cnN0Q2hpbGQoKSArIDEgKyBpXTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmco
dGhpcywgYXJnRWRnZSwgcGxhdGZvcm1BcmdHUFIpOworICAgICAgICAgICAgICAgIEdQUlJlZyBh
cmdHUFIgPSBhcmcuZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGFyZ0dQUiA9PSBwbGF0
Zm9ybUFyZ0dQUiB8fCBwbGF0Zm9ybUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKTsKKworICAgICAg
ICAgICAgICAgIC8vIE9ubHkgZnJlZSB0aGUgbm9uLWFyZ3VtZW50IHJlZ2lzdGVycyBhdCB0aGlz
IHBvaW50LgorICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUFyZ0dQUiA9PSBJbnZhbGlkR1BS
UmVnKSB7CisgICAgICAgICAgICAgICAgICAgIHVzZShhcmdFZGdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuc3RvcmU2NChhcmdHUFIsIEpJVENvbXBpbGVyOjpjYWxsZWVBcmd1bWVudFNs
b3QoaSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVXNlIHRoZSBhcmd1bWVudCBlZGdlcyBmb3IgYXJndW1lbnRzIHBhc3NlZCBpbiByZWdpc3Rl
cnMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAw
OykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBhcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9y
RnVuY3Rpb25Bcmd1bWVudChpKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJnR1BSICE9IEludmFs
aWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgRWRnZSBhcmdFZGdlID0gbV9qaXQuZ3Jh
cGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIDEgKyBpXTsKKyAgICAg
ICAgICAgICAgICAgICAgdXNlKGFyZ0VkZ2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ0NvdW50KHRoaXMsIGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgR1BSUmVnIGFyZ0NvdW50
R1BSID0gYXJnQ291bnQuZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
MihudW1QYXNzZWRBcmdzKSwgYXJnQ291bnRHUFIpOworICAgICAgICAgICAgYXJndW1lbnRzTG9j
YXRpb24gPSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsKKworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFy
Z3M7ICsraSkgeworICAgICAgICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworCisgICAgICAgICAgICAgICAgaWYg
KHBsYXRmb3JtQXJnR1BSID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEpJVENvbXBpbGVyOjpjYWxsZWVB
cmd1bWVudFNsb3QoaSkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgYXJndW1lbnRUZW1wKHRoaXMsIHBsYXRmb3JtQXJnR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgYXJndW1lbnRUZW1wLmdwcigpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKCFpc1RhaWwg
fHwgaXNWYXJhcmdzIHx8IGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAgICAgICAgRWRnZSBjYWxsZWVF
ZGdlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgY2FsbGVlKHRoaXMsIGNhbGxlZUVkZ2UpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxs
ZWUodGhpcywgY2FsbGVlRWRnZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKICAgICAg
ICAgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOwogICAgICAgICBjYWxsZWUudXNlKCk7Ci0gICAg
ICAgIG1faml0LnN0b3JlNjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24g
PT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENv
bXBpbGVyOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CkBAIC05MTMsNyArOTgyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIH07CiAgICAgCiAgICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7Ci0gICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbGVlR1BSKTsKKyAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bChjYWxsVHlwZSwgYXJndW1lbnRzTG9jYXRpb24sIG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbGVlR1BSKTsKIAogICAgIGlmIChub2RlLT5vcCgpID09IENhbGxFdmFsKSB7CiAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gY2FsbCBvcGVyYXRpb25DYWxsRXZhbCBidXQgd2UgZG9uJ3Qg
d2FudCB0byBvdmVyd3JpdGUgdGhlIHBhcmFtZXRlciBhcmVhIGluCkBAIC05NTQsOCArMTAyMywx
NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIGlm
IChpc1RhaWwpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9wKCkgPT0gRGly
ZWN0VGFpbENhbGwpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2FsbGVlR1BSVGVt
cG9yYXJ5ICE9IHN0ZDo6bnVsbG9wdCkKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKHRhaWxD
YWxsZWUtPmdwcigpLCBjYWxsZWVHUFJUZW1wb3JhcnktPmdwcigpKTsKKwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCA9IG1faml0LnBhdGNoYWJs
ZUp1bXAoKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBtYWluUGF0aCA9IG1faml0
LmxhYmVsKCk7CisKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6VGFp
bENhbGwpOworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpEaXJlY3RD
YWxsKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJ
bmRleChjYWxsU2l0ZSk7CiAgICAgICAgICAgICAKQEAgLTk3MSw2ICsxMDQ2LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBjYWxsZWVHUFIpOwog
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBpZiAoY2FsbGVlR1BS
VGVtcG9yYXJ5ICE9IHN0ZDo6bnVsbG9wdCkKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKHRh
aWxDYWxsZWUtPmdwcigpLCBjYWxsZWVHUFJUZW1wb3JhcnktPmdwcigpKTsKICAgICAgICAgICAg
IG1faml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZtX2ppdCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwpAQCAtOTgxLDYgKzEwNTgsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIAogICAgICAgICBKSVRD
b21waWxlcjo6TGFiZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICAKKyAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpEaXJlY3RDYWxsKTsKKwogICAgICAgICBt
X2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAgICAgCiAgICAgICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwpAQCAtOTg4LDIyICsx
MDY3LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAg
ICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpMYWJlbCBzbG93UGF0aCA9IG1faml0LmxhYmVsKCk7
CiAgICAgICAgIGlmIChpc1g4NigpKQotICAgICAgICAgICAgbV9qaXQucG9wKEpJVENvbXBpbGVy
OjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUikpOworICAgICAgICAgICAgbV9qaXQucG9wKEdQ
UkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExp
bmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdHUFIwCisgICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIG1faml0Lmp1bXAoKS5saW5rVG8o
bWFpblBhdGgsICZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgCiAgICAgICAgIHNldFJlc3VsdEFuZFJlc2V0U3RhY2soKTsKLSAgICAgICAgCi0g
ICAgICAgIG1faml0LmFkZEpTRGlyZWN0Q2FsbChjYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZv
KTsKKworICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xvd0NhbGwsIHNsb3dQ
YXRoLCBjYWxsTGlua0luZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisgICAg
aWYgKGlzVGFpbCAmJiBjYWxsZWVHUFJUZW1wb3JhcnkgIT0gc3RkOjpudWxsb3B0KQorICAgICAg
ICBtX2ppdC5tb3ZlKHRhaWxDYWxsZWUtPmdwcigpLCBjYWxsZWVHUFJUZW1wb3JhcnktPmdwcigp
KTsKKwogICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwotICAgIAor
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKQEAgLTEwMjUsMjMgKzExMDksMjIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
VGFpbENhbGwpIHsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgY2FsbEZyYW1lU2h1ZmZsZXIo
bV9qaXQsIHNodWZmbGVEYXRhKTsKLSAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVl
SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgaWYgKGFy
Z3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgICAgIGNhbGxGcmFtZVNodWZm
bGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSkpOwogICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgo
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6
cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLQotICAgICAgICBpZiAoaXNU
YWlsKQotICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlz
IG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKLSAgICB9
CisgICAgfSBlbHNlIGlmIChpc1RhaWwpCisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXMoKTsKIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
Y2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUg
aW4gcmVnVDIKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8g
YmUgaW4gbm9uQXJnR1BSMAogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogCi0gICAgaWYgKGlzVGFpbCkK
KyAgICBpZiAoaXNUYWlsKSB7CisgICAgICAgIHRhaWxDYWxsZWUgPSBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGNhbGxlZUdQUlRlbXBvcmFyeSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9qaXQu
YWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7Ci0gICAgZWxzZQorICAg
IH0gZWxzZQogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7CiAKICAgICBtX2ppdC5h
ZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsTGlua0luZm8p
OwpAQCAtNDE2Niw2ICs0MjQ5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRSZXN0TGVu
Z3RoOiB7CiAgICAgICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBTcGVj
dWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsCiAgICAgLCBtX2xhc3RHZW5lcmF0
ZWROb2RlKExhc3ROb2RlVHlwZSkKICAgICAsIG1faW5kZXhJbkJsb2NrKDApCiAgICAgLCBtX2dl
bmVyYXRpb25JbmZvKG1faml0LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCkpCisgICAgLCBt
X2FyZ3VtZW50R2VuZXJhdGlvbkluZm8oQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICsgR1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykKICAgICAsIG1fc3RhdGUobV9qaXQuZ3JhcGgoKSkK
ICAgICAsIG1faW50ZXJwcmV0ZXIobV9qaXQuZ3JhcGgoKSwgbV9zdGF0ZSkKICAgICAsIG1fc3Ry
ZWFtKCZqaXQuaml0Q29kZSgpLT52YXJpYWJsZUV2ZW50U3RyZWFtKQpAQCAtNDA3LDYgKzQwOCw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNsZWFyR2VuZXJhdGlvbkluZm8KIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKICAgICAg
ICAgbV9nZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAg
ICAgICAgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW2ldID0gR2VuZXJhdGlvbkluZm8oKTsKICAg
ICBtX2dwcnMgPSBSZWdpc3RlckJhbms8R1BSSW5mbz4oKTsKICAgICBtX2ZwcnMgPSBSZWdpc3Rl
ckJhbms8RlBSSW5mbz4oKTsKIH0KQEAgLTExOTksNiArMTIwMiwyNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhCiAgICAgcmV0dXJuIHN0cmluZ3NbZm9ybWF0XTsK
IH0KIAorc3RhdGljIHZvaWQgZHVtcFJlZ2lzdGVySW5mbyhHZW5lcmF0aW9uSW5mbyYgaW5mbywg
dW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGluZm8uYWxpdmUoKSkKKyAgICAgICAgZGF0YUxv
Z0YoIiAgICAlIDNkOiVzJXMiLCBpbmRleCwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8uc3BpbGxGb3JtYXQoKSkpOworICAgIGVs
c2UKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOltfX11bX19dIiwgaW5kZXgpOworICAgIGlm
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKKyAgICAgICAgZGF0
YUxvZ0YoIjpmcHIlZFxuIiwgaW5mby5mcHIoKSk7CisgICAgZWxzZSBpZiAoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCisjZW5kaWYKKyAg
ICAgICAgKSB7CisgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwor
ICAgICAgICBkYXRhTG9nRigiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkp
OworICAgIH0gZWxzZQorICAgICAgICBkYXRhTG9nRigiXG4iKTsKKyAgICAKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZHVtcChjb25zdCBjaGFyKiBsYWJlbCkKIHsKICAgICBpZiAobGFiZWwp
CkBAIC0xMjA4LDI1ICsxMjMxLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3Qg
Y2hhciogbGEKICAgICBtX2dwcnMuZHVtcCgpOwogICAgIGRhdGFMb2dGKCIgIGZwcnM6XG4iKTsK
ICAgICBtX2ZwcnMuZHVtcCgpOwotICAgIGRhdGFMb2dGKCIgIFZpcnR1YWxSZWdpc3RlcnM6XG4i
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7
ICsraSkgewotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9b
aV07Ci0gICAgICAgIGlmIChpbmZvLmFsaXZlKCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAg
ICUgM2Q6JXMlcyIsIGksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwg
ZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOltfX11bX19dIiwgaSk7Ci0gICAgICAgIGlmIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAgICAgICAgICAgIGRh
dGFMb2dGKCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOwotICAgICAgICBlbHNlIGlmIChpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmUKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCi0j
ZW5kaWYKLSAgICAgICAgICAgICkgewotICAgICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgIT0g
SW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICBkYXRhTG9nRigiOiVzXG4iLCBHUFJJbmZvOjpk
ZWJ1Z05hbWUoaW5mby5ncHIoKSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJcbiIpOwotICAgIH0KKworICAgIGRhdGFMb2dGKCIgIEFyZ3VtZW50IFZpcnR1YWxSZWdp
c3RlcnM6XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudEdlbmVy
YXRpb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fYXJndW1l
bnRHZW5lcmF0aW9uSW5mb1tpXSwgaSk7CisKKyAgICBkYXRhTG9nRigiICBMb2NhbCBWaXJ0dWFs
UmVnaXN0ZXJzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlv
bkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIGR1bXBSZWdpc3RlckluZm8obV9nZW5lcmF0aW9u
SW5mb1tpXSwgaSk7CisKICAgICBpZiAobGFiZWwpCiAgICAgICAgIGRhdGFMb2dGKCI8LyVzPlxu
IiwgbGFiZWwpOwogfQpAQCAtMTY3Nyw2ICsxNjkwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUN1cnJlbnRCbG9jawogICAgIAogICAgIG1faml0LmJsb2NrSGVhZHMoKVttX2Jsb2Nr
LT5pbmRleF0gPSBtX2ppdC5sYWJlbCgpOwogCisgICAgaWYgKCFtX2Jsb2NrLT5pbmRleCkKKyAg
ICAgICAgY2hlY2tBcmd1bWVudFR5cGVzKCk7CisKICAgICBpZiAoIW1fYmxvY2stPmludGVyc2Vj
dGlvbk9mQ0ZBSGFzVmlzaXRlZCkgewogICAgICAgICAvLyBEb24ndCBnZW5lcmF0ZSBjb2RlIGZv
ciBiYXNpYyBibG9ja3MgdGhhdCBhcmUgdW5yZWFjaGFibGUgYWNjb3JkaW5nIHRvIENGQS4KICAg
ICAgICAgLy8gQnV0IHRvIGJlIHN1cmUgdGhhdCBub2JvZHkgaGFzIGdlbmVyYXRlZCBhIGp1bXAg
dG8gdGhpcyBibG9jaywgZHJvcCBpbiBhCkBAIC0xNjg3LDE1ICsxNzAzLDMzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKIAogICAgIG1fc3RyZWFtLT5hcHBlbmRB
bmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCisgICAgaWYgKCFtX2Jsb2NrLT5p
bmRleCkKKyAgICAgICAgc2V0dXBBcmd1bWVudFJlZ2lzdGVyc0ZvckVudHJ5KCk7CisgICAgCiAg
ICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAgICBtX2ppdC5qaXRBc3Nl
cnRUYWdzSW5QbGFjZSgpOwogICAgIG1faml0LmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCk7
CiAKICAgICBtX3N0YXRlLnJlc2V0KCk7CiAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2sobV9i
bG9jayk7Ci0gICAgCisKICAgICBmb3IgKHNpemVfdCBpID0gbV9ibG9jay0+dmFyaWFibGVzQXRI
ZWFkLnNpemUoKTsgaS0tOykgewogICAgICAgICBpbnQgb3BlcmFuZCA9IG1fYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgIGlmICghbV9ibG9jay0+aW5k
ZXggJiYgb3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGFyZ3VtZW50ID0gbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50Rm9ySW5kZXgoaSk7
CisgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1l
bnRzRm9yQ2hlY2tpbmdbYXJndW1lbnRdOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
YXJndW1lbnROb2RlICYmIGFyZ3VtZW50Tm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVy
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUtPnJlZkNvdW50KCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIEdldEFy
Z3VtZW50UmVnaXN0ZXJzJ3MuCisgICAgICAgICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExv
ZygKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVFdmVudDo6bW92SGludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIE1pbmlmaWVkSUQoYXJndW1lbnROb2RlKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50Tm9kZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
YmxvY2stPnZhcmlhYmxlc0F0SGVhZFtpXTsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAg
ICAgY29udGludWU7IC8vIE5vIG5lZWQgdG8gcmVjb3JkIGRlYWQgU2V0TG9jYWwncy4KQEAgLTE3
NjQsNyArMTc5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFic3RyYWN0IHN0YXRlIGlzIHJlbWF0ZXJp
YWxpemVkIGZvciB0aGUgbmV4dCBub2RlLgogICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGVF
ZmZlY3RzKG1faW5kZXhJbkJsb2NrKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBQZXJmb3JtIHRo
ZSBtb3N0IGJhc2ljIHZlcmlmaWNhdGlvbiB0aGF0IGNoaWxkcmVuIGhhdmUgYmVlbiB1c2VkIGNv
cnJlY3RseS4KICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpbmRleCkg
ewpAQCAtMTc4MiwxMyArMTgxNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3Vt
ZW50VHlwZXMoCiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIHRydWUpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxv
Y2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0
LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFw
aCgpLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAg
ICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3Mg
Zm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQKKyAgICAgICAgICAgIHx8IChub2Rl
LT5vcCgpID09IFNldExvY2FsICYmIG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IEdldEFyZ3VtZW50
UmVnaXN0ZXIpCisgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0
ZXIpOwogICAgICAgICBBU1NFUlQobm9kZS0+c2hvdWxkR2VuZXJhdGUoKSk7CiAKICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKQEAgLTE3OTksMjMgKzE4MzUsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKIAotICAgICAgICBK
U1ZhbHVlU291cmNlIHZhbHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKTsKLSAgICAgICAgCisgICAgICAgIEpTVmFsdWVTb3Vy
Y2UgdmFsdWVTb3VyY2U7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBHUFJSZWcgYXJn
dW1lbnRSZWdpc3RlciA9IEludmFsaWRHUFJSZWc7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aSkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAg
ICAgICBhcmd1bWVudFJlZ2lzdGVyID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoaSk7CisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoYXJndW1lbnRS
ZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgICAgIHZh
bHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpKTsKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHN3aXRjaCAoZm9ybWF0
KSB7CiAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOiB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QmVsb3csIGFyZ3VtZW50UmVnaXN0ZXIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOiB7CiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAg
bV9qaXQubW92ZShhcmd1bWVudFJlZ2lzdGVyLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC54b3I2NChU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCB0ZW1wLmdwcigp
KTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJndW1lbnRSZWdpc3RlciwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODQ2LDEwICsxOTAz
LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBtX29y
aWdpbiA9IE5vZGVPcmlnaW4oKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2V0dXBBcmd1
bWVudFJlZ2lzdGVyc0ZvckVudHJ5KCkKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTCisgICAgQmFzaWNCbG9jayogZmlyc3RCbG9jayA9IG1faml0LmdyYXBo
KCkuYmxvY2soMCk7CisKKyAgICAvLyAgJiYmJiAgUmV2aXNpdCB0aGlzIHRvIHVzZSBtX2FyZ3Vt
ZW50c0ZvckNoZWNraW5nCisgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJ
bkJsb2NrIDwgZmlyc3RCbG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICBO
b2RlKiBub2RlID0gZmlyc3RCbG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKworICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
ICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxS
ZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVn
ID0gR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRl
eCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50UmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoIW1fZ3Bycy5p
c0xvY2tlZChhcmd1bWVudFJlZykpOworICAgICAgICAgICAgbV9ncHJzLmFsbG9jYXRlU3BlY2lm
aWMoYXJndW1lbnRSZWcpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihhcmd1bWVudFJlZywg
dmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgaW5mby5pbml0QXJn
dW1lbnRSZWdpc3RlclZhbHVlKG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIGFyZ3VtZW50UmVnLCBE
YXRhRm9ybWF0SlMpOworICAgICAgICAgICAgaW5mby5ub3RpY2VPU1JCaXJ0aCgqbV9zdHJlYW0s
IG5vZGUsIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBEb24ndCBsZWF2ZSBhcmd1
bWVudCByZWdpc3RlcnMgbG9ja2VkLgorICAgICAgICAgICAgbV9ncHJzLnVubG9jayhhcmd1bWVu
dFJlZyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKwogYm9vbCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSgpCiB7Ci0gICAgY2hlY2tBcmd1bWVudFR5cGVzKCk7Ci0gICAgCiAgICAgQVNT
RVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7
IGJsb2NrSW5kZXggPCBtX2ppdC5ncmFwaCgpLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsK
ICAgICAgICAgbV9qaXQuc2V0Rm9yQmxvY2tJbmRleChibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJSZWcgZmlsbEpTVmFsdWUoRWRnZSk7CisgICAgR1BS
UmVnIGZpbGxKU1ZhbHVlKEVkZ2UsIEdQUlJlZyBncHJUb1VzZSA9IEludmFsaWRHUFJSZWcpOwog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBib29sIGZpbGxKU1ZhbHVlKEVkZ2UsIEdQUlJl
ZyYsIEdQUlJlZyYsIEZQUlJlZyYpOwogI2VuZGlmCkBAIC0yMDAsNiArMjAwLDkgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQogICAgICAg
ICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5kZWJ1Z09mZnNldCgp
KTsKICNlbmRpZgorICAgICAgICBpZiAoc3BlY2lmaWMgPT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcGls
bE1lID0gbV9ncHJzLmFsbG9jYXRlU3BlY2lmaWMoc3BlY2lmaWMpOwogICAgICAgICBpZiAoc3Bp
bGxNZS5pc1ZhbGlkKCkpIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMzE1LDYgKzMxOCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2hlY2tBcmd1bWVudFR5cGVzKCk7CiAKKyAgICB2b2lk
IHNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpOworCiAgICAgdm9pZCBjbGVhckdlbmVy
YXRpb25JbmZvKCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHdoZW4gZ2VuZXJh
dGluZyAndW5leHBlY3RlZCcKQEAgLTQ4NSw2ICs0OTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gU3Bp
bGwgYSBWaXJ0dWFsUmVnaXN0ZXIgdG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0
dWFsUmVnaXN0ZXIgc3BpbGxNZSkKICAgICB7CisgICAgICAgIGlmIChzcGlsbE1lLmlzQXJndW1l
bnQoKSAmJiBtX2Jsb2NrLT5pbmRleCA+IDApCisgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0
ZXIoc3BpbGxNZSk7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMjg3Miw3ICsyODgwLDEw
IEBAIHB1YmxpYzoKIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci50b0xvY2FsKCldOwor
ICAgICAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzTG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVy
biBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci50b0xvY2FsKCldOworICAgICAgICBB
U1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSk7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50R2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpXTsKICAgICB9CiAg
ICAgCiAgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCkBAIC0y
ODk1LDYgKzI5MDYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAg
ICAgLy8gVmlydHVhbCBhbmQgcGh5c2ljYWwgcmVnaXN0ZXIgbWFwcy4KICAgICBWZWN0b3I8R2Vu
ZXJhdGlvbkluZm8sIDMyPiBtX2dlbmVyYXRpb25JbmZvOworICAgIFZlY3RvcjxHZW5lcmF0aW9u
SW5mbywgOD4gbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvOwogICAgIFJlZ2lzdGVyQmFuazxHUFJJ
bmZvPiBtX2dwcnM7CiAgICAgUmVnaXN0ZXJCYW5rPEZQUkluZm8+IG1fZnByczsKIApAQCAtMjk5
Myw2ICszMDA1LDIwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZXhwbGljaXQgSlNWYWx1ZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBHUFJSZWcgcmVnVG9Vc2UpCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAs
IG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkgfHwgcmVnVG9V
c2UgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGdwclVzZVNwZWNpZmljKHJlZ1RvVXNl
KTsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICB+SlNWYWx1ZU9wZXJhbmQoKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2VkZ2UpCkBAIC0zMDI5LDYgKzMwNTUsMTIgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbEpTVmFsdWUobV9lZGdlKTsKICAgICAg
ICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOwogICAgIH0KKyAgICBHUFJSZWcgZ3ByVXNlU3BlY2lm
aWMoR1BSUmVnIHJlZ1RvVXNlKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxs
SlNWYWx1ZShtX2VkZ2UsIHJlZ1RvVXNlKTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlk
OworICAgIH0KICAgICBKU1ZhbHVlUmVncyBqc1ZhbHVlUmVncygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNiArMjc2LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbnVsbHB0cjsKICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBsb2NhbCA9IG1fbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKGxvY2FsLmlzQXJndW1lbnQoKSAmJiBtX2dyYXBoLm1fc3RyZW5ndGhSZWR1Y2VBcmd1
bWVudHMgIT0gT3B0aW1pemVBcmd1bWVudEZsdXNoZXMpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fbm9kZUluZGV4OyBpLS07KSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPmF0KGkpOwogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsICYmIG5vZGUtPmxvY2FsKCkgPT0gbG9jYWwp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMwLDE1ICsxMzAsMzAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9z
ckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QzLCBNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUNCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKGludDMyX3Qp
KSkpOwogICAgIGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBHUFJJbmZv
OjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQq
Pigtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
KSkpKS5saW5rVG8obG9vcCwgJmppdCk7CiAgICAgCi0gICAgaml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9mZnNldE9mVGFyZ2V0UEMpLCBHUFJJbmZv
OjpyZWdUMSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZSwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEwMDAp
KSkpOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7CiAgICAgaml0LmFi
b3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAK
ICAgICBvay5saW5rKCZqaXQpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVn
aXN0ZXJzCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAg
IEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7
CisgICAgaml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCksIGFyZ0NvdW50UmVnKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZG9uZUxvYWRpbmdBcmdzOworICAgIAorICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJn
dW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwg
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICAKKyAg
ICBkb25lTG9hZGluZ0FyZ3MubGluaygmaml0KTsKKyNlbmRpZgorICAgIAogICAgIGppdC5yZXN0
b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICBq
aXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKIAotICAgIGppdC5qdW1wKEdQ
UkluZm86OnJlZ1QxKTsKKyAgICBqaXQuanVtcChHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZW50cnkgdGh1
bmsiKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDEwICs0NywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBydW4o
KQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX3BsYW4ubW9kZSA9PSBE
RkdNb2RlKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VGVExKSVQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9wcm9maWxlZEJsb2NrLT5tX2RpZEZhaWxGVExDb21waWxhdGlvbikKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNyArNDg4LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSkgfHwgYmxvY2st
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKQogICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGJs
b2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSkgfHwgYmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5hcmd1bWVudChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSk7Ci0gICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMuYXJndW1lbnQoaSkg
PSBub3RTZXQ7CiAgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMuYXJndW1lbnQoaSkg
PSBub3RTZXQ7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMyw4ICsxMzMsMTMgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3Ry
ZWFtOjpyZWNvbnN0cnVjdCgKICAgICBpZiAoIWluZGV4KSB7CiAgICAgICAgIHZhbHVlUmVjb3Zl
cmllcyA9IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBudW1WYXJpYWJsZXMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlUmVj
b3Zlcmllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0g
VmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5KU1N0YWNrKAotICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZVJlY292ZXJpZXMub3BlcmFuZEZvckluZGV4KGkpKSwgRGF0YUZvcm1h
dEpTKTsKKyAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVl
UmVjb3Zlcnk6OmluR1BSKAorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFJlZ2lzdGVyRm9y
RnVuY3Rpb25Bcmd1bWVudChpKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6ZGlz
cGxhY2VkSW5KU1N0YWNrKAorICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFs
dWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFGb3JtYXRKUyk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MSw2ICsxNjYs
MTMgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAgICAgICAg
IE1pbmlmaWVkR2VuZXJhdGlvbkluZm8gaW5mbzsKICAgICAgICAgICAgIGluZm8udXBkYXRlKGV2
ZW50KTsKICAgICAgICAgICAgIGdlbmVyYXRpb25JbmZvcy5hZGQoZXZlbnQuaWQoKSwgaW5mbyk7
CisgICAgICAgICAgICBNaW5pZmllZE5vZGUqIG5vZGUgPSBncmFwaC5hdChldmVudC5pZCgpKTsK
KyAgICAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rl
cikgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGdwciA9IGV2
ZW50LmdwcigpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50ID0ganNGdW5jdGlv
bkFyZ3VtZW50Rm9yQXJndW1lbnRSZWdpc3RlcihncHIpOworICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBhcmd1bWVudFJlZyA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3Vt
ZW50KTsKKyAgICAgICAgICAgICAgICBvcGVyYW5kU291cmNlcy5zZXRPcGVyYW5kKGFyZ3VtZW50
UmVnLCBWYWx1ZVNvdXJjZShldmVudC5pZCgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbGw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJB
bGxvY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDMzIEBAIHB1YmxpYzoKICAgICAgICAgOiBQaGFzZShncmFwaCwg
InZpcnR1YWwgcmVnaXN0ZXIgYWxsb2NhdGlvbiIpCiAgICAgewogICAgIH0KLSAgICAKKworICAg
IHZvaWQgYWxsb2NhdGVSZWdpc3RlcihTY29yZUJvYXJkJiBzY29yZUJvYXJkLCBOb2RlKiBub2Rl
KQorICAgIHsKKyAgICAgICAgLy8gRmlyc3QsIGNhbGwgdXNlIG9uIGFsbCBvZiB0aGUgY3VycmVu
dCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KKyAgICAgICAgLy8gYWxsb2NhdGUgYSBWaXJ0dWFsUmVn
aXN0ZXIgZm9yIHRoaXMgbm9kZS4gV2UgZG8gc28gaW4gdGhpcworICAgICAgICAvLyBvcmRlciBz
byB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQgYQorICAgICAgICAvLyBW
aXJ0dWFsUmVnaXN0ZXIgaXMgZnJlZWQsIHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4K
KyAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHgg
PCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQor
ICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuW2NoaWxkSWR4XSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzY29y
ZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNjb3Jl
Qm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgc2NvcmVC
b2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW5vZGUtPmhhc1Jlc3VsdCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJkLmFsbG9jYXRlKCk7
CisgICAgICAgIG5vZGUtPnNldFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAg
ICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVzZUNvdW50IGFydGlmaWNp
YWxseSBlbGV2YXRlZCwKKyAgICAgICAgLy8gY2FsbCB1c2Ugbm93IHRvIGFjY291bnQgZm9yIHRo
aXMuCisgICAgICAgIGlmIChub2RlLT5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgICAgIHNjb3Jl
Qm9hcmQudXNlKG5vZGUpOworICAgIH0KKwogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRD
UFMpOwpAQCAtNTksNiArODUsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIEZvcmNl
IHVzYWdlIG9mIGhpZ2hlc3QtbnVtYmVyZWQgdmlydHVhbCByZWdpc3RlcnMuCiAgICAgICAgICAg
ICAgICAgc2NvcmVCb2FyZC5zb3J0RnJlZSgpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBIYW5kbGUgR2V0QXJndW1lbnRSZWdpc3RlciBOb2RlcyBmaXJzdCBhcyB0aGUgcmVnaXN0
ZXIgaXMgYWxpdmUgb24gZW50cnkKKyAgICAgICAgICAgIC8vIHRvIHRoZSBmdW5jdGlvbiBhbmQg
bWF5IG5lZWQgdG8gYmUgc3BpbGxlZCBiZWZvcmUgYW55IHVzZS4KKyAgICAgICAgICAgIGlmICgh
YmxvY2tJbmRleCkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9
IDA7IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9k
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyAr
K2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQo
aW5kZXhJbkJsb2NrKTsKICAgICAgICAgCkBAIC03MywzMiArMTEwLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IW5vZGUtPmNoaWxkMSgpLT5oYXNSZXN1bHQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8v
IEZpcnN0LCBjYWxsIHVzZSBvbiBhbGwgb2YgdGhlIGN1cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0
aGVuCi0gICAgICAgICAgICAgICAgLy8gYWxsb2NhdGUgYSBWaXJ0dWFsUmVnaXN0ZXIgZm9yIHRo
aXMgbm9kZS4gV2UgZG8gc28gaW4gdGhpcwotICAgICAgICAgICAgICAgIC8vIG9yZGVyIHNvIHRo
YXQgaWYgYSBjaGlsZCBpcyBvbiBpdHMgbGFzdCB1c2UsIGFuZCBhCi0gICAgICAgICAgICAgICAg
Ly8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBiZSByZXVzZWQgZm9yIG5v
ZGUuCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmly
c3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxk
cmVuKCk7IGNoaWxkSWR4KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZUlmSGFzUmVzdWx0KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZI
YXNSZXN1bHQobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJk
LnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAgICAgc2Nv
cmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gc2NvcmVCb2FyZC5hbGxvY2F0ZSgpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPnNldFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAg
IC8vICdtdXN0R2VuZXJhdGUnIG5vZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5
IGVsZXZhdGVkLAotICAgICAgICAgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZv
ciB0aGlzLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5tdXN0R2VuZXJhdGUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2Uobm9kZSk7CisgICAgICAgICAgICAgICAgYWxs
b2NhdGVSZWdpc3RlcihzY29yZUJvYXJkLCBub2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNjb3JlQm9hcmQuYXNzZXJ0Q2xlYXIoKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgIGNhc2UgR2V0Q2FsbGVlOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAg
ICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgVG9OdW1iZXI6
CiAgICAgY2FzZSBUb1N0cmluZzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOCBAQCBKSVRDb2Rl
Ojp+SklUQ29kZSgpCiAgICAgICAgIGRhdGFMb2coIkRlc3Ryb3lpbmcgRlRMIEpJVCBjb2RlIGF0
ICIpOwogICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgICAgIGRhdGFMb2coY29tbWEs
IG1fYjNDb2RlKTsKLSAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9hcml0eUNoZWNrRW50cnlwb2lu
dCk7CisgICAgICAgIGRhdGFMb2coY29tbWEsIG1fcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFy
Z3NFbnRyeVBvaW50KTsKKyAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9yZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnlQb2ludCk7CiAgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQogfQpAQCAt
NjAsMzEgKzYxLDMwIEBAIHZvaWQgSklUQ29kZTo6aW5pdGlhbGl6ZUIzQnlwcm9kdWN0cyhzdGQK
ICAgICBtX2IzQnlwcm9kdWN0cyA9IFdURk1vdmUoYnlwcm9kdWN0cyk7CiB9CiAKLXZvaWQgSklU
Q29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIgYWRkcmVzcykKK3ZvaWQgSklU
Q29kZTo6aW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2RlUmVmIGVudHJ5cG9pbnRUaHVuaykK
IHsKLSAgICBtX2FkZHJlc3NGb3JDYWxsID0gYWRkcmVzczsKKyAgICBtX2VudHJ5cG9pbnRUaHVu
ayA9IGVudHJ5cG9pbnRUaHVuazsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQXJpdHlD
aGVja0VudHJ5cG9pbnQoQ29kZVJlZiBlbnRyeXBvaW50KQordm9pZCBKSVRDb2RlOjpzZXRFbnRy
eUZvcihFbnRyeVBvaW50VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQogewotICAgIG1fYXJpdHlD
aGVja0VudHJ5cG9pbnQgPSBlbnRyeXBvaW50OworICAgIG1fZW50cnlwb2ludHMuc2V0RW50cnlG
b3IodHlwZSwgZW50cnkpOwogfQotCi1KSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6OmFkZHJlc3NG
b3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2spCisgICAgCitKSVRDb2RlOjpDb2RlUHRy
IEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSkKIHsKLSAg
ICBzd2l0Y2ggKGFyaXR5Q2hlY2spIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoK
LSAgICAgICAgcmV0dXJuIG1fYWRkcmVzc0ZvckNhbGw7Ci0gICAgY2FzZSBNdXN0Q2hlY2tBcml0
eToKLSAgICAgICAgcmV0dXJuIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQuY29kZSgpOwotICAgIH0K
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7
CisgICAgQ29kZVB0ciBlbnRyeSA9IG1fZW50cnlwb2ludHMuZW50cnlGb3IoZW50cnlUeXBlKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChlbnRyeSk7CisgICAgcmV0dXJuIGVudHJ5OwogfQogCiB2b2lk
KiBKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWRkcmVzc0ZvckNhbGwuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNz
Rm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpICsgb2Zmc2V0OworI2Vsc2UKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRh
YmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyNlbmRpZgogfQogCiB2b2lkKiBKSVRDb2RlOjpkYXRh
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklUQ29kZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgSklUQ29kZSgpOwogICAgIH5KSVRDb2RlKCk7CiAKLSAgICBDb2RlUHRyIGFkZHJlc3NGb3JD
YWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAgICBDb2RlUHRyIGFkZHJlc3NGb3JDYWxs
KEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzc0F0
T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHZvaWQqIGRhdGFBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgb2Zmc2V0T2Yodm9p
ZCogcG9pbnRlckludG9Db2RlKSBvdmVycmlkZTsKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBpbml0aWFsaXplQjNDb2RlKENvZGVSZWYpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZUIzQnlwcm9kdWN0cyhzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+KTsKLSAg
ICB2b2lkIGluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyKTsKLSAgICB2b2lkIGluaXRp
YWxpemVBcml0eUNoZWNrRW50cnlwb2ludChDb2RlUmVmKTsKLSAgICAKKyAgICB2b2lkIGluaXRp
YWxpemVFbnRyeXBvaW50VGh1bmsoQ29kZVJlZik7CisgICAgdm9pZCBzZXRFbnRyeUZvcihFbnRy
eVBvaW50VHlwZSwgQ29kZVB0cik7CisKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25z
dCBUcmFja2VkUmVmZXJlbmNlcyYpIG92ZXJyaWRlOwogCiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJl
Z2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2NrKiwg
Q2FsbFNpdGVJbmRleCkgb3ZlcnJpZGU7CkBAIC03Nyw3ICs3NywxMiBAQCBwcml2YXRlOgogICAg
IENvZGVQdHIgbV9hZGRyZXNzRm9yQ2FsbDsKICAgICBDb2RlUmVmIG1fYjNDb2RlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4gbV9iM0J5cHJvZHVjdHM7Ci0gICAg
Q29kZVJlZiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50OworICAgIENvZGVSZWYgbV9lbnRyeXBvaW50
VGh1bms7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRyeXBvaW50czsKKyAgICBDb2RlUHRyIG1f
cmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9y
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnlQb2ludDsKKyAgICBDb2RlUHRyIG1fc3RhY2tBcmdz
QXJpdHlPS0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3N0YWNrQXJnc0NoZWNrQXJpdHlFbnRy
eXBvaW50OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1
bmN0aW9uKCkKICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseSwgKmIzQ29kZUxpbmtCdWZmZXIs
CiAgICAgICAgICAgICAoIkZUTCBCMyBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tX
aXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpKS5kYXRhKCkpKSk7
CiAKLSAgICBqaXRDb2RlLT5pbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoCisgICAgaml0
Q29kZS0+aW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuaygKICAgICAgICAgRklOQUxJWkVfQ09ERV9J
RigKICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseSwgKmVudHJ5cG9pbnRMaW5rQnVmZmVyLAog
ICAgICAgICAgICAgKCJGVEwgZW50cnlwb2ludCB0aHVuayBmb3IgJXMgd2l0aCBCMyBnZW5lcmF0
ZWQgY29kZSBhdCAlcCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29k
ZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpKS5kYXRhKCksIGZ1bmN0aW9uKSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
MTQgKzEyNywxMTAgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAKICAgICBzd2l0Y2gg
KGdyYXBoLm1fcGxhbi5tb2RlKSB7CiAgICAgY2FzZSBGVExNb2RlOiB7Ci0gICAgICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgbWFpblBhdGhKdW1wczsKLSAgICAKLSAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwot
ICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpKTsK
KyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmaWxsUmVnaXN0ZXJzQW5kQ29udGludWVN
YWluUGF0aDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCB0b01haW5QYXRoOworCisg
ICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhSZWdpc3RlckFy
Z3VtZW50Q291bnQgPSBzdGQ6Om1pbihudW1QYXJhbWV0ZXJzLCBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTKTsKKworICAgICAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworCisgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTICsgMV07CisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMg
PCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAg
ICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlv
biBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIC0gMTsgYXJnSW5kZXggPj0g
bnVtUGFyYW1ldGVyczsgYXJnSW5kZXgtLSkgeworICAgICAgICAgICAgICAgIHJlZ2lzdGVyQXJn
dW1lbnRzRW50cnlwb2ludHNbYXJnSW5kZXggKyAxXSA9IGppdC5sYWJlbCgpOworICAgICAgICAg
ICAgICAgIGppdC5lbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJn
c0V4dHJhKTsKKyAgICAgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBjb250aW51ZVRvQXJpdHlG
aXh1cDsKKworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0NoZWNrQXJpdHlF
bnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpT
dGFja0FyZ3NBcml0eSk7CisgICAgICAgIGppdC5sb2FkMzIoZnJhbWUud2l0aE9mZnNldChzaXpl
b2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgY29udGludWVUb0FyaXR5Rml4dXAuYXBwZW5kKGppdC5icmFuY2gzMigK
KyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJlZ1QxLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpKTsKKworI2lm
IEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVl
VG9TdGFja0FyaXR5T2sgPSBqaXQuanVtcCgpOworI2VuZGlmCisKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzdGFja0FyZ3NBcml0eU9LRW50cnkgPSBqaXQubGFiZWwoKTsKKworICAgICAg
ICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFC
TEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVlVG9TdGFja0FyaXR5T2subGluaygmaml0
KTsKKyNlbmRpZgorCisgICAgICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1l
bnQgcmVnaXN0ZXJzCisKKyAgICAgICAgLy8gRklYTUU6IFdvdWxkIGxpa2UgdG8gZWxpbWluYXRl
IHRoZXNlIHRvIGxvYWQsIGJ1dCB3ZSBjdXJyZW50bHkgY2FuJ3QganVtcCBpbnRvCisgICAgICAg
IC8vIHRoZSBCMyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBwb2ludCBmcm9tIHRoZSBz
bG93IGVudHJ5IHdoZXJlIHRoZQorICAgICAgICAvLyByZWdpc3RlcnMgYXJlIHN0b3JlZCB0byB0
aGUgc3RhY2suCisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVBy
b2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgp
KTsKKyAgICAgICAgaml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVBy
b2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBh
cmdJbmRleCA8IG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAg
ICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5k
ZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKKyAg
ICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkgPSBqaXQubGFiZWwoKTsKKyAg
ICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0FyaXR5KTsKKworICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXA7Cisg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRz
OworCisgICAgICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RXF1YWwsIGFyZ0NvdW50UmVn
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSkpOworICAgICAgICAg
ICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmVsb3csIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSkpOworICAgICAgICAgICAgLy8gIEZhbGwg
dGhyb3VnaCB0byB0aGUgImV4dHJhIHJlZ2lzdGVyIGFyaXR5IiBjYXNlLgorCisgICAgICAgICAg
ICBjaGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHMgPSBqaXQubGFiZWwoKTsKKyAgICAgICAg
ICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0
aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9
IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgICAgIHRvTWFpblBhdGguYXBw
ZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkpOworICAgICAgICAgICAgICAg
IGppdC5lbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVn
aXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0
cmEpOworICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBhcmdDb3VudFJlZywgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpKTsKKworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cC5hcHBlbmQo
aml0Lmp1bXAoKSk7CisjZW5kaWYKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA+IDApIHsK
KyAgICAgICAgICAgIC8vICBUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgInRoaXMiIHBhcmFtZXRl
ci4KKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmd1bWVudHNOZWVk
QXJpdHlGaXh1cCA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFy
Z0luZGV4ID0gMTsgYXJnSW5kZXggPCBudW1QYXJhbWV0ZXJzICYmIGFyZ0luZGV4IDw9IG1heFJl
Z2lzdGVyQXJndW1lbnRDb3VudDsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4XSA9IHJlZ2lzdGVyQXJndW1lbnRzTmVlZEFy
aXR5Rml4dXA7CisgICAgICAgIH0KKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAg
aW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc0FyaXR5KTsKKyNlbmRpZgorCisgICAg
ICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAgICBq
aXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShtYXhSZWdpc3Rl
ckFyZ3VtZW50Q291bnQpOworCisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmxpbmsoJmpp
dCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6QXJpdHlGaXh1cFJlcXVp
cmVkKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgaml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRv
cENhbGxGcmFtZSk7CkBAIC0xNTUsMTEgKzI1MSwyMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRl
KQogCiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAg
ICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBmaWxsUmVnaXN0ZXJzQW5kQ29u
dGludWVNYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUZpeHVwID0gaml0LmNh
bGwoKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1haW5Q
YXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRD
b250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBmaWxsUmVnaXN0
ZXJzQW5kQ29udGludWVNYWluUGF0aC5saW5rVG8oc3RhY2tBcmdzQXJpdHlPS0VudHJ5LCAmaml0
KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCByZWdpc3RlckVudHJ5Tm9Bcml0eSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisgICAgICAgIHRvTWFpblBhdGguYXBw
ZW5kKGppdC5qdW1wKCkpOworI2VuZGlmCiAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewpA
QCAtMTY5LDkgKzI3NCwzNSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBsaW5r
QnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/
IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7
CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9t
Q2FsbGVyRnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwogICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0uZ2V0
Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9jYXRpb25M
YWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOworICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKHRvTWFpblBhdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdp
c2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisKKyAgICAgICAgc3Rh
dGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KSk7CisgICAgICAgIHN0YXRl
LmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlu
a0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKIAotICAgICAgICBz
dGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisjaWYg
RU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVu
dHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckVudHJ5Tm9Bcml0eSk7CisjZWxz
ZQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5ID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKTsK
KyNlbmRpZgorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWQsIG1haW5FbnRyeSk7CisKKyAgICAgICAgaWYgKGNoZWNrRm9y
RXh0cmFSZWdpc3RlckFyZ3VtZW50cy5pc1NldCgpKQorICAgICAgICAgICAgc3RhdGUuaml0Q29k
ZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2YoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc1Bv
c3NpYmxlRXh0cmFBcmdzLCBtYWluRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHks
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KSk7CisK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeTsKKyAgICAgICAgICAgIGlmIChhcmdDb3Vu
dCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbWFpbkVudHJ5Owor
ICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3Vu
dF0uaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9u
T2YocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdp
c3RlckFyZ3NDaGVja0FyaXR5RW50cnkpOworICAgICAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0
RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3Vu
dChhcmdDb3VudCksIGVudHJ5KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIApAQCAtMTgxLDcgKzMxMiwyMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAg
ICAgICAvLyBwb2ludCB3ZSd2ZSBldmVuIGRvbmUgdGhlIHN0YWNrIGNoZWNrLiBCYXNpY2FsbHkg
d2UganVzdCBoYXZlIHRvIG1ha2UgdGhlCiAgICAgICAgIC8vIGNhbGwgdG8gdGhlIEIzLWdlbmVy
YXRlZCBjb2RlLgogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0ID0gaml0LmxhYmVs
KCk7CisKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisKKyAgICAgICAgLy8g
TG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAgICAv
LyBGSVhNRTogV291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UgdG8gbG9hZCwgYnV0IHdlIGN1
cnJlbnRseSBjYW4ndCBqdW1wIGludG8KKyAgICAgICAgLy8gdGhlIEIzIGNvbXBpbGVkIGNvZGUg
YXQgYW4gYXJiaXRyYXJ5IHBvaW50IGZyb20gdGhlIHNsb3cgZW50cnkgd2hlcmUgdGhlCisgICAg
ICAgIC8vIHJlZ2lzdGVycyBhcmUgc3RvcmVkIHRvIHRoZSBzdGFjay4KKyAgICAgICAgaml0LmVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgICAgICBqaXQuZW1pdEdldFBh
eWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRleCA8IE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspCisgICAgICAgICAg
ICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKGFyZ0luZGV4
LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworCiAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAg
ICAKICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0s
IGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtMTkxLDcgKzMzNSw3
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIH0KICAgICAgICAgbGlua0J1ZmZl
ci0+bGluayhtYWluUGF0aEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+
aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhcnQpKTsK
KyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2
ICsxOTYsMTAgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFn
VHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFn
TWFzay0+a2V5KCkpOwogICAgICAgICAKKyAgICAgICAgLy8gU3RvcmUgb3V0IGNhbGxlZSBhbmQg
YXJndW1lbnQgY291bnQgZm9yIHBvc3NpYmxlIE9TUiBleGl0LgorICAgICAgICBtX291dC5zdG9y
ZTY0KG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSwg
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICAgICAgbV9vdXQuc3RvcmUz
MihtX291dC5hcmd1bWVudFJlZ2lzdGVySW50MzIoYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50
Q291bnQoKSksIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworCiAg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBTdGFjayBP
dmVyZmxvdyBDaGVjay4KQEAgLTI0NywyMCArMjUxLDM0IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
Q2hlY2sgQXJndW1lbnRzLgogICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5jbGVhcigpOwogICAg
ICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2FscyA9IE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4o
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSwgMCk7CisKKyAgICAgICAgVmVjdG9yPE5vZGUq
LCA4PiBhcmd1bWVudE5vZGVzOworICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiBhcmd1bWVudFZh
bHVlczsKKworICAgICAgICBhcmd1bWVudE5vZGVzLnJlc2l6ZShjb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpKTsKKyAgICAgICAgYXJndW1lbnRWYWx1ZXMucmVzaXplKGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOworCisgICAgICAgIG1faGlnaEJsb2NrID0gbV9ncmFwaC5ibG9jaygw
KTsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpOyBpLS07KSB7Ci0gICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1
bWVudChpKSA9Ci0gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVk
SlNWYWx1ZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKLSAgICAgICAgfQotICAg
ICAgICBtX25vZGUgPSBudWxscHRyOwotICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29k
ZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXTsKICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gbV9vdXQubG9hZDY0KGFkZHJl
c3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgCisgICAgICAgICAgICBMVmFsdWUganNWYWx1
ZSA9IG51bGxwdHI7CisKICAgICAgICAgICAgIGlmIChub2RlKSB7Ci0gICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBvcGVyYW5kID09IG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5tYWNoaW5lTG9jYWwpOworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgICAgICBhdmFp
bGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5hcmd1bWVudChpKSA9IEF2YWlsYWJpbGl0eShub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BS
SW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG5vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShub2RlLCBqc1ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAo
KS5tX2xvY2Fscy5hcmd1bWVudChpKSA9CisgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFi
aWxpdHkoRmx1c2hlZEF0KEZsdXNoZWRKU1ZhbHVlLCBvcGVyYW5kKSk7CisgICAgICAgICAgICAg
ICAgICAgIGpzVmFsdWUgPSBtX291dC5sb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+aGFzQXJndW1lbnRSZWdp
c3RlckluZGV4KCkgfHwgb3BlcmFuZCA9PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGlu
ZUxvY2FsKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
aGFjaywgYnV0IGl0J3MgYW4gZWZmZWN0aXZlIG9uZS4gSXQgYWxsb3dzIHVzIHRvIGRvIENTRSBv
biB0aGUKICAgICAgICAgICAgICAgICAvLyBwcmltb3JkaWFsIGxvYWQgb2YgYXJndW1lbnRzLiBU
aGlzIGFzc3VtZXMgdGhhdCB0aGUgR2V0TG9jYWwgdGhhdCBnb3QgcHV0IGluCkBAIC0yNjgsNyAr
Mjg2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBzaG91bGQgaG9sZCB0cnVlLgog
ICAgICAgICAgICAgICAgIG1fbG9hZGVkQXJndW1lbnRWYWx1ZXMuYWRkKG5vZGUsIGpzVmFsdWUp
OwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcmd1bWVudE5vZGVzW2ldID0gbm9kZTsK
KyAgICAgICAgICAgIGFyZ3VtZW50VmFsdWVzW2ldID0ganNWYWx1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CisgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgeworICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGFyZ3VtZW50Tm9kZXNbaV07CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgTFZh
bHVlIGpzVmFsdWUgPSBhcmd1bWVudFZhbHVlc1tpXTsKKwogICAgICAgICAgICAgc3dpdGNoICht
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldKSB7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJ
bnQzMjoKICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpz
VmFsdWUpLCBub2RlLCBpc05vdEludDMyKGpzVmFsdWUpKTsKQEAgLTgxMCw2ICs4NDIsOSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAg
ICAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAg
ICAgY29tcGlsZUdldEFyZ3VtZW50UmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTUzOTQsNiArNTQyOSwxNiBAQCBwcml2YXRlOgogICAgICAgICBz
ZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSkpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVy
KCkKKyAgICB7CisgICAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBoYXZlIGEgdmFsdWUg
Zm9yIHRoaXMgbm9kZS4KKyAgICAgICAgaWYgKExWYWx1ZSB2YWx1ZSA9IG1fbG9hZGVkQXJndW1l
bnRWYWx1ZXMuZ2V0KG1fbm9kZSkpIHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
YXJndW1lbnRSZWdpc3RlcihHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ub2RlLT5hcmd1
bWVudFJlZ2lzdGVySW5kZXgoKSkpKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlR2V0
U2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSkpOwpAQCAtNTgwNiw5
ICs1ODUxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIHRoZSBjYWxsLgogICAgICAgICBWZWN0
b3I8Q29uc3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIEdQUjAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhlIHNs
b3cgcGF0aCB0aHVua3MgZXhwZWN0IHRoZQotICAgICAgICAvLyBjYWxsZWUgdG8gYmUuCi0gICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6
OnJlZyhHUFJJbmZvOjpyZWdUMCkpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNh
bGxlZSBnb2VzIGludG8gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIGJlY2F1c2UgdGhhdCdz
IHdoZXJlCisgICAgICAgIC8vIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUgY2FsbGVl
IHRvIGJlLgorICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNh
bGxlZSgpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxs
ZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOwogCiAgICAgICAgIGF1dG8gYWRkQXJndW1l
bnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNldCkg
ewogICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQID0KQEAgLTU4MTYsMTAgKzU4NjIs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0RnJvbVNQKSkpOwogICAg
ICAgICB9OwogCi0gICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNv
bnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgUGF5bG9hZE9mZnNldCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1BcmdzOyArK2kpCi0gICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSksIDApOworICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmdMb2NhdGlvbiA9IGFyZ3VtZW50
c0xvY2F0aW9uRm9yKG51bUFyZ3MpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOworICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1Bcmdz
KSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNW
YWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpyZWcoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoYXJndW1l
bnRzKTsKQEAgLTU4NDgsOSArNTkwMCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRM
Q2FsbGVyKTsKKwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRh
cmdldFRvQ2hlY2s7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRo
ID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVj
aywKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsK
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwpAQCAtNTg1OCwxMyArNTkxMiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgubGluaygmaml0KTsKIAotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIGRv
bmUubGluaygmaml0KTsKIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXJnTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1wYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpKSwKQEAgLTU4NzMsNyArNTkyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgp
LmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNM
b2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93
Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCkBAIC01
OTE3LDIwICs1OTcxLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q29u
c3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogICAgICAgICAKLSAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUg
c2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVn
IGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKICAgICAgICAgaWYgKCFpc1RhaWwpIHsKICAgICAgICAgICAgIGF1dG8gYWRkQXJn
dW1lbnQgPSBbJl0gKExWYWx1ZSB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIHJlZywgaW50IG9mZnNl
dCkgewogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9CiAgICAgICAgICAg
ICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3Rl
cnMpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0Fy
Z3VtZW50KG9mZnNldEZyb21TUCkpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAKKwor
ICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19DQUxM
RUUpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOworI2VuZGlmCisgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwg
VmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSkpOworI2lm
IEVOQUJMRShDQUxMRVJfU1BJTExTX0FSR0NPVU5UKQogICAgICAgICAgICAgYWRkQXJndW1lbnQo
bV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpCi0gICAgICAgICAgICAgICAg
YWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCi0gICAg
ICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisjZW5k
aWYKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxICsgaSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYWRkQXJndW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBp
KSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0
ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoaSkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwpAQCAtNTk3Miw2ICs2MDQ0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRzSW5SZWdp
c3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAg
ICAgICAgICAgICAgdG9TYXZlLnNldChjYWxsZWVHUFIpOwogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CkBAIC01OTkwLDcg
KzYwNjMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBt
YWluUGF0aCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAg
ICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisgICAg
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDExLDcgKzYwODgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwg
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6
RGlyZWN0VGFpbENhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBhcmd1
bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVj
dXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3Mp
OwpAQCAtNjAzNCw2ICs2MTExLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7CiAK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOwor
ICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkRpcmVjdENhbGwpOwor
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CkBAIC02MDQ1LDcgKzYxMjUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29u
c3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1QYXNzZWRBcmdzKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4
ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBp
ZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3MpCiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0TWF4TnVtQXJndW1lbnRzKG51bUFsbG9jYXRlZEFyZ3MpOwpAQCAt
NjA1NiwxMyArNjEzNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQucG9wKENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQ
UihjYWxsZWVHUFIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25MaW5rRGlyZWN0Q2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlk
R1BSUmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBp
biBub25BcmdHUFIwCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKEFzc2VtYmx5SGVscGVyczo6Tm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRM
aW5rVGFzaygKQEAgLTYwNzEsNiArNjE0OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIHNsb3dQYXRoTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
RGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKCksCkBAIC02MTAyLDcg
KzYxODMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBh
cmd1bWVudHM7CiAKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpz
Q2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAgICAgICBHUFJSZWcg
Y2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVl
UmVnKSkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kp
IHsKICAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGxldCB0aGUgc2h1ZmZsZXIgZG8gYm94
aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1cGVyIGNsZWFyIHRoYXQgdGhpcwpAQCAtNjEzNiw5
ICs2MjE4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRl
cigmaml0LCBWTTo6VGFpbENhbGwpOworCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEgc2h1ZmZsZURhdGE7CisgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJndW1lbnRz
SW5SZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2Fs
cyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwotICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEdQUkluZm86
OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZVJlZywgRGF0YUZvcm1hdEpTKTsKIAogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3MuYXBwZW5kKHBhcmFtc1sxICsgaV0ucmVj
b3ZlcnlGb3JKU1ZhbHVlKCkpOwpAQCAtNjE0OSw3ICs2MjM1LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0
cldpdGhQYXRjaCgKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
R1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVJlZywgdGFyZ2V0VG9DaGVjaywKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CkBAIC02
MTY3LDIwICs2MjUzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxl
cihqaXQsIHNodWZmbGVEYXRhKTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNl
dENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKIAotICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2Fs
bCgpOwogCiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5G
cm9tVGFpbENhbGwpOwogCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENh
bGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bUFyZ3MpLCBjb2RlT3JpZ2luLCBjYWxsZWVSZWcp
OwogCiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dENhbGxMb2NhdGlvbnMoCkBAIC02MjcwLDYgKzYzNTUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAg
ICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJn
czsKIAogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTY0MTks
NyArNjUwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCF1c2VkUmVnaXN0ZXJzLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFy
Q2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KQpAQCAtNjQyNyw3ICs2NTEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1vcmlnaW5h
bFN0YWNrSGVpZ2h0KSwKQEAgLTY0MzYsNyArNjUyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxsVGh1bmtFbnRy
eVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMo
CkBAIC02NTM3LDExICs2NjIzLDE1IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpG
VExDYWxsZXIpOworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNh
bGxWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAg
ICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudHNMb2NhdGlvbiA9IFN0YWNrQXJnczsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJn
c0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKIAogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKQEAgLTY3MDIsNyArNjc5Miw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY3MTAsNyArNjgwMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBh
cmd1bWVudHNMb2NhdGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWln
aHQpLApAQCAtNjcxOSw3ICs2ODA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY3ODgs
MTMgKzY4NzgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIoJmppdCwgVk06OkNhbGxFdmFsKTsKKwogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBh
dCBlbnRyeTogIiwgdmFsdWVzLCAiXG4iKTsKICAgICAKLSAgICBmb3IgKGludCBhcmd1bWVudCA9
IHZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTsp
IHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAg
IGlmIChhcmd1bWVudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMp
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBKU1ZhbHVlIHZhbHVlT25TdGFj
ayA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgp
KS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHJlY29uc3RydWN0ZWRWYWx1
ZSA9IHZhbHVlcy5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgIGlmICh2YWx1ZU9uU3RhY2sg
PT0gcmVjb25zdHJ1Y3RlZFZhbHVlIHx8ICFhcmd1bWVudCkKQEAgLTk5LDggKzEwMywxMiBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIGV4ZWMtPnNldENvZGVCbG9j
ayhlbnRyeUNvZGVCbG9jayk7Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5h
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdm9p
ZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9yQ2FsbChSZWdpc3RlckFyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQorICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdpbGwgc3VjY2VlZCwgZ29p
bmcgdG8gYWRkcmVzcyIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDE2IEBAIHZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9j
aykKICAgICBtX2Jsb2NrID0gYmxvY2s7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHJlZyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFy
Z3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVnKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVnLCBJbnQzMik7Cit9
CisKIExWYWx1ZSBPdXRwdXQ6OmZyYW1lUG9pbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyMDk2
MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5v
ZGUqIG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7
IHJldHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCisgICAgTFZhbHVlIGFyZ3VtZW50UmVn
aXN0ZXIoUmVnIHJlZyk7CisgICAgTFZhbHVlIGFyZ3VtZW50UmVnaXN0ZXJJbnQzMihSZWcgcmVn
KTsKICAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCk7CiAKICAgICBCMzo6U2xvdEJhc2VWYWx1ZSog
bG9ja2VkU3RhY2tTbG90KHNpemVfdCBieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDk2
MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxNiArMjg0LDI0IEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAgICAgIGJvb2wgZm91bmRGcmFtZSA9IGFk
dmFuY2VJbmRleEluTG9nVG8oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxG
cmFtZS0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgICAgICAgICBib29sIGlzVGFpbERlbGV0ZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChj
b2RlQmxvY2sgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkg
JiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMo
SlNTY29wZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsK
LSAgICAgICAgICAgICAgICBzY29wZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOwotICAgICAg
ICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3Bl
LT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmICghc2NvcGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleEluTG9nXS5zY29wZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnRoaXNWYWx1
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRv
ci0+Y2FsbGVlKCksIGNhbGxGcmFtZSwgaXNUYWlsRGVsZXRlZCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSwgc2NvcGUsIGNvZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAg
ICAgICAgICAgIHRvUHVzaC5hcHBlbmQoRnJhbWUodmlzaXRvci0+Y2FsbGVlKCksIGNhbGxGcmFt
ZSwgaXNUYWlsRGVsZXRlZCwgdGhpc1ZhbHVlLCBzY29wZSwgY29kZUJsb2NrLCBjYWxsRnJhbWUt
PmNhbGxTaXRlSW5kZXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoaW5kZXhJbkxvZyA8IGxvZ0N1
cnNvckluZGV4CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMg
ZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMyArNjE2LDEzIEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRE
dW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsKICAg
ICBhZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRo
dW5rRm9yKCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNs
b3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgbGlua0J1ZmZlci52bSgp
LCBudWxscHRyLCB0cnVlKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29k
ZUxvY2F0aW9uTGFiZWwodmlydHVhbFRodW5rLmNvZGUoKSkpOworICAgICAgICAgICAgSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9y
KCZsaW5rQnVmZmVyLnZtKCksICppbmZvKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIGxpbmtCdWZmZXIu
dm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGws
IENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKSk7CiAg
ICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0MTQsODkgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgZW51bSBTcGlsbFJlZ2lzdGVyVHlwZSB7IFNw
aWxsQWxsLCBTcGlsbEV4YWN0bHkgfTsKKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3BpbGwgPSAwLCBT
cGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1wTGlzdCBkb25l
U3RvcmluZ0FyZ3M7CisKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUp
OworICAgICAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1l
bnRDb3VudCgpOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1
ZShhcmdDb3VudFJlZywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisKKyAgICAgICAg
dW5zaWduZWQgYXJnSW5kZXggPSAwOworICAgICAgICAvLyBBbHdheXMgc3BpbGwgInRoaXMiCisg
ICAgICAgIG1pbmltdW1BcmdzVG9TcGlsbCA9IHN0ZDo6bWF4KG1pbmltdW1BcmdzVG9TcGlsbCwg
MVUpOworCisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IG1pbmltdW1BcmdzVG9TcGlsbCAmJiBh
cmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0lu
ZGV4KyspCisgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xv
Z3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5k
ZXgpOworCisgICAgICAgIGlmIChzcGlsbFR5cGUgPT0gU3BpbGxBbGwpIHsKKyAgICAgICAgICAg
IC8vIFNwaWxsIGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1bmN0aW9uCisgICAgICAgICAgICBmb3Ig
KDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBh
cmdJbmRleCsrKSB7CisgICAgICAgICAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmFwcGVuZChicmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0
QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmxpbmsodGhpcyk7CisjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0obWluaW11bUFyZ3NUb1NwaWxsKTsKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHNwaWxsVHlwZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHNwaWxsQXJndW1lbnRSZWdp
c3RlcnNUb0ZyYW1lKHVuc2lnbmVkIG1pbmltdW1BcmdzVG9TcGlsbCA9IDAsIFNwaWxsUmVnaXN0
ZXJUeXBlIHNwaWxsVHlwZSA9IFNwaWxsQWxsKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVTdG9yaW5nQXJn
czsKKworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJndW1lbnRSZWdpc3RlckZv
ckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgICAgICBHUFJSZWcgYXJnQ291
bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgICAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpOworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAwOworICAgICAg
ICAvLyBBbHdheXMgc3BpbGwgInRoaXMiCisgICAgICAgIG1pbmltdW1BcmdzVG9TcGlsbCA9IHN0
ZDo6bWF4KG1pbmltdW1BcmdzVG9TcGlsbCwgMVUpOworICAgICAgICAKKyAgICAgICAgZm9yICg7
IGFyZ0luZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGVt
aXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3Vt
ZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICAKKyAgICAgICAgaWYgKHNwaWxsVHlw
ZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNzZWQg
dG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgICAg
ICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09y
RXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4
KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lKGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSwgYXJnSW5kZXgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkb25lU3RvcmluZ0FyZ3MubGlu
ayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtQXJnc1RvU3BpbGwp
OworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyNlbmRpZgorICAgIH0KKyAgICAK
KyAgICB2b2lkIGZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCkK
KyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAg
ICAgICBKdW1wTGlzdCBkb25lTG9hZGluZ0FyZ3M7CisKKyAgICAgICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgIGVtaXRHZXRQYXlsb2FkRnJv
bUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQsIGFyZ0NvdW50UmVnKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5k
ZXggPSAwOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgIGlmIChhcmdJbmRleCkgLy8gQWx3YXlzIGxv
YWQgInRoaXMiCisgICAgICAgICAgICAgICAgZG9uZUxvYWRpbmdBcmdzLmFwcGVuZChicmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAgICAgICAgICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZv
ckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICB9CisKICNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoWDg2KQogICAgIHN0YXRpYyBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpCiAgICAgewpAQCAtNjI0LDYgKzcwNywzMSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAq
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkpKTsKICAgICB9CisKKyAgICB2b2lkIGVtaXRQdXRBcmd1bWVudFRvQ2Fs
bEZyYW1lQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAg
IHsKKyAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
KENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkp
KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lKEdQUlJlZyBm
cm9tLCB1bnNpZ25lZCBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihmcm9tLCBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVudCk7Cisg
ICAgfQorCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KGNvbnN0IGludCBlbnRyeSwgR1BSUmVnIHRvKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpLCB0byk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVBy
b2xvZ3VlKHVuc2lnbmVkIGFyZ3VtZW50LCBHUFJSZWcgdG8pCisgICAgeworICAgICAgICBsb2Fk
UHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJn
dW1lbnQgKyBhcmd1bWVudCkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3Rl
cikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSwgdG8pOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGNv
bnN0IGludCBlbnRyeSwgR1BSUmVnIHRvKQorICAgIHsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXpl
b2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCB0byk7CisgICAg
fQogI2Vsc2UKICAgICB2b2lkIGVtaXRQdXRQYXlsb2FkVG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQ
cm9sb2d1ZShHUFJSZWcgZnJvbSwgaW50IGVudHJ5KQogICAgIHsKQEAgLTE2NjAsNyArMTc2OCwx
NCBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIHdhbmdzSW50NjRIYXNo
KEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCi0gICAgCisK
KyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgdm9pZCBpbmNyZW1lbnRDb3VudGVyKFZNOjpW
TUNvdW50ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKHZtKCktPmFkZHJlc3NPZkNvdW50ZXIoY291bnRlclR5
cGUpKSk7CisgICAgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTY2OSw2ICsxNzg0LDEyIEBAIHByb3RlY3RlZDoK
ICAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+
PiBtX2RlY29kZWRDb2RlTWFwczsKIH07CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisjZGVm
aW5lIGluY3JlbWVudENvdW50ZXIoaml0LCBjb3VudGVyVHlwZSkgKGppdCktPmluY3JlbWVudENv
dW50ZXIoY291bnRlclR5cGUpCisjZWxzZQorI2RlZmluZSBpbmNyZW1lbnRDb3VudGVyKGppdCwg
Y291bnRlclR5cGUpICgodm9pZCkwKQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2Fj
aGVkUmVjb3ZlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FjaGVkUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
MjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgQ2FjaGVkUmVjb3Zlcnk6OmFkZFRhcmdl
dEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKQoreworICAgIEFTU0VSVChtX3dh
bnRlZEZQUiA9PSBJbnZhbGlkRlBSUmVnKTsKKyAgICBzaXplX3QgZXhpc3RpbmcgPSBtX2dwclRh
cmdldHMuZmluZChqc1ZhbHVlUmVncyk7CisgICAgaWYgKGV4aXN0aW5nID09IFdURjo6bm90Rm91
bmQpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAobV9ncHJUYXJnZXRzLnNpemUo
KSA+IDAgJiYgbV9yZWNvdmVyeS5pc1NldCgpICYmIG1fcmVjb3ZlcnkuaXNJbkdQUigpKSB7Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcmVjb3ZlcmluZyB0byB0aGUgc2FtZSBHUFIsIG1ha2Ug
dGhhdCBHUFIgdGhlIGZpcnN0IHRhcmdldC4KKyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2VHUFIg
PSBtX3JlY292ZXJ5LmdwcigpOworICAgICAgICAgICAgaWYgKGpzVmFsdWVSZWdzLmdwcigpID09
IHNvdXJjZUdQUikgeworICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgY3VycmVudCBmaXJz
dCBHUFIgYmVsb3cuCisgICAgICAgICAgICAgICAganNWYWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncyht
X2dwclRhcmdldHNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIG1fZ3ByVGFyZ2V0c1swXSA9
IEpTVmFsdWVSZWdzKHNvdXJjZUdQUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICBtX2dwclRhcmdldHMuYXBwZW5kKGpzVmFsdWVSZWdzKTsKKyAgICB9Cit9CisK
IC8vIFdlIHByZWZlciBsb2FkaW5nIGRvdWJsZXMgYW5kIHVuZGV0ZXJtaW5lZCBKU1ZhbHVlcyBp
bnRvIEZQUnMKIC8vIGJlY2F1c2UgaXQgd291bGQgb3RoZXJ3aXNlIHVzZSB1cCBHUFJzLiAgVHdv
IGluIEpTVkFMVUUzMl82NC4KIGJvb2wgQ2FjaGVkUmVjb3Zlcnk6OmxvYWRzSW50b0ZQUigpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5oCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292
ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIENhY2hl
ZFJlY292ZXJ5JiBvcGVyYXRvcj0oQ2FjaGVkUmVjb3ZlcnkmJikgPSBkZWxldGU7CiAKICAgICBj
b25zdCBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiYgdGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJu
IG1fdGFyZ2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxKU1ZhbHVlUmVncywgMT4mIGdwclRhcmdl
dHMoKSBjb25zdCB7IHJldHVybiBtX2dwclRhcmdldHM7IH0KIAogICAgIHZvaWQgYWRkVGFyZ2V0
KFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAgewpAQCAtNjgsMTUgKzY5LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgbV90YXJnZXRzLmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRXYW50ZWRK
U1ZhbHVlUmVncyhKU1ZhbHVlUmVncyBqc1ZhbHVlUmVncykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3dhbnRlZEZQUiA9PSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgbV93YW50ZWRKU1ZhbHVl
UmVncyA9IGpzVmFsdWVSZWdzOwotICAgIH0KKyAgICB2b2lkIGFkZFRhcmdldEpTVmFsdWVSZWdz
KEpTVmFsdWVSZWdzKTsKIAogICAgIHZvaWQgc2V0V2FudGVkRlBSKEZQUlJlZyBmcHIpCiAgICAg
ewotICAgICAgICBBU1NFUlQoIW1fd2FudGVkSlNWYWx1ZVJlZ3MpOworICAgICAgICBBU1NFUlQo
bV9ncHJUYXJnZXRzLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fd2FudGVkRlBSID0gZnByOwogICAg
IH0KIApAQCAtMTE5LDE0ICsxMTYsMjAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSZWNvdmVy
eShWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5KSB7IG1fcmVjb3ZlcnkgPSByZWNvdmVyeTsgfQogCi0g
ICAgSlNWYWx1ZVJlZ3Mgd2FudGVkSlNWYWx1ZVJlZ3MoKSBjb25zdCB7IHJldHVybiBtX3dhbnRl
ZEpTVmFsdWVSZWdzOyB9CisgICAgSlNWYWx1ZVJlZ3Mgd2FudGVkSlNWYWx1ZVJlZ3MoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByVGFyZ2V0cy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZVJlZ3MoKTsKKworICAgICAgICByZXR1cm4gbV9ncHJUYXJnZXRzWzBd
OworICAgIH0KIAogICAgIEZQUlJlZyB3YW50ZWRGUFIoKSBjb25zdCB7IHJldHVybiBtX3dhbnRl
ZEZQUjsgfQogcHJpdmF0ZToKICAgICBWYWx1ZVJlY292ZXJ5IG1fcmVjb3Zlcnk7Ci0gICAgSlNW
YWx1ZVJlZ3MgbV93YW50ZWRKU1ZhbHVlUmVnczsKICAgICBGUFJSZWcgbV93YW50ZWRGUFIgeyBJ
bnZhbGlkRlBSUmVnIH07CiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMT4gbV90YXJnZXRz
OworICAgIFZlY3RvcjxKU1ZhbHVlUmVncywgMT4gbV9ncHJUYXJnZXRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlRGF0YS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgcHVibGljOgogICAgIFZhbHVlUmVjb3ZlcnkgY2FsbGVlOwogICAgIFZlY3RvcjxW
YWx1ZVJlY292ZXJ5PiBhcmdzOwogI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBhcmd1bWVu
dHNJblJlZ2lzdGVycyB7IGZhbHNlIH07CiAgICAgUmVnaXN0ZXJNYXA8VmFsdWVSZWNvdmVyeT4g
cmVnaXN0ZXJzOwogICAgIEdQUlJlZyB0YWdUeXBlTnVtYmVyIHsgSW52YWxpZEdQUlJlZyB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXI2NC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICszMjMsOCBA
QCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjplbWl0RGlzcGxhY2UoQ2FjCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksIHdhbnRlZFJlZy5ncHIo
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKGNhY2hl
ZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksIHdhbnRlZFJlZy5mcHIoKSk7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZGF0YUZvcm1hdCgpID09IERh
dGFGb3JtYXRKUyk7CisgICAgICAgIERhdGFGb3JtYXQgZm9ybWF0ID0gY2FjaGVkUmVjb3Zlcnku
cmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvcm1hdCA9
PSBEYXRhRm9ybWF0SlMgfHwgZm9ybWF0ID09IERhdGFGb3JtYXRDZWxsKTsKICAgICAgICAgdXBk
YXRlUmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnksCiAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5Ojpp
blJlZ2lzdGVyKHdhbnRlZFJlZywgRGF0YUZvcm1hdEpTKSk7CiAgICAgfSBlbHNlIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCBDYWxsRnJhbWVTaHVm
Zmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIoQ0NhCiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50
VG9BbGlnbkZyYW1lKGppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKSkKICAgICAsIG1f
YWxpZ25lZE5ld0ZyYW1lU2l6ZShDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycwogICAg
ICAgICArIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShkYXRhLmFyZ3Muc2l6ZSgpKSkK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICwgbV9hcmd1bWVudHNJblJlZ2lzdGVycyhkYXRhLmFy
Z3VtZW50c0luUmVnaXN0ZXJzKQorI2VuZGlmCiAgICAgLCBtX2ZyYW1lRGVsdGEobV9hbGlnbmVk
TmV3RnJhbWVTaXplIC0gbV9hbGlnbmVkT2xkRnJhbWVTaXplKQogICAgICwgbV9sb2NrZWRSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpKQogewpAQCAtNTQsMTEgKzU3LDIxIEBA
IENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICBtX2xvY2tlZFJl
Z2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAK
ICAgICBBU1NFUlQoIWRhdGEuY2FsbGVlLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5jYWxsZWUudmly
dHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIGRhdGEuY2FsbGVlKTsKLQorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisgICAgICAgIGFkZE5ldyhKU1Zh
bHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBkYXRhLmNhbGxlZSk7CisgICAg
ZWxzZQorI2VuZGlmCisgICAgICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKSwgZGF0YS5jYWxsZWUpOworICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YS5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVCghZGF0YS5hcmdzW2ld
LmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5hcmdzW2ldLnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwo
KSk7Ci0gICAgICAgIGFkZE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgZGF0YS5h
cmdzW2ldKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAoZGF0YS5hcmd1bWVudHNJ
blJlZ2lzdGVycyAmJiBpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UykKKyAgICAgICAgICAgIGFkZE5ldyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudChpKSksIGRhdGEuYXJnc1tpXSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgor
ICAgICAgICAgICAgYWRkTmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBkYXRhLmFy
Z3NbaV0pOwogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xODUsOCArMTk4LDEzIEBA
IHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXAoUHJpbnRTdHJlYW0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5KQorICAgICAg
ICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICAgICAg
ICAgIiwgcmVnLCAiIDwtICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsKKyAgICAg
ICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA+IDEpIHsK
KyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG5ld0NhY2hlZFJlY292ZXJ5
LT5ncHJUYXJnZXRzKCkuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiLCAiLCBuZXdDYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpW2ldLmdwcigpLCAiIDwtICIs
IG5ld0NhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9CkBAIC00OTYsNyArNTE0
LDcgQEAgYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hlZAogICAgIEFTU0VS
VChjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmlzSW5SZWdpc3RlcnMoKQogICAgICAgICB8fCBj
YWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmlzQ29uc3RhbnQoKSk7CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAodmVyYm9zZSAmJiBjYWNoZWRSZWNvdmVyeS50YXJnZXRzKCkuc2l6ZSgpKQog
ICAgICAgICBkYXRhTG9nKCIgICAqIFN0b3JpbmcgIiwgY2FjaGVkUmVjb3ZlcnkucmVjb3Zlcnko
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNoZWRSZWNvdmVyeS50YXJnZXRzKCku
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdldCB7IGNhY2hlZFJl
Y292ZXJ5LnRhcmdldHMoKVtpXSB9OwpAQCAtNTA1LDkgKzUyMyw5IEBAIGJvb2wgQ2FsbEZyYW1l
U2h1ZmZsZXI6OnRyeVdyaXRlcyhDYWNoZWQKICAgICAgICAgICAgIGRhdGFMb2coIWkgPyAiIGlu
dG8gIiA6ICIsIGFuZCAiLCAiTkVXICIsIHRhcmdldCk7CiAgICAgICAgIGVtaXRTdG9yZShjYWNo
ZWRSZWNvdmVyeSwgYWRkcmVzc0Zvck5ldyh0YXJnZXQpKTsKICAgICAgICAgc2V0TmV3KHRhcmdl
dCwgbnVsbHB0cik7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygi
XG4iKTsKICAgICB9Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlxuIik7CiAg
ICAgY2FjaGVkUmVjb3ZlcnkuY2xlYXJUYXJnZXRzKCk7CiAgICAgaWYgKCFjYWNoZWRSZWNvdmVy
eS53YW50ZWRKU1ZhbHVlUmVncygpICYmIGNhY2hlZFJlY292ZXJ5LndhbnRlZEZQUigpID09IElu
dmFsaWRGUFJSZWcpCiAgICAgICAgIGNsZWFyQ2FjaGVkUmVjb3ZlcnkoY2FjaGVkUmVjb3Zlcnku
cmVjb3ZlcnkoKSk7CkBAIC02MDYsNyArNjI0LDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6
cHJlcGFyZUFueSgpCiB7CiAgICAgQVNTRVJUKCFpc1VuZGVjaWRlZCgpKTsKIAotICAgIHVwZGF0
ZURhbmdlckZyb250aWVyKCk7CisgICAgaW5pdERhbmdlckZyb250aWVyKCk7CiAKICAgICAvLyBG
aXJzdCwgd2UgdHJ5IHRvIHN0b3JlIGFueSB2YWx1ZSB0aGF0IGdvZXMgYWJvdmUgdGhlIGRhbmdl
cgogICAgIC8vIGZyb250aWVyLiBUaGlzIHdpbGwgbmV2ZXIgdXNlIG1vcmUgcmVnaXN0ZXJzIHNp
bmNlIHdlIGFyZSBvbmx5CkBAIC03MDIsMTMgKzcyMCw5IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZs
ZXI6OnByZXBhcmVBbnkoKQogICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRlc09LLCB3cml0ZXNP
Syk7CiAgICAgfQogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVy
ICE9IEludmFsaWRHUFJSZWcgJiYgbV9uZXdSZWdpc3RlcnNbbV90YWdUeXBlTnVtYmVyXSkKLSAg
ICAgICAgcmVsZWFzZUdQUihtX3RhZ1R5cGVOdW1iZXIpOwotI2VuZGlmCi0KICAgICAvLyBIYW5k
bGUgMikgYnkgbG9hZGluZyBhbGwgcmVnaXN0ZXJzLiBXZSBkb24ndCBoYXZlIHRvIGRvIGFueQog
ICAgIC8vIHdyaXRlcywgc2luY2UgdGhleSBoYXZlIGJlZW4gdGFrZW4gY2FyZSBvZiBhYm92ZS4K
KyAgICAvLyBOb3RlIHRoYXQgd2UgbmVlZCBtX3RhZ1R5cGVOdW1iZXIgdG8gcmVtYWluIGxvY2tl
ZCB0byBib3ggd2FudGVkIHJlZ2lzdGVycy4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiICBMb2FkaW5nIHdhbnRlZCByZWdpc3RlcnMgaW50byByZWdpc3RlcnNcbiIpOwogICAg
IGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSBy
ZWcubmV4dCgpKSB7CkBAIC03NDIsMTIgKzc1NiwxOSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVy
OjpwcmVwYXJlQW55KCkKIAogICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIDQpIGZpcnN0IGJlY2F1
c2UgaXQgaW1wbGllcyByZWxlYXNpbmcKICAgICAvLyBtX25ld0ZyYW1lQmFzZSwgd2hpY2ggY291
bGQgYmUgYSB3YW50ZWQgcmVnaXN0ZXIuCisgICAgLy8gTm90ZSB0aGF0IHdlIGRlbGF5IHNldHRp
bmcgdGhlIGFyZ3VtZW50IGNvdW50IHJlZ2lzdGVyIGFzIGl0IG5lZWRzIHRvIGJlIHJlbGVhc2Vk
IGluIHN0ZXAgMy4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgKiBTdG9y
aW5nIHRoZSBhcmd1bWVudCBjb3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSwgIlxuIik7Ci0gICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxS
ZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChUYWdP
ZmZzZXQpKTsKLSAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
YXJnQ291bnQoKSksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbV9hcmd1bWVudHNJblJlZ2lzdGVycykgewor
I2VuZGlmCisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MigwKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOworICAgICAg
ICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSks
CisgICAgICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSk7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICB9CisjZW5kaWYKIAogICAgIGlmICghaXNTbG93UGF0aCgpKSB7CiAg
ICAgICAgIEFTU0VSVChtX25ld0ZyYW1lQmFzZSAhPSBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwpAQCAtNzY3LDYgKzc4OCwyMyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVy
OjpwcmVwYXJlQW55KCkKIAogICAgICAgICBlbWl0RGlzcGxhY2UoKmNhY2hlZFJlY292ZXJ5KTsK
ICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIEZvciByZWNvdmVyaWVzIHdpdGgg
bXVsdGlwbGUgcmVnaXN0ZXIgdGFyZ2V0cywgY29weSB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0
IHRhcmdldCB0byB0aGUKKyAgICAvLyByZW1haW5pbmcgdGFyZ2V0cy4KKyAgICBmb3IgKFJlZyBy
ZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkg
eworICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVy
c1tyZWddIH07CisgICAgICAgIGlmICghY2FjaGVkUmVjb3ZlcnkgfHwgY2FjaGVkUmVjb3Zlcnkt
PmdwclRhcmdldHMoKS5zaXplKCkgPCAyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgR1BSUmVnIHNvdXJjZUdQUiA9IGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClbMF0uZ3By
KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgY2FjaGVkUmVjb3ZlcnktPmdwclRh
cmdldHMoKS5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoc291cmNlR1BSLCBj
YWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpW2ldLmdwcigpKTsKKyAgICB9CisKKyAgICBpZiAo
bV9hcmd1bWVudHNJblJlZ2lzdGVycykKKyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGFyZ0NvdW50KCkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRD
b3VudCgpKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgJKHJldmlzaW9uIDIwOTYy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTYsMTcgKzk2LDM3IEBAIHB1YmxpYzoKICAgICAvLyBjb250YWlucyBp
bmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUKICAgICAvLyBhcmd1bWVudHMvY2FsbGVlL2NhbGxl
ZS1zYXZlIHJlZ2lzdGVycyBhcmUgYnkgdGFraW5nIGludG8KICAgICAvLyBhY2NvdW50IGFueSBz
cGlsbGluZyB0aGF0IGFjcXVpcmVHUFIoKSBjb3VsZCBoYXZlIGRvbmUuCi0gICAgQ2FsbEZyYW1l
U2h1ZmZsZURhdGEgc25hcHNob3QoKSBjb25zdAorICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNu
YXBzaG90KEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzVW5kZWNpZGVkKCkpOwogCiAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVEYXRhIGRhdGE7CiAgICAgICAgIGRhdGEubnVtTG9jYWxzID0gbnVtTG9jYWxzKCk7Ci0gICAg
ICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBkYXRh
LmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gYXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOwor
I2VuZGlmCisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAg
ICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgfSktPnJlY292ZXJ5KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
UmVnIHJlZyB7IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSB9OworICAgICAgICAgICAgQ2Fj
aGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAg
ICAgICAgICAgZGF0YS5jYWxsZWUgPSBjYWNoZWRSZWNvdmVyeS0+cmVjb3ZlcnkoKTsKKyAgICAg
ICAgfQogICAgICAgICBkYXRhLmFyZ3MucmVzaXplKGFyZ0NvdW50KCkpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50KCk7ICsraSkKLSAgICAgICAgICAgIGRhdGEuYXJn
c1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQoKTsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzIHx8IGkgPj0gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgICAgICBkYXRh
LmFyZ3NbaV0gPSBnZXROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpLT5yZWNvdmVy
eSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUmVnIHJlZyB7IGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpIH07CisgICAgICAgICAgICAgICAgQ2Fj
aGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAg
ICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmly
c3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CisgICAgICAgICAg
ICBpZiAocmVnLmlzR1BSKCkgJiYgYXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzCisgICAg
ICAgICAgICAgICAgJiYgR1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4KHJlZy5ncHIoKSkgPCBhcmd1
bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJnQ291bnQoKSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNo
ZWRSZWNvdmVyeSB7IG1fbmV3UmVnaXN0ZXJzW3JlZ10gfTsKICAgICAgICAgICAgIGlmICghY2Fj
aGVkUmVjb3ZlcnkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zNzYsNiArMzk2LDkg
QEAgcHJpdmF0ZToKIAogICAgIGludCBtX2FsaWduZWRPbGRGcmFtZVNpemU7CiAgICAgaW50IG1f
YWxpZ25lZE5ld0ZyYW1lU2l6ZTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbV9hcmd1
bWVudHNJblJlZ2lzdGVyczsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBpcyB0aGUgZGlzdGFuY2Us
IGluIHNsb3RzLCBiZXR3ZWVuIHRoZSBiYXNlIG9mIHRoZSBuZXcKICAgICAvLyBmcmFtZSBhbmQg
dGhlIGJhc2Ugb2YgdGhlIG9sZCBmcmFtZS4gSXQgY291bGQgYmUgbmVnYXRpdmUgd2hlbgpAQCAt
NjQxLDkgKzY2NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQoanNWYWx1ZVJlZ3MgJiYg
IWdldE5ldyhqc1ZhbHVlUmVncykpOwogICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVj
b3ZlcnkgPSBhZGRDYWNoZWRSZWNvdmVyeShyZWNvdmVyeSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpKQotICAgICAg
ICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCku
Z3ByKCldID0gbnVsbHB0cjsKLSAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MuZ3By
KCldID0gY2FjaGVkUmVjb3Zlcnk7CisgICAgICAgIGlmIChjYWNoZWRSZWNvdmVyeS0+d2FudGVk
SlNWYWx1ZVJlZ3MoKSkgeworICAgICAgICAgICAgaWYgKHJlY292ZXJ5LmlzSW5HUFIoKSAmJiBq
c1ZhbHVlUmVncy5ncHIoKSA9PSByZWNvdmVyeS5ncHIoKSkgeworICAgICAgICAgICAgICAgIG1f
bmV3UmVnaXN0ZXJzW2NhY2hlZFJlY292ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpLmdwcigpXSA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MuZ3By
KCldID0gY2FjaGVkUmVjb3Zlcnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MuZ3ByKCldID0gY2FjaGVkUmVjb3Zl
cnk7CiAjZWxzZQogICAgICAgICBpZiAoSlNWYWx1ZVJlZ3Mgb2xkUmVncyB7IGNhY2hlZFJlY292
ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpIH0pIHsKICAgICAgICAgICAgIGlmIChvbGRSZWdzLnBh
eWxvYWRHUFIoKSkKQEAgLTY1Niw4ICs2ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoanNW
YWx1ZVJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgICAgIG1fbmV3UmVn
aXN0ZXJzW2pzVmFsdWVSZWdzLnRhZ0dQUigpXSA9IGNhY2hlZFJlY292ZXJ5OwogI2VuZGlmCi0g
ICAgICAgIEFTU0VSVCghY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkpOwotICAg
ICAgICBjYWNoZWRSZWNvdmVyeS0+c2V0V2FudGVkSlNWYWx1ZVJlZ3MoanNWYWx1ZVJlZ3MpOwor
ICAgICAgICBjYWNoZWRSZWNvdmVyeS0+YWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoanNWYWx1ZVJlZ3Mp
OwogICAgIH0KIAogICAgIHZvaWQgYWRkTmV3KEZQUlJlZyBmcHIsIFZhbHVlUmVjb3ZlcnkgcmVj
b3ZlcnkpCkBAIC03NTUsMTMgKzc4MSwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVn
IDw9IGRhbmdlckZyb250aWVyKCk7CiAgICAgfQogCisgICAgdm9pZCBpbml0RGFuZ2VyRnJvbnRp
ZXIoKQorICAgIHsKKyAgICAgICAgZmluZERhbmdlckZyb250aWVyRnJvbShsYXN0TmV3KCkpOwor
ICAgIH0KKwogICAgIHZvaWQgdXBkYXRlRGFuZ2VyRnJvbnRpZXIoKQogICAgIHsKKyAgICAgICAg
ZmluZERhbmdlckZyb250aWVyRnJvbShtX2RhbmdlckZyb250aWVyIC0gMSk7CisgICAgfQorCisg
ICAgdm9pZCBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKFZpcnR1YWxSZWdpc3RlciBuZXh0UmVnKQor
ICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VuZGVjaWRlZCgpKTsKIAogICAgICAgICBtX2Rhbmdl
ckZyb250aWVyID0gZmlyc3ROZXcoKSAtIDE7Ci0gICAgICAgIGZvciAoVmlydHVhbFJlZ2lzdGVy
IHJlZyA9IGxhc3ROZXcoKTsgcmVnID49IGZpcnN0TmV3KCk7IHJlZyAtPSAxKSB7Ci0gICAgICAg
ICAgICBpZiAoIWdldE5ldyhyZWcpIHx8ICFpc1ZhbGlkT2xkKG5ld0FzT2xkKHJlZykpIHx8ICFn
ZXRPbGQobmV3QXNPbGQocmVnKSkpCisgICAgICAgIGZvciAoVmlydHVhbFJlZ2lzdGVyIHJlZyA9
IG5leHRSZWc7IHJlZyA+PSBmaXJzdE5ldygpOyByZWcgLT0gMSkgeworICAgICAgICAgICAgaWYg
KCFpc1ZhbGlkT2xkKG5ld0FzT2xkKHJlZykpIHx8ICFnZXRPbGQobmV3QXNPbGQocmVnKSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIG1fZGFuZ2VyRnJvbnRpZXIg
PSByZWc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gbV9ncHIgPT0gSW52YWxpZEdQUlJlZzsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBtX2dwciAhPSBJbnZhbGlkR1BSUmVnOyB9CiAKLSAgICBi
b29sIG9wZXJhdG9yPT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIHsgcmV0dXJuIG1fZ3ByID09IG90aGVy
Lm1fZ3ByOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gb3RoZXIubV9ncHI7IH0KKyAgICBib29sIG9w
ZXJhdG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAgICAgCiAgICAgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAg
ICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KQEAgLTMz
MSw2ICszMzEsNyBAQCBwcml2YXRlOgogCiAjaWYgQ1BVKFg4NikKICNkZWZpbmUgTlVNQkVSX09G
X0FSR1VNRU5UX1JFR0lTVEVSUyAwdQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNU
RVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtMzUzLDYgKzM1NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAv
LyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0
ZXJzOjplYng7IC8vIHJlZ1QzCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0g
WDg2UmVnaXN0ZXJzOjplc2k7IC8vIHJlZ1Q0CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25B
cmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplZGk7IC8vIHJlZ1Q1CiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8v
IHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSBYODZSZWdpc3RlcnM6OmVjeDsKQEAgLTM3OSw2ICszODEsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50
SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQ
UlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1lbnRSZWdpc3Rlcls4XSA9IHsg
MiwgMCwgMSwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4IH07CisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbcmVn
XTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcp
CiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtMzk5LDkg
KzQwOSwxMSBAQCBwdWJsaWM6CiAjaWYgIU9TKFdJTkRPV1MpCiAjZGVmaW5lIE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMgNnUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgNXUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UyAoTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDJ1KQogI2Vsc2UKICNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA3dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTIDB1CiAjZW5kaWYKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC00NjQsNiArNDc2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVn
aXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
QXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsg
Ly8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVn
aXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEw
OyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTUwOCw2ICs1MjEsMTggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gaW5kZXhGb3JSZWdpc3RlcltyZWddOwogICAgIH0KIAorICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAg
IEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KHJlZykgPCAxNik7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgs
IDMsIDIsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDEsIDAsIDQs
IDUsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3VtZW50UmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5k
ZXgsIDAsIDEsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07
CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdpc3RlcltyZWddOwor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcp
CiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNTM4LDYg
KzU2Myw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk0pCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAw
dQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTYwMSw2ICs2MjcsMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50
SW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQ
UlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7CisgICAg
ICAgIGlmIChyZWcgPiBhcmd1bWVudEdQUjMpCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZElu
ZGV4OworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisgICAgCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTYyMSw2ICs2NTYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUK
KyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAoTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyAtIDJ1KQogLy8gQ2FsbGVlIFNhdmVzIGluY2x1ZGVzIHgx
OS4ueDI4IGFuZCBGUCByZWdpc3RlcnMgcTguLnExNQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyAxOHUKIApAQCAtNjk4LDYgKzczNCw3IEBAIHB1YmxpYzoKICAgICBD
T01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTEzID09IDEzLCBxMTNfaXNfMTMpOwogICAg
IENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTQgPT0gMTQsIHExNF9pc18xNCk7CiAg
ICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExNSA9PSAxNSwgcTE1X2lzXzE1KTsK
KwogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAoR1BSUmVnKWluZGV4OwpAQCAtNzE1LDYgKzc1MiwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB0b1JlZ2lzdGVyKGluZGV4KTsKICAgICB9CiAKKyAgICBzdGF0aWMg
dW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFI3
KQorICAgICAgICAgICAgcmV0dXJuIEludmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNp
Z25lZClyZWc7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTc0Niw2ICs3OTEsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoTUlQUykKICNkZWZpbmUgTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVH
SVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNzczLDYgKzgxOSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IE1JUFNSZWdpc3RlcnM6OmEy
OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gTUlQU1JlZ2lzdGVyczo6
YTM7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDQ7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDU7CiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gcmVnVDE7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKQEAgLTgyNSw2ICs4NzIsNyBAQCBwdWJsaWM6CiAKICNp
ZiBDUFUoU0g0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVm
aW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUg
TlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBA
IC04NTUsNiArOTAzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIyID0gU0g0UmVnaXN0ZXJzOjpyNjsgLy8gcmVnVDIKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IFNINFJlZ2lzdGVyczo6cjc7IC8vIHJlZ1QzCiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25BcmdHUFIxID0gcmVnVDU7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUiA9IHJlZ1QwOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0g
cmVnVDE7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSByZWdUMjsKQEAgLTg5MSw2ICs5NDAsNjEgQEAgcHVibGljOgogCiAjZW5kaWYgLy8gQ1BVKFNI
NCkKIAoraW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9yKHVuc2lnbmVkIGFyZ3VtZW50
SW5kZXgpCit7CisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmIChhcmd1
bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJldHVy
biBJbnZhbGlkR1BSUmVnOworICAgIHJldHVybiBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
YXJndW1lbnRJbmRleCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudEluZGV4KTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJbnZhbGlkR1BS
UmVnOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckNhbGxl
ZSgpCit7CisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIHJldHVybiBhcmd1
bWVudFJlZ2lzdGVyRm9yKDApOworI2Vsc2UKKyAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7Cisj
ZW5kaWYKK30KKworaW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3Vu
dCgpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoMSk7Cit9CisKK2lubGluZSB1
bnNpZ25lZCBhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQodW5zaWdu
ZWQgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50ICsgMjsKK30KKworaW5saW5lIHVu
c2lnbmVkIGpzRnVuY3Rpb25Bcmd1bWVudEZvckFyZ3VtZW50UmVnaXN0ZXIoR1BSUmVnIGdwcikK
K3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID4gMAorICAg
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSBHUFJJbmZvOjp0b0FyZ3VtZW50SW5kZXgoZ3ByKTsK
KyAgICBBU1NFUlQoYXJndW1lbnRJbmRleCAhPSBHUFJJbmZvOjpJbnZhbGlkSW5kZXggJiYgYXJn
dW1lbnRJbmRleCA+PSAyKTsKKyAgICByZXR1cm4gYXJndW1lbnRJbmRleCAtIDI7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShncHIpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworaW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudEluZGV4KQoreworICAgIHJl
dHVybiBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rp
b25Bcmd1bWVudChhcmd1bWVudEluZGV4KSk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBudW1iZXJP
ZlJlZ2lzdGVyQXJndW1lbnRzRm9yKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpCit7CisgICAgcmV0
dXJuIHN0ZDo6bWluKGFyZ3VtZW50Q291bnQsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMpOworfQorCiAvLyBUaGUgYmFzZWxpbmUgSklUIHVzZXMgImFjY3VtdWxhdG9y
IiBzdHlsZSBleGVjdXRpb24gd2l0aCByZWdUMCAoZm9yIDY0LWJpdCkKIC8vIGFuZCByZWdUMCAr
IHJlZ1QxIChmb3IgMzItYml0KSBzZXJ2aW5nIGFzIHRoZSBhY2N1bXVsYXRvciByZWdpc3Rlcihz
KSBmb3IKIC8vIHBhc3NpbmcgcmVzdWx0cyBvZiBvbmUgb3Bjb2RlIHRvIHRoZSBuZXh0LiBIZW5j
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
MTQgKzY2LDYgQEAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQQogICAg
ICAgICBuZXdDYWxsZWVGdW5jdGlvbik7CiB9CiAKLUpJVDo6Q29kZVJlZiBKSVQ6OmNvbXBpbGVD
VElOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKLXsKLSAgICBpZiAoIXZt
LT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgcmV0dXJuIENvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICBKSVQgaml0KHZtLCAwKTsKLSAg
ICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbCh2bSwgZnVuYyk7Ci19Ci0K
IEpJVDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgOiBKU0ludGVyZmFj
ZUpJVCh2bSwgY29kZUJsb2NrKQogICAgICwgbV9pbnRlcnByZXRlcih2bS0+aW50ZXJwcmV0ZXIp
CkBAIC01NzksNiArNTcxLDIwIEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklU
Q29tcGkKICAgICBpZiAobV9yYW5kb21HZW5lcmF0b3IuZ2V0VWludDMyKCkgJiAxKQogICAgICAg
ICBub3AoKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSkpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0Fy
Z3NOb0FyaXR5KTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgSnVtcCBjb250aW51ZVN0
YWNrRW50cnkgPSBqdW1wKCk7CisjZW5kaWYKKyNlbmRpZgorICAgIG1fc3RhY2tBcmdzQXJpdHlP
S0VudHJ5ID0gbGFiZWwoKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0Fy
Z3NOb0FyaXR5KTsKKworI2lmIFVTRShKU1ZBTFVFNjQpICYmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICBjb250aW51ZVN0YWNrRW50cnkubGluayh0aGlzKTsKKyNlbmRpZgorCiAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxv
Y2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAKQEAgLTYzNSw3ICs2NDEsMjEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgIGNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dFcnJvciwgbV9jb2RlQmxvY2spOwogCiAgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgp
ID09IEZ1bmN0aW9uQ29kZSkgewotICAgICAgICBtX2FyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAg
ICAgICBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKworICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpSZWdBcmdzQXJpdHkpOworCisgICAgICAgIHNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICAgICAgSnVtcCBjb250aW51ZVN0YWNrQXJpdHlFbnRyeSA9IGp1bXAo
KTsKKyNlbmRpZgorCisgICAgICAgIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgp
OworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7Cisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250aW51ZVN0YWNrQXJpdHlFbnRyeS5s
aW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMCksICZtX2Nv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQpOwogICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ss
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CkBAIC02NDMsNiArNjYzLDggQEAgdm9pZCBKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgICAgICBsb2FkMzIocGF5bG9hZEZv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDEpOwogICAgICAgICBicmFuY2gz
MihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm1fbnVtUGFy
YW1ldGVycykpLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKIAorICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKHRoaXMsIFZNOjpBcml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgICAgIG1fYnl0ZWNv
ZGVPZmZzZXQgPSAwOwogCiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKQEAgLTc3OCw5ICs4MDAsMTQgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAg
ICB9CiAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGVNYXAoaml0Q29kZU1hcEVuY29kZXIuZmlu
aXNoKCkpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrOwotICAg
IGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0gICAgICAgIHdp
dGhBcml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5QXJpdHlPS1B0ciA9IHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2YobV9zdGFja0FyZ3NBcml0eU9LRW50cnkpOworICAgIAorICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHI7CisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAgICBpZiAobV9j
b2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CisgICAgICAgIHJlZ2lzdGVy
RW50cnlXaXRoQXJpdHlDaGVja1B0ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9yZWdpc3Rl
ckFyZ3NXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHN0YWNrRW50cnlXaXRoQXJpdHlDaGVja1B0
ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjayk7Cisg
ICAgfQogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyLT5kdW1wKHBhdGNoQnVmZmVyKTsKQEAgLTc5OCwxNCArODI1LDI2IEBAIENv
bXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgQ29kZVJlZiByZXN1bHQgPSBGSU5BTEla
RV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwKICAgICAgICAgKCJCYXNlbGluZSBKSVQgY29k
ZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJ
VENvZGU6OkJhc2VsaW5lSklUKSkuZGF0YSgpKSk7Ci0gICAgCisKICAgICBtX3ZtLT5tYWNoaW5l
Q29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQtPmFkZCgKICAgICAgICAgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQuc2l6ZSgpKSAvCiAgICAgICAgIHN0YXRpY19jYXN0PGRv
dWJsZT4obV9pbnN0cnVjdGlvbnMuc2l6ZSgpKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5r
VG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKKyAgICBKSVRFbnRyeVBvaW50cyBlbnRyeXBv
aW50cyhyZXN1bHQuY29kZSgpLCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHJlZ2lz
dGVyRW50cnlXaXRoQXJpdHlDaGVja1B0ciwgc3RhY2tFbnRyeUFyaXR5T0tQdHIsIHN0YWNrRW50
cnlXaXRoQXJpdHlDaGVja1B0cik7CisKKyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgIGZv
ciAodW5zaWduZWQgYXJnQ291bnQgPSAxOyBhcmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdDb3VudCsrKSB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBlbnRyeTsKKyAgICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMp
CisgICAgICAgICAgICBlbnRyeSA9IHJlc3VsdC5jb2RlKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGVudHJ5ID0gcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyOworICAgICAgICBl
bnRyeXBvaW50cy5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVG
b3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgIH0KKwogICAgIG1fY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShyZXN1
bHQsIHdpdGhBcml0eUNoZWNrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpKTsKKyAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoSklURW50cnlQb2ludHNXaXRoUmVmKHJlc3VsdCwgZW50
cnlwb2ludHMpLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpKTsKIAogI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRSkKICAgICBkYXRhTG9nRigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVw
KS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCBy
ZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgogI2luY2x1ZGUgIkpTSW50
ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiVW51c2VkUG9pbnRlci5oIgogCkBAIC0y
NDYsNyArMjQ3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaml0LnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgYXJyYXlN
b2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb2RlUmVmIGNvbXBpbGVDVElOYXRp
dmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBzdGF0aWMgSklURW50cnlQb2lu
dHNXaXRoUmVmIGNvbXBpbGVOYXRpdmVDYWxsRW50cnlQb2ludHMoVk0qIHZtLCBOYXRpdmVGdW5j
dGlvbiBmdW5jKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXZtLT5jYW5Vc2VKSVQoKSkg
eworICAgICAgICAgICAgICAgIENvZGVSZWYgbmF0aXZlQ2FsbFJlZiA9IENvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKG5hdGl2ZUNhbGxSZWYsIG5hdGl2ZUNh
bGxSZWYuY29kZSgpLCBuYXRpdmVDYWxsUmVmLmNvZGUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBKSVQgaml0KHZtLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBqaXQucHJpdmF0ZUNv
bXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwodm0sIGZ1bmMpOworICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqKTsKICAgICAg
ICAgc3RhdGljIGludCBzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKik7CkBAIC0yNjYs
OCArMjc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRBcnJh
eU1vZGUpOwogCi0gICAgICAgIExhYmVsIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSos
IGJvb2wgaXNDb25zdHJ1Y3QgPSBmYWxzZSk7Ci0gICAgICAgIENvZGVSZWYgcHJpdmF0ZUNvbXBp
bGVDVElOYXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBKSVRFbnRyeVBv
aW50c1dpdGhSZWYgcHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwoVk0qLCBOYXRpdmVG
dW5jdGlvbik7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3Ro
KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CiAKICAgICAgICAgLy8gQWRkIGEgY2Fs
bCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0aG91dCBhbiBleGNlcHRpb24gY2hlY2suCkBAIC05NDks
OCArOTU3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJ
bmRleDsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXg7CiAgICAgICAg
IHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXg7Ci0gICAgICAgIAotICAgICAgICBMYWJlbCBt
X2FyaXR5Q2hlY2s7CisKKyAgICAgICAgTGFiZWwgbV9zdGFja0FyZ3NBcml0eU9LRW50cnk7Cisg
ICAgICAgIExhYmVsIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2s7CisgICAgICAgIExhYmVsIG1f
cmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
QnVmZmVyPiBtX2xpbmtCdWZmZXI7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVERpc2Fz
c2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6
Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5m
byA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwo
Q2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7
CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CiAKQEAgLTIxMSwxMiArMjExLDEyIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93
Q2FzZShJbnN0cnUKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBz
aXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihp
bmZvKSwgcmVnVDIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihpbmZvKSwgbm9uQXJnR1BSMCk7
CiAKICAgICBlbWl0TG9hZChDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvciht
X3ZtLCAqaW5mbyk7Ci0gICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUo
dmlydHVhbFRodW5rLCAqbV92bSwgbnVsbHB0ciwgdHJ1ZSkpOwotICAgIGVtaXROYWtlZENhbGwo
dmlydHVhbFRodW5rLmNvZGUoKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhS
ZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKG1fdm0sICppbmZvKTsKKyAgICBpbmZv
LT5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29kZVJlZigp
LCAqbV92bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGVtaXROYWtlZENhbGwodmlydHVhbFRodW5r
LmVudHJ5Rm9yKFN0YWNrQXJncykpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2lu
dGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVS
ZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxp
Z25tZW50KCk7CiAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChP
cGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJU
KG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAg
IGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgU3RhY2tBcmdzLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChDYWxsQ29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tj
YWxsTGlua0luZm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjazsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxM
aW5rSW5mbyA9IGluZm87CkBAIC0zMTcsMTIgKzMxNywxMyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
Q2FsbFNsb3dDYXNlKE9wY29kZUlECiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyksIHJlZ1QyKTsKKyAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLCBub25BcmdHUFIwKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwg
b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2Fs
bGVlU2F2ZXMoKTsKIAotICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRl
eF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxp
bmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZv
W2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1f
dm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRy
eUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpKTsKIAogICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mp
IHsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkxLDYgKzkxLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShPcGNv
ZAogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QxLCBz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QmFz
ZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkNhbGxWYXJhcmdz
KTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCkBAIC05OCw2ICsxMDAsOSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0
aW9uKiBpCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlZ1QxKTsK
ICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgQWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1l
OjpjYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZN
OjpCYXNlbGluZUNhbGxlcik7CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6Q2FsbEV2
YWwpOworCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9j
b2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIApAQCAt
MTEzLDcgKzExOCw3IEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGkK
IHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGluZm8t
PnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFj
a0FyZ3MsIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKIAogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtaW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kOwpAQCAtMTU0LDEyICsxNTksMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSQogICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2Fs
bCkgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpLCBjYWxs
X2FuZF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfb3Bjb2Rlc19tdXN0X2JlX3NhbWVfbGVu
Z3RoKTsKIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG51bGxwdHI7CisgICAgQXJndW1lbnRz
TG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CisKICAgICBpZiAob3Bjb2Rl
SUQgIT0gb3BfY2FsbF9ldmFsKQogICAgICAgICBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2Rl
SUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3Zh
cmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAg
ICAgICBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUob3Bjb2RlSUQsIGluc3RydWN0aW9uLCBpbmZv
KTsKICAgICBlbHNlIHsKLSAgICAgICAgaW50IGFyZ0NvdW50ID0gaW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOworICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUudW5z
aWduZWRWYWx1ZTsKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRd
LnUub3BlcmFuZDsKIAogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKQEAgLTE3MSwxNSArMTc4LDI1IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgfQogICAgIAogICAgICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MpIHsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFy
Z3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFyZ3MgPSBzdGQ6
Om1pbihhcmdDb3VudCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZyA9IDA7IGFyZyA8IHJlZ2lzdGVyQXJnczsg
YXJnKyspCisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmcpICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZykpOworICAgICAgICB9CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7
CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KKworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKICAgICAKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChieXRlY29kZU9m
ZnNldCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFk
ZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CiAKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxs
ZWUuCi0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIEdQUlJlZyBjYWxsZWVSZWdpc3RlciA9
IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoY2FsbGVlLCBjYWxsZWVSZWdpc3Rlcik7CisgICAgc3RvcmU2NChjYWxsZWVSZWdpc3Rlciwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMTg3LDE2ICsyMDQsMTggQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIH0KIAogICAgIERhdGFMYWJlbFB0
ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwotICAgIEp1bXAgc2xvd0Nhc2UgPSBicmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNo
ZWNrLCBUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0
aFBhdGNoKE5vdEVxdWFsLCBjYWxsZWVSZWdpc3RlciwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAg
ICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5k
ZXgpOwotICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29k
ZUlEKSwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNl
dFVwQ2FsbChDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKSwgYXJndW1lbnRzTG9j
YXRpb24sIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIGNhbGxlZVJlZ2lzdGVyKTsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKENhbGxDb21waWxhdGlvbkluZm8oKSk7CiAg
ICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4g
PSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5m
b1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAogICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6VGFpbENhbGwpOworCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRh
OwogICAgICAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyOwogICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQpAQCAtMjA5LDcg
KzIyOCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAg
ICAgICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgfQogICAgICAgICBzaHVmZmxl
RGF0YS5jYWxsZWUgPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIocmVnVDAsIERh
dGFGb3JtYXRKUyk7CisgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVSZWdp
c3RlciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZl
UmVnaXN0ZXJzKG1fY29kZUJsb2NrKTsKICAgICAgICAgaW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0
YShzaHVmZmxlRGF0YSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxl
RGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CkBAIC0yNDYsOSArMjY1LDEwIEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlcygpOwogCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9u
SW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvKSwgcmVnVDIpOworICAgIENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5m
b0luZGV4XS5jYWxsTGlua0luZm87CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5m
byksIG5vbkFyZ0dQUjApOwogCi0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5m
b0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0
dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENh
bGwobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
LmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSkpOwogCiAgICAgaWYg
KG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxs
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQ
cm90b0NhCiAKICAgICBpZiAoIWZ1bmN0aW9uIHx8ICFwcm90b0NhbGxGcmFtZS0+bmVlZEFyaXR5
Q2hlY2soKSkgewogICAgICAgICBBU1NFUlQoIXByb3RvQ2FsbEZyYW1lLT5uZWVkQXJpdHlDaGVj
aygpKTsKLSAgICAgICAgZW50cnlBZGRyZXNzID0gZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAgICBlbnRyeUFk
ZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVzdENo
ZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1Zh
bHVlOjpkZWNvZGUodm1FbnRyeVRvSmF2YVNjcmlwdChlbnRyeUFkZHJlc3MsIHZtLCBwcm90b0Nh
bGxGcmFtZSkpOwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVz
dWx0OwogfQpAQCAtMTYyLDkgKzE2Miw5IEBAIERpcmVjdEpJVENvZGU6OkRpcmVjdEpJVENvZGUo
SklUVHlwZSBqaXQKIHsKIH0KIAotRGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRDb2Rl
OjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3aXRoQXJpdHlDaGVjaywgSklUVHlwZSBq
aXRUeXBlKQotICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKHJlZiwgaml0VHlwZSkKLSAgICAsIG1f
d2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCitEaXJlY3RKSVRDb2RlOjpEaXJlY3RKSVRD
b2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzLCBKSVRUeXBlIGppdFR5cGUpCisgICAg
OiBKSVRDb2RlV2l0aENvZGVSZWYoZW50cmllcy5jb2RlUmVmKCksIGppdFR5cGUpCisgICAgLCBt
X2VudHJ5UG9pbnRzKGVudHJpZXMpCiB7CiB9CiAKQEAgLTE3MiwyNSArMTcyLDE2IEBAIERpcmVj
dEpJVENvZGU6On5EaXJlY3RKSVRDb2RlKCkKIHsKIH0KIAotdm9pZCBEaXJlY3RKSVRDb2RlOjpp
bml0aWFsaXplQ29kZVJlZihKSVRDb2RlOjpDb2RlUmVmIHJlZiwgSklUQ29kZTo6Q29kZVB0ciB3
aXRoQXJpdHlDaGVjaykKK3ZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5UG9pbnRz
KEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBlbnRyaWVzKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3JlZik7Ci0gICAgbV9yZWYgPSByZWY7Ci0gICAgbV93aXRoQXJpdHlDaGVjayA9IHdpdGhBcml0
eUNoZWNrOworICAgIG1fcmVmID0gZW50cmllcy5jb2RlUmVmKCk7CisgICAgbV9lbnRyeVBvaW50
cyA9IGVudHJpZXM7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgRGlyZWN0SklUQ29kZTo6YWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHkpCitKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJ
VENvZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNo
IChhcml0eSkgewotICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3JlZik7Ci0gICAgICAgIHJldHVybiBtX3JlZi5jb2RlKCk7Ci0gICAgY2Fz
ZSBNdXN0Q2hlY2tBcml0eToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV93aXRoQXJpdHlDaGVj
ayk7Ci0gICAgICAgIHJldHVybiBtX3dpdGhBcml0eUNoZWNrOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDb2RlUHRyKCk7CisgICAgcmV0dXJu
IG1fZW50cnlQb2ludHMuZW50cnlGb3IodHlwZSk7CiB9CiAKIE5hdGl2ZUpJVENvZGU6Ok5hdGl2
ZUpJVENvZGUoSklUVHlwZSBqaXRUeXBlKQpAQCAtMjEzLDcgKzIwNCw3IEBAIHZvaWQgTmF0aXZl
SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsKIH0KIAotSklU
Q29kZTo6Q29kZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9k
ZSkKK0pJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoRW50cnlQ
b2ludFR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAgcmV0dXJuIG1f
cmVmLmNvZGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
QXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiSklURW50cnlQ
b2ludHMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKQEAgLTE3Myw5ICsxNzMsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAgICAgfQogICAg
IAotICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgPSAw
OworICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zm
c2V0KSA9IDA7Ci0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVybiBleGVjdXRh
YmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhQWRkcmVzc0F0
T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG9mZnNldE9m
KHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgPSAwOwogICAgIApAQCAtMjI0LDE1ICsyMjMsMTUgQEAg
cHJvdGVjdGVkOgogY2xhc3MgRGlyZWN0SklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVS
ZWYgewogcHVibGljOgogICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7Ci0gICAgRGlyZWN0SklU
Q29kZShDb2RlUmVmLCBDb2RlUHRyIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlKTsKKyAgICBEaXJl
Y3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRzV2l0aFJlZiwgSklUVHlwZSk7CiAgICAgdmlydHVhbCB+
RGlyZWN0SklUQ29kZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJl
ZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlQb2lu
dHMoSklURW50cnlQb2ludHNXaXRoUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50
cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIENvZGVQdHIgbV93aXRoQXJp
dHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5UG9pbnRzOwogfTsKIAogY2xhc3Mg
TmF0aXZlSklUQ29kZSA6IHB1YmxpYyBKSVRDb2RlV2l0aENvZGVSZWYgewpAQCAtMjQzLDcgKzI0
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYp
OwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7
CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURW50cnlQb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEVudHJ5UG9pbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFbnRyeVBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK2Ns
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworZW51bSBBcmd1bWVudHNMb2NhdGlvbiA6IHVu
c2lnbmVkIHsKKyAgICBTdGFja0FyZ3MgPSAwLAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycywKKyAg
ICBSZWdpc3RlckFyZ3MySW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzM0luUmVnaXN0ZXJz
LAorICAgIFJlZ2lzdGVyQXJnczRJblJlZ2lzdGVycywKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAgICBSZWdpc3RlckFyZ3M1SW5SZWdpc3RlcnMs
CisgICAgUmVnaXN0ZXJBcmdzNkluUmVnaXN0ZXJzLAorI2VuZGlmCisgICAgUmVnaXN0ZXJBcmdz
V2l0aEV4dHJhT25TdGFjaworI2VuZGlmCit9OworCisvLyBUaGlzIGVudW0gbmVlZHMgdG8gaGF2
ZSB0aGUgc2FtZSBlbnVtZXJhdG9yIG9yZGVyaW5nIGFzIEFyZ3VtZW50c0xvY2F0aW9uLgorZW51
bSBUaHVua0VudHJ5UG9pbnRUeXBlIDogdW5zaWduZWQgeworICAgIFN0YWNrQXJnc0VudHJ5ID0g
MCwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAg
ICBSZWdpc3RlcjFBcmdFbnRyeSwKKyAgICBSZWdpc3RlcjJBcmdzRW50cnksCisgICAgUmVnaXN0
ZXIzQXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyNEFyZ3NFbnRyeSwKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID09IDYKKyAgICBSZWdpc3RlcjVBcmdzRW50cnks
CisgICAgUmVnaXN0ZXI2QXJnc0VudHJ5LAorI2VuZGlmCisjZW5kaWYKKyAgICBUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnQKK307CisKK2VudW0gRW50cnlQb2ludFR5cGUgeworICAgIFN0YWNrQXJn
c0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgUmVnaXN0ZXJB
cmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLAorICAgIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFB
cmdzLAorICAgIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5LAorI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIFJlZ2lzdGVyQXJnczEsCisgICAg
UmVnaXN0ZXJBcmdzMiwKKyAgICBSZWdpc3RlckFyZ3MzLAorICAgIFJlZ2lzdGVyQXJnczQsCisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAgUmVn
aXN0ZXJBcmdzNSwKKyAgICBSZWdpc3RlckFyZ3M2LAorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgor
ICAgIE51bWJlck9mRW50cnlQb2ludFR5cGVzCit9OworCitjbGFzcyBKSVRFbnRyeVBvaW50cyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZFbnRyeVR5cGVzID0gRW50cnlQb2ludFR5
cGU6Ok51bWJlck9mRW50cnlQb2ludFR5cGVzOworCisgICAgSklURW50cnlQb2ludHMoKQorICAg
IHsKKyAgICAgICAgY2xlYXJFbnRyaWVzKCk7CisgICAgfQorCisgICAgSklURW50cnlQb2ludHMo
Q29kZVB0ciByZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRFbnRyeSwgQ29kZVB0ciByZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5LAorICAgICAgICBDb2RlUHRyIHJlZ2lzdGVyQXJn
c0NoZWNrQXJpdHlFbnRyeSwgQ29kZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRF
bnRyeSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgewor
ICAgICAgICBtX2VudHJ5UG9pbnRzW1N0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZF0gPSBz
dGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50
c1tTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eV0gPSBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnk7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBtX2Vu
dHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZF0gPSByZWdpc3RlckFy
Z3NOb0NoZWNrUmVxdWlyZWRFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFy
Z3NQb3NzaWJsZUV4dHJhQXJnc10gPSByZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5
OworICAgICAgICBtX2VudHJ5UG9pbnRzW1JlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5XSA9IHJl
Z2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBpICsrKQorICAg
ICAgICAgICAgbV9lbnRyeVBvaW50c1tyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQo
aSldID0gcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5OworI2Vsc2UKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHJlZ2lzdGVyQXJnc05vQ2hlY2tSZXF1aXJlZEVudHJ5KTsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnkpOworICAgICAgICBVTlVT
RURfUEFSQU0ocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KTsKKyNlbmRpZgorCisgICAgfQor
CisgICAgQ29kZVB0ciBlbnRyeUZvcihFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZW50cnlQb2ludHNbdHlwZV07CisgICAgfQorCisgICAgdm9pZCBzZXRFbnRy
eUZvcihFbnRyeVBvaW50VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHR5cGUgPCBOdW1iZXJPZkVudHJ5UG9pbnRUeXBlcyk7CisgICAgICAgIG1fZW50cnlQ
b2ludHNbdHlwZV0gPSBlbnRyeTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBv
ZmZzZXRvZihKSVRFbnRyeVBvaW50cywgbV9lbnRyeVBvaW50c1t0eXBlXSk7CisgICAgfQorCisg
ICAgc3RhdGljIEVudHJ5UG9pbnRUeXBlIHJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3Vu
dCh1bnNpZ25lZCBhcmdDb3VudCkKKyAgICB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUworICAgICAgICBBU1NFUlQoYXJnQ291bnQpOworICAgICAgICB1bnNp
Z25lZCByZWdpc3RlckFyZ0NvdW50ID0gbnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0ZvcihhcmdD
b3VudCk7CisgICAgICAgIGlmICghcmVnaXN0ZXJBcmdDb3VudCB8fCByZWdpc3RlckFyZ0NvdW50
ICE9IGFyZ0NvdW50KQorICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0Fy
aXR5OworCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oUmVnaXN0
ZXJBcmdzMSArIHJlZ2lzdGVyQXJnQ291bnQgLSAxKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTShhcmdDb3VudCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIHN0YXRpYyBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50VHlw
ZShBcmd1bWVudHNMb2NhdGlvbiB0eXBlKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIEFTU0VSVCh0eXBlICE9IFN0YWNrQXJncyk7
CisgICAgICAgIGlmICh0eXBlID09IFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2spCisgICAg
ICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50cnlQb2ludFR5cGU+KFJlZ2lzdGVyQXJnczEgKyB0
eXBlIC0gUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTSh0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2VuZGlmCisgICAgfQorCisgICAg
dm9pZCBjbGVhckVudHJpZXMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVt
YmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzJiBvcGVy
YXRvcj0oY29uc3QgSklURW50cnlQb2ludHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRy
eVBvaW50c1tpXSA9IG90aGVyLm1fZW50cnlQb2ludHNbaV07CisKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworcHJpdmF0ZToKKworICAgIENvZGVQdHIgbV9lbnRyeVBvaW50c1tudW1i
ZXJPZkVudHJ5VHlwZXNdOworfTsKKworY2xhc3MgSklURW50cnlQb2ludHNXaXRoUmVmIDogcHVi
bGljIEpJVEVudHJ5UG9pbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBDb2RlUmVmOworCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKCkKKyAgICB7Cisg
ICAgfQorCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKGNvbnN0IEpJVEVudHJ5UG9pbnRzV2l0
aFJlZiYgb3RoZXIpCisgICAgICAgIDogSklURW50cnlQb2ludHMob3RoZXIpCisgICAgICAgICwg
bV9jb2RlUmVmKG90aGVyLm1fY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZiwgY29uc3QgSklURW50cnlQb2ludHMmIG90aGVy
KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihj
b2RlUmVmKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSklURW50cnlQb2ludHNXaXRoUmVmKENv
ZGVSZWYgY29kZVJlZiwgQ29kZVB0ciBzdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWRFbnRy
eSwKKyAgICAgICAgQ29kZVB0ciBzdGFja0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgIDog
SklURW50cnlQb2ludHMoQ29kZVB0cigpLCBDb2RlUHRyKCksIENvZGVQdHIoKSwgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAg
ICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZiwgQ29kZVB0ciByZWdpc3RlckFyZ3NOb0NoZWNr
c1JlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRy
YUFyZ3NFbnRyeSwgQ29kZVB0ciByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksCisgICAgICAg
IENvZGVQdHIgc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksIENvZGVQdHIgc3Rh
Y2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKHJlZ2lzdGVy
QXJnc05vQ2hlY2tzUmVxdWlyZWRFbnRyeSwgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NF
bnRyeSwKKyAgICAgICAgICAgIHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSwgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgICAgICBzdGFja0FyZ3NDaGVja0Fy
aXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKwor
ICAgIENvZGVSZWYgY29kZVJlZigpIHsgcmV0dXJuIG1fY29kZVJlZjsgfQorCitwcml2YXRlOgor
ICAgIENvZGVSZWYgbV9jb2RlUmVmOworfTsKKworaW5saW5lIEFyZ3VtZW50c0xvY2F0aW9uIGFy
Z3VtZW50c0xvY2F0aW9uRm9yKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGlmICghYXJndW1lbnRDb3Vu
dCkKKyAgICAgICAgcmV0dXJuIFN0YWNrQXJnczsKKyAgICAKKyAgICBhcmd1bWVudENvdW50ID0g
c3RkOjptaW4oTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDEsIGFy
Z3VtZW50Q291bnQpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcmd1bWVudHNMb2Nh
dGlvbj4oQXJndW1lbnRzTG9jYXRpb246OlJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyArIGFyZ3Vt
ZW50Q291bnQgLSAxKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOwor
ICAgIHJldHVybiBTdGFja0FyZ3M7CisjZW5kaWYKK30KKworaW5saW5lIEVudHJ5UG9pbnRUeXBl
IHJlZ2lzdGVyRW50cnlQb2ludFR5cGVGb3IodW5zaWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKCFhcmd1
bWVudENvdW50IHx8IGFyZ3VtZW50Q291bnQgPiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTKQorICAgICAgICByZXR1cm4gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBlPihFbnRyeVBvaW50
VHlwZTo6UmVnaXN0ZXJBcmdzMSArIGFyZ3VtZW50Q291bnQgLSAxKTsKKyNlbHNlCisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRDb3Vu
dCk7CisgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2VuZGlmCit9CisKK2lu
bGluZSBFbnRyeVBvaW50VHlwZSBlbnRyeVBvaW50VHlwZUZvcihBcmd1bWVudHNMb2NhdGlvbiBh
cmd1bWVudExvY2F0aW9uKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICBpZiAoYXJndW1lbnRMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAg
IHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAKKyAgICBpZiAoYXJndW1lbnRM
b2NhdGlvbiA9PSBSZWdpc3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrKQorICAgICAgICByZXR1cm4g
UmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVudHJ5UG9pbnRUeXBlPihFbnRyeVBvaW50VHlwZTo6UmVnaXN0ZXJBcmdzMSArIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihhcmd1bWVudExvY2F0aW9uIC0gUmVnaXN0ZXJBcmdzMUluUmVnaXN0ZXJz
KSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudExvY2F0aW9uKTsKKyAgICByZXR1
cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CisjZW5kaWYKK30KKworaW5saW5lIFRodW5rRW50
cnlQb2ludFR5cGUgdGh1bmtFbnRyeVBvaW50VHlwZUZvcihBcmd1bWVudHNMb2NhdGlvbiBhcmd1
bWVudExvY2F0aW9uKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMKKyAgICB1bnNpZ25lZCBhcmd1bWVudExvY2F0aW9uSW5kZXggPSBzdGQ6Om1pbihSZWdp
c3RlckFyZ3NXaXRoRXh0cmFPblN0YWNrIC0gMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3Vt
ZW50TG9jYXRpb24pKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlw
ZT4oYXJndW1lbnRMb2NhdGlvbkluZGV4KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3Vt
ZW50TG9jYXRpb24pOworICAgIHJldHVybiBTdGFja0FyZ3NFbnRyeTsKKyNlbmRpZgorfQorCitp
bmxpbmUgVGh1bmtFbnRyeVBvaW50VHlwZSB0aHVua0VudHJ5UG9pbnRUeXBlRm9yKHVuc2lnbmVk
IGFyZ3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIGFyZ3VtZW50Q291bnQgPSBudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9y
KGFyZ3VtZW50Q291bnQpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHVua0VudHJ5
UG9pbnRUeXBlPihUaHVua0VudHJ5UG9pbnRUeXBlOjpSZWdpc3RlcjFBcmdFbnRyeSArIGFyZ3Vt
ZW50Q291bnQgLSAxKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOwor
ICAgIHJldHVybiBTdGFja0FyZ3NFbnRyeTsKKyNlbmRpZgorfQorCitjbGFzcyBKSVRKU0NhbGxU
aHVua0VudHJ5UG9pbnRzV2l0aFJlZiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgQ29kZVB0cjsKKyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBD
b2RlUmVmOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkVudHJ5VHlwZXMgPSBU
aHVua0VudHJ5UG9pbnRUeXBlOjpUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7CisKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKENvZGVSZWYgY29kZVJlZikKKyAgICAgICAgOiBt
X2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYoY29uc3QgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYmIG90
aGVyKQorICAgICAgICA6IG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAgeworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFbnRyeVR5cGVzOyBpKyspCisgICAg
ICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50c1tpXTsKKyAgICB9
CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2VudHJ5UG9pbnRzW3R5cGVdOworICAgIH0KKworICAgIENvZGVQ
dHIgZW50cnlGb3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24pCisgICAgewor
ICAgICAgICByZXR1cm4gZW50cnlGb3IodGh1bmtFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudHNM
b2NhdGlvbikpOworICAgIH0KKworICAgIHZvaWQgc2V0RW50cnlGb3IoVGh1bmtFbnRyeVBvaW50
VHlwZSB0eXBlLCBDb2RlUHRyIGVudHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1t0
eXBlXSA9IGVudHJ5OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRy
eUZvcihUaHVua0VudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zm
c2V0b2YoSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYsIG1fZW50cnlQb2ludHNbdHlw
ZV0pOworICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisKKyAgICBD
b2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBtX2NvZGVSZWY7IH0KKworICAgIEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmJiBvcGVyYXRvcj0oY29uc3QgSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9jb2RlUmVmID0gb3RoZXIu
bV9jb2RlUmVmOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7
IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gb3RoZXIubV9lbnRyeVBvaW50
c1tpXTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ29kZVJlZiBtX2NvZGVSZWY7CisgICAgQ29kZVB0ciBtX2VudHJ5UG9pbnRzW251bWJl
ck9mRW50cnlUeXBlc107Cit9OworCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElO
YXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBKSVQ6OnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZl
RnVuY3Rpb24gZnVuYykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYWJsZSB0byBs
b2cgU2hhZG93Q2hpY2tlbiBwcm9sb2d1ZSBwYWNrZXRzLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU2ODkKQEAgLTEyOSw3ICsxMjksOSBAQCBKSVQ6
OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcigqbV92bSwgKnRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG5hdGl2ZUNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmMpKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG5hdGl2ZSBjYWxsIikpOworICAgIEpJVDo6
Q29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG5h
dGl2ZSBjYWxsIikpOworICAgIAorICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29k
ZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCi1K
SVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbikKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVQ6OnByaXZhdGVDb21waWxlSklU
RW50cnlOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHZt
LT5nZXRDVElTdHViKG5hdGl2ZUNhbGxHZW5lcmF0b3IpOworICAgIHJldHVybiB2bS0+Z2V0SklU
RW50cnlTdHViKG5hdGl2ZUNhbGxHZW5lcmF0b3IpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9t
b3YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODkwLDEwICs4OTAsMTQgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOwogICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CiAKLSAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0ciwgY29kZVB0ckZvckxpbmtpbmc7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNv
ZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsK
KyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMo
KSkKKyAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcihraW5kLCBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSk7CisjZW5kaWYKICAgICB9IGVs
c2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC05MTQsMTcg
KzkxOCw0MSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7Ci0gICAgICAgIEFyaXR5
Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBhcml0eSA9
IE11c3RDaGVja0FyaXR5OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0eSA9IEFyaXR5
Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5
VHlwZTsKKyAgICAgICAgc2l6ZV90IGNhbGxlckFyZ3VtZW50Q291bnQgPSBleGVjQ2FsbGVlLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgICAgICBzaXplX3QgY2FsbGVlQXJndW1l
bnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
OworICAgICAgICBpZiAoY2FsbGVyQXJndW1lbnRDb3VudCA8IGNhbGxlZUFyZ3VtZW50Q291bnQg
fHwgY2FsbExpbmtJbmZvLT5pc1ZhcmFyZ3MoKSkgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBKSVRFbnRyeVBvaW50czo6
cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxlckFyZ3VtZW50Q291bnQpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvZGVQdHJGb3JMaW5raW5nKQorICAgICAgICAgICAgICAg
ICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZv
cihraW5kLCBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgICAgICB9CisjZW5k
aWYKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworICAg
ICAgICAgICAgKHZvaWQpIGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBl
bnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpKTsKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIH0gZWxz
ZSBpZiAoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAg
ICBpZiAoY2FsbGVyQXJndW1lbnRDb3VudCA9PSBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxl
ZUFyZ3VtZW50Q291bnQgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UykKKyAgICAgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgSklURW50cnlQb2ludHM6
OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KSk7
CisgICAgICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlua2luZykKKyAgICAgICAgICAgICAg
ICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3Ioa2luZCwgUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLy8gIFByZXBvcHVsYXRlIHRoZSBlbnRyeSBwb2ludHMgdGhlIHZpcnR1YWwg
dGh1bmsgbWlnaHQgdXNlLgorICAgICAgICAgICAgKHZvaWQpIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3Vt
ZW50c0xvY2F0aW9uKCkpKTsKKworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJp
dHlDaGVja05vdFJlcXVpcmVkOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICBjb2Rl
UHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7
CiAgICAgfQogICAgIGlmICghY2FsbExpbmtJbmZvLT5zZWVuT25jZSgpKQogICAgICAgICBjYWxs
TGlua0luZm8tPnNldFNlZW4oKTsKICAgICBlbHNlCi0gICAgICAgIGxpbmtGb3IoZXhlY0NhbGxl
ZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHIpOworICAgICAgICBs
aW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBjb2Rl
UHRyRm9yTGlua2luZyA/IGNvZGVQdHJGb3JMaW5raW5nIDogY29kZVB0cik7CiAgICAgCiAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFp
bCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKIH0KQEAgLTk1OSw3ICs5ODcsMTEg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYQogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0
cjsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgY29kZVB0
ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgY2FsbExpbmtJbmZvLT5hcmd1bWVu
dHNJblJlZ2lzdGVycygpID8gUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkgOiBTdGFja0FyZ3NN
dXN0Q2hlY2tBcml0eSk7CisjZWxzZQorICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKKyNlbmRpZgogICAgIGVsc2Ug
ewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC05NzEsMTMgKzEw
MDMsMjkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtEaXJlY3RDYQogICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OworICAg
ICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50
U3RhY2tTbG90cyA9IGNhbGxMaW5rSW5mby0+bWF4TnVtQXJndW1lbnRzKCk7Ci0gICAgICAgIGlm
IChhcmd1bWVudFN0YWNrU2xvdHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CisgICAg
ICAgIHNpemVfdCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5S
ZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBsb2dpYyBjb3VsZCBwcm9iYWJseSBi
ZSBzaW1wbGlmaWVkIQorICAgICAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVC
bG9ja1BhcmFtZXRlckNvdW50KQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVudHJ5UG9p
bnRUeXBlRm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChhcmd1bWVudFN0YWNrU2xvdHMgPiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJH
VU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9ja1BhcmFtZXRl
ckNvdW50IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3M7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUgPSBS
ZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBlbnRyeVR5cGUgPSByZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9yKGFyZ3Vt
ZW50U3RhY2tTbG90cyk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwg
Y29kZUJsb2NrUGFyYW1ldGVyQ291bnQpCisjZWxzZQorICAgICAgICBpZiAoYXJndW1lbnRTdGFj
a1Nsb3RzIDwgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQpCisjZW5kaWYKKyAgICAgICAgICAgIGVu
dHJ5VHlwZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAg
ICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBl
KTsKICAgICB9CiAgICAgCiAgICAgbGlua0RpcmVjdEZvcihleGVjLCAqY2FsbExpbmtJbmZvLCBj
b2RlQmxvY2ssIGNvZGVQdHIpOwpAQCAtMTAyMCw4ICsxMDY4LDE3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQogICAgIH0KKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGNhbGxMaW5rSW5mby0+
YXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAvLyBQdWxsIGludG8gdGhlIGNhY2hl
IHRoZSBhcml0eSBjaGVjayByZWdpc3RlciBlbnRyeSBpZiB0aGUgY2FsbGVyIHdhbnRzIGEgcmVn
aXN0ZXIgZW50cnkuCisgICAgICAgIC8vIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSBnZW5lcmlj
IHZpcnR1YWwgY2FsbCB0aHVuay4KKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9p
bnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOworICAgICAgICAodm9pZCkg
ZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlu
a0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpKTsKKworICAgIH0KKyNlbmRpZgogICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKLSAgICAgICAga2luZCwg
TXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgIGtpbmQsIFN0YWNr
QXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRh
aWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTggKzQ0LDIyIEBAIEpJVFRodW5rczo6fkpJVFRodW5rcygpCiB7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZUNhbGwoVk0qIHZtKQorSklURW50cnlQb2lu
dHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlOYXRpdmVDYWxsKFZNKiB2bSkKIHsKLSAgICBp
ZiAoIXZtLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOwotICAg
IHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDYWxsR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgaWYg
KCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5hdGl2
ZUNhbGxTdHViID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxp
bnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
bmF0aXZlQ2FsbFN0dWIpLCBuYXRpdmVDYWxsU3R1YiwgbmF0aXZlQ2FsbFN0dWIpOworICAgIH0K
KyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVDYWxsR2VuZXJhdG9yKTsKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIEpJVFRodW5rczo6Y3RpTmF0aXZlQ29uc3RydWN0KFZNKiB2
bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ29uc3Ry
dWN0KFZNKiB2bSkKIHsKLSAgICBpZiAoIXZtLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZSk7Ci0gICAgcmV0dXJuIGN0aVN0dWIodm0sIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDb25zdHJ1Y3RTdHViID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90
cmFtcG9saW5lKTsKKyAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihuYXRpdmVDb25zdHJ1Y3RT
dHViKSwgbmF0aXZlQ29uc3RydWN0U3R1YiwgbmF0aXZlQ29uc3RydWN0U3R1Yik7CisgICAgfQor
ICAgIHJldHVybiBqaXRFbnRyeVN0dWIodm0sIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcik7CiB9
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5hdGl2ZVRhaWxDYWxsKFZN
KiB2bSkKQEAgLTgyLDYgKzg2LDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6
OmN0aVN0dWIKICAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnZhbHVlOwogfQogCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRFbnRyeVN0dWIoVk0qIHZtLCBKSVRFbnRyeUdl
bmVyYXRvciBnZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBKSVRFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0RW50cnlTdHViTWFwLmFk
ZChnZW5lcmF0b3IsIEpJVEVudHJ5UG9pbnRzV2l0aFJlZigpKTsKKyAgICBpZiAoZW50cnkuaXNO
ZXdFbnRyeSkgeworICAgICAgICAvLyBDb21waWxhdGlvbiB0aHJlYWQgY2FuIG9ubHkgcmV0cmll
dmUgZXhpc3RpbmcgZW50cmllcy4KKyAgICAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFk
KCkpOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+dmFsdWUgPSBnZW5lcmF0b3Iodm0pOworICAg
IH0KKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnZhbHVlOworfQorCitKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdENhbGxUaHVua0VudHJ5U3R1YihWTSog
dm0sIEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIEpJVENhbGxUaHVua0VudHJ5U3R1Yk1hcDo6QWRkUmVz
dWx0IGVudHJ5ID0gbV9qaXRDYWxsVGh1bmtFbnRyeVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50
cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4
aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwogdm9pZCBKSVRUaHVua3M6OmZp
bmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogewogICAgIGF1dG8qIG5hdGl2
ZUV4ZWN1dGFibGUgPSBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGhhbmRsZS5nZXQoKS5hc0Nl
bGwoKSk7CkBAIC05Myw3ICsxMjEsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvCiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25z
dHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklU
VGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3Is
IEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7ICAgIAogICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTAzLDE5ICsxMzEsMTkg
QEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogCiAgICAgUmVmUHRy
PEpJVENvZGU+IGZvckNhbGw7CiAgICAgaWYgKGdlbmVyYXRvcikgewotICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZW50cnkgPSBnZW5lcmF0b3Iodm0pOwotICAgICAgICBmb3JDYWxsID0g
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoZW50cnksIGVudHJ5LmNvZGUoKSwgSklUQ29kZTo6
SG9zdENhbGxUaHVuaykpOworICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cnkgPSBn
ZW5lcmF0b3Iodm0pOworICAgICAgICBmb3JDYWxsID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUoZW50cnksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICB9IGVsc2UKLSAgICAgICAg
Zm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKEpJVDo6Y29tcGlsZUNUSU5hdGl2
ZUNhbGwodm0sIGZ1bmN0aW9uKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOworICAgICAgICBm
b3JDYWxsID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoSklUOjpjb21waWxlTmF0aXZlQ2Fs
bEVudHJ5UG9pbnRzKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAg
ICAKLSAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2
ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
Y3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICBS
ZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
aml0RW50cnlOYXRpdmVDb25zdHJ1Y3Qodm0pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAg
ICAgCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0
cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0
RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBu
YW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAg
ICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRo
dW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBU
aHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihW
TSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1
cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0
cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbnVsbHB0ciwgbmFtZSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiSW50cmluc2lj
LmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIldlYWsu
aCIKQEAgLTUyLDE2ICs1MywxOCBAQCBwdWJsaWM6CiAgICAgSklUVGh1bmtzKCk7CiAgICAgdmly
dHVhbCB+SklUVGh1bmtzKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZl
Q2FsbChWTSopOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVDb25zdHJ1Y3Qo
Vk0qKTsKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgaml0RW50cnlOYXRpdmVDYWxsKFZNKik7
CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KFZNKik7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZVRhaWxDYWxsKFZNKik7ICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRh
Z3MoVk0qKTsgICAgCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3RpU3R1YihWTSosIFRo
dW5rR2VuZXJhdG9yKTsKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgaml0RW50cnlTdHViKFZN
KiwgSklURW50cnlHZW5lcmF0b3IpOworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmIGppdENhbGxUaHVua0VudHJ5U3R1YihWTSosIEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9y
KTsKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVG
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNp
YywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgVGh1
bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBKSVRFbnRyeUdlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBKSVRFbnRyeUdlbmVy
YXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBjbGVhckhv
c3RGdW5jdGlvblN0dWJzKCk7CiAKQEAgLTcwLDYgKzczLDEwIEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFRodW5rR2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY+
IENUSVN0dWJNYXA7CiAgICAgQ1RJU3R1Yk1hcCBtX2N0aVN0dWJNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPEpJVEVudHJ5R2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWY+IEpJVEVudHJ5
U3R1Yk1hcDsKKyAgICBKSVRFbnRyeVN0dWJNYXAgbV9qaXRFbnRyeVN0dWJNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPEpJVENhbGxUaHVua0VudHJ5R2VuZXJhdG9yLCBKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZj4gSklUQ2FsbFRodW5rRW50cnlTdHViTWFwOworICAgIEpJVENhbGxU
aHVua0VudHJ5U3R1Yk1hcCBtX2ppdENhbGxUaHVua0VudHJ5U3R1Yk1hcDsKIAogICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24sIFN0cmluZz4gSG9z
dEZ1bmN0aW9uS2V5OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbChSZWdpc3RlcklEKTsK
ICAgICAgICAgSnVtcCBlbWl0SnVtcElmTnVtYmVyKFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1w
IGVtaXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJ
Zk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKTsKICAgICAgICAgdm9pZCBlbWl0VGFnSW50KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKQEAgLTE2MywxMiArMTY0LDE3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8s
IGRzdCwgdGFnTWFza1JlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAgaW5saW5lIEpTSW50ZXJm
YWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SW50MzIoUmVnaXN0ZXJJ
RCByZWcpCisgICAgeworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDY0KEJlbG93LCByZWcs
IHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZywg
cmVnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBpbmxpbmUgSlNJbnRl
cmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIodW5zaWduZWQgdmly
dHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbG9hZDY0
KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOwotICAgICAgICBKdW1wIHJl
c3VsdCA9IGJyYW5jaDY0KEJlbG93LCBkc3QsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAg
ICAgIHplcm9FeHRlbmQzMlRvUHRyKGRzdCwgZHN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIGVtaXRKdW1wSWZOb3RJbnQzMihkc3QpOwogICAgIH0KIAogICAgIGlu
bGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUo
dW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
Y3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lz
dGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwyMCBAQCBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50UmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdp
c3RlclNldCByZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXggPSAwOyBhcmd1bWVudEluZGV4IDwgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJndW1lbnRJbmRleCsrKSB7CisgICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3IoYXJndW1lbnRJbmRleCk7CisKKyAgICAgICAgaWYgKGFyZ3VtZW50
UmVnICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1bHQuc2V0KGFyZ3VtZW50UmVn
KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWdpc3RlclNldCBS
ZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkKIHsKICAgICBSZWdpc3RlclNldCBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdp
c3RlclNldCBydW50aW1lUmVnaXN0ZXJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNp
YWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwg
YW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFy
Z3VtZW50UmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyB1c2VkIHRvIHBhc3MgYXJndW1lbnRzIHdo
ZW4gbWFraW5nIEpTIENhbGxzCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBh
bmQgdXNlZCBieSBhbnkgdGllci4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgbGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRo
ZSBMTEludC4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
OyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIERGRyBKSVQuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCwy
MSArNTQwLDIxIEBAIHZvaWQgcmVwYXRjaEluKAogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCks
IG9wZXJhdGlvbkluKTsKIH0KIAotc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYpCitzdGF0
aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSosIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB0aHVua0VudHJ5UG9pbnRzKQogewotICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbigpLCBDb2RlTG9jYXRpb25MYWJlbChjb2RlUmVmLmNvZGUoKSkpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigp
LCBDb2RlTG9jYXRpb25MYWJlbCh0aHVua0VudHJ5UG9pbnRzLmVudHJ5Rm9yKGNhbGxMaW5rSW5m
by5hcmd1bWVudHNMb2NhdGlvbigpKSkpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihW
TSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0
b3IpCitzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJbmZvLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdm0tPmdldENUSVN0dWIoZ2VuZXJhdG9yKSk7Cisg
ICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdm0tPmdldEpJVENhbGxUaHVua0VudHJ5
U3R1YihnZW5lcmF0b3IpKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVu
a0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZv
LCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRT
dHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGNhbGxM
aW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29k
ZVJlZigpLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKIH0KIAogc3RhdGljIGJvb2wgaXNXZWJBc3Nl
bWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKQEAgLTY0NCw3ICs2NDQsNyBA
QCB2b2lkIGxpbmtTbG93Rm9yKAogICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOwog
fQogCi1zdGF0aWMgdm9pZCByZXZlcnRDYWxsKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgcmV2ZXJ0
Q2FsbChWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBKSVRKU0NhbGxUaHVua0Vu
dHJ5UG9pbnRzV2l0aFJlZiBjb2RlUmVmKQogewogICAgIGlmIChjYWxsTGlua0luZm8uaXNEaXJl
Y3QoKSkgewogICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKQEAgLTY3MSw3
ICs2NzEsNyBAQCB2b2lkIHVubGlua0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsCiAgICAg
aWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbmxpbmtp
bmcgY2FsbCBhdCAiLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksICJcbiIpOwogICAgIAot
ICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcikpOworICAgIHJldmVydENhbGwoJnZtLCBjYWxsTGlua0luZm8sIHZtLmdl
dEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKIHZv
aWQgbGlua1ZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbykKQEAgLTY4Myw5ICs2ODMsOSBAQCB2b2lkIGxpbmtWaXJ0dWFsRm9yKEV4ZWNTdGF0ZSog
ZXhlYywgQ2FsCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxv
Y2spKQogICAgICAgICBkYXRhTG9nKCJMaW5raW5nIHZpcnR1YWwgY2FsbCBhdCAiLCAqY2FsbGVy
Q29kZUJsb2NrLCAiICIsIGNhbGxlckZyYW1lLT5jb2RlT3JpZ2luKCksICJcbiIpOwogCi0gICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcigmdm0s
IGNhbGxMaW5rSW5mbyk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmly
dHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKCZ2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZl
cnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5m
by5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssIHZtLCBudWxs
cHRyLCB0cnVlKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKHZpcnR1YWxUaHVuay5jb2RlUmVmKCksIHZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAK
IG5hbWVzcGFjZSB7CkBAIC03NDAsNiArNzQwLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgICAgICBjYWxsTGlua0luZm8uc2V0SGFzU2VlbkNsb3N1cmUoKTsKICAgICAKICAgICBW
ZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOworICAgIHNpemVfdCBjYWxsZXJB
cmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAK
ICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJp
YW50IHZhcmlhbnQgOiBsaXN0KSB7CkBAIC03NTEsNyArNzUyLDcgQEAgdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKAogICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBjYW5ub3QgaGFuZGxlIGEgY2FsbGVlLCBlaXRoZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZl
IGEgQ29kZUJsb2NrIG9yIGJlY2F1c2UgYXJpdHkgbWlzbWF0Y2gsCiAgICAgICAgICAgICAvLyBh
c3N1bWUgdGhhdCBpdCdzIGJldHRlciBmb3IgdGhpcyB3aG9sZSB0aGluZyB0byBiZSBhIHZpcnR1
YWwgY2FsbC4KLSAgICAgICAgICAgIGlmICghY29kZUJsb2NrIHx8IGV4ZWMtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkpIHsKKyAgICAgICAgICAgIGlm
ICghY29kZUJsb2NrIHx8IGNhbGxlckFyZ3VtZW50Q291bnQgPCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkp
IHsKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcihleGVjLCBjYWxsTGlua0luZm8pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTc3NSw3ICs3NzYsMTAg
QEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIH0KICAgICAKICAgICBHUFJSZWcgY2Fs
bGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlua0luZm8uY2FsbGVlR1BSKCkpOwot
ICAgIAorCisgICAgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJlZ2lzdGVycygpKQorICAg
ICAgICBBU1NFUlQoY2FsbGVlR1BSID09IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisK
ICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCgmdm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCiAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKQEAgLTc5Nyw2ICs4MDEsOCBAQCB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBmcmFtZVNo
dWZmbGVyLT5hY3F1aXJlR1BSKCk7CisgICAgICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1
bWVudHNJblJlZ2lzdGVycygpKQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86Om5v
bkFyZ0dQUjA7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKTsKICAgICAgICAgLy8gVmVyaWZ5
IHRoYXQgd2UgaGF2ZSBhIGZ1bmN0aW9uIGFuZCBzdGFzaCB0aGUgZXhlY3V0YWJsZSBpbiBzY3Jh
dGNoR1BSLgpAQCAtODYyLDEzICs4NjgsMjMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgIEdQUlJlZyBmYXN0Q291bnRzQmFzZUdQUjsKICAgICBpZiAoZnJhbWVTaHVmZmxlcikKICAg
ICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPSBmcmFtZVNodWZmbGVyLT5hY3F1aXJlR1BSKCk7Cisg
ICAgZWxzZSBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjE7
CisjZWxzZQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOworI2Vu
ZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0KICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNvbXBhcmlzb25W
YWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDMpOwogICAgIH0KLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBmYXN0Q291bnRzQmFzZUdQ
Uik7CisgICAgaWYgKGZhc3RDb3VudHMpCisgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZmFzdENvdW50cy5nZXQoKSksIGZhc3RDb3VudHNCYXNlR1BSKTsK
ICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIgJiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkKICAg
ICAgICAgc3R1YkppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisKKyAgICBpbmNyZW1lbnRD
b3VudGVyKCZzdHViSml0LCBWTTo6UG9seW1vcnBoaWNDYWxsKTsKKwogICAgIEJpbmFyeVN3aXRj
aCBiaW5hcnlTd2l0Y2goY29tcGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBCaW5hcnlTd2l0
Y2g6OkludFB0cik7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogICAgIHdoaWxl
IChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewpAQCAtODc3LDggKzg5MywzMiBAQCB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBj
YWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQo
dmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworCisgICAgICAgIEVu
dHJ5UG9pbnRUeXBlIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlm
IChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS5jb2RlQmxvY2soKTsKKyAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVl
QXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpOworICAgICAgICAgICAgICAgIGlmIChjYWxsZWVBcmd1bWVudENvdW50ID09IGNhbGxl
ckFyZ3VtZW50Q291bnQgfHwgY2FsbGVlQXJndW1lbnRDb3VudCA+PSBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgICAgICBlbnRyeVR5cGUg
PSBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIEVudHJ5UG9pbnRUeXBlIGVudHJ5Rm9yQXJnQ291bnQg
PSBKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGNhbGxl
ckFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0ciA9CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoZW50cnlGb3JBcmdD
b3VudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgZW50cnlUeXBlID0gZW50cnlGb3JBcmdDb3VudDsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdz
UG9zc2libGVFeHRyYUFyZ3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFy
Z3M7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyID0KLSAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpOworICAg
ICAgICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkt
PmFkZHJlc3NGb3JDYWxsKGVudHJ5VHlwZSk7CisgICAgICAgIEFTU0VSVChjb2RlUHRyKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBzdHViSml0LmFk
ZDMyKApAQCAtODg2LDcgKzkyNiw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJ
bmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWVT
aHVmZmxlcikgewotICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVT
aHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdChjYWxsTGlu
a0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAg
ICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAg
ICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKQEAgLTkwNywxOSArOTQ3LDE5IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApKTsKICNlbHNlCi0gICAgICAgIGZyYW1lU2h1ZmZsZXIt
PnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAg
ICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSA9PSBTdGFja0FyZ3MpCisg
ICAgICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpKTsKICNlbmRpZgogICAgICAgICBmcmFtZVNo
dWZmbGVyLT5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHVi
Sml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICAgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKICAgICB9Ci0gICAgc3R1Ykpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5m
bzo6cmVnVDIpOwotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Y2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBH
UFJJbmZvOjpyZWdUNCk7Ci0gICAgCi0gICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybihHUFJJbmZvOjpyZWdUNCk7CisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIHN0dWJKaXQucmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisKKyAgICBz
dHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0
dWJKaXQuanVtcCgpOwogICAgICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHZtLCBz
dHViSml0LCBvd25lciwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKQEAgLTk0MCw3ICs5ODAsNyBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9u
ZSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkpOwog
ICAgIGVsc2UKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uaG90
UGF0aE90aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVu
a0dlbmVyYXRvcikuY29kZSgpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9j
YXRpb25MYWJlbCh2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua1BvbHltb3JwaGljQ2Fs
bFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24o
KSkpKTsKICAgICAKICAgICBhdXRvIHN0dWJSb3V0aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERV9GT1IoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRo
dW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklU
KQogCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNs
dWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC0zNywxOCArMzgsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVCA6IHB1YmxpYyBKU0ludGVyZmFjZUpJVCB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IFRoaXNBcmd1bWVudCA9IC0xOwotICAg
ICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291bnQpCisg
ICAgICAgIGVudW0gQXJnTG9jYXRpb24geyBPblN0YWNrLCBJblJlZ2lzdGVycyB9OworCisgICAg
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoVk0qIHZtLCBpbnQgZXhwZWN0ZWRBcmdDb3VudCwgQXNz
ZW1ibHlIZWxwZXJzOjpTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBBc3NlbWJseUhlbHBl
cnM6OlNwaWxsRXhhY3RseSwgQXJnTG9jYXRpb24gYXJnTG9jYXRpb24gPSBPblN0YWNrKQogICAg
ICAgICAgICAgOiBKU0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewotICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXpl
VGFnUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4
cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMKLSAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisjaWYgIU5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShzcGlsbFR5cGUpOworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGFyZ0xvY2F0aW9uKTsKKyNl
bHNlCisgICAgICAgICAgICBpZiAoYXJnTG9jYXRpb24gPT0gSW5SZWdpc3RlcnMpIHsKKyAgICAg
ICAgICAgICAgICBtX3N0YWNrQXJndW1lbnRzRW50cnkgPSBsYWJlbCgpOworICAgICAgICAgICAg
ICAgIGZpbGxBcmd1bWVudFJlZ2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisgICAg
ICAgICAgICAgICAgbV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIGVtaXRTYXZl
VGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCisgICAgICAgICAg
ICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkp
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3BpbGxBcmd1bWVudFJl
Z2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZShleHBlY3RlZEFyZ0NvdW50ICsgMSwgc3BpbGxU
eXBlKTsKKyAgICAgICAgICAgICAgICBtX3N0YWNrQXJndW1lbnRzRW50cnkgPSBsYWJlbCgpOwor
I2VuZGlmCisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAg
ICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAgICAg
ICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3Vt
ZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFs
LCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSkKICAgICAg
ICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gTGFiZWwoKTsKKyNlbmRp
ZgogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgICAgIGVtaXRT
YXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KQEAgLTk0LDExICsx
MjAsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsb2FkSW50MzJBcmd1bWVudChh
cmd1bWVudCwgZHN0LCBjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgICAgIG1fZmFpbHVyZXMu
YXBwZW5kKGNvbnZlcnNpb25GYWlsZWQpOwogICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjaGVj
a0pTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBSZWdpc3RlcklEIGFyZ3VtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKGFyZ3Vt
ZW50KSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoTm90
RXF1YWwsCisgICAgICAgICAgICAgICAgQWRkcmVzcyhhcmd1bWVudCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICB2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRGYWlsdXJlKGNvbnN0
IEp1bXAmIGZhaWx1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5k
KGZhaWx1cmUpOwogICAgICAgICB9CisKKyAgICAgICAgdm9pZCBsaW5rRmFpbHVyZUhlcmUoKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmxpbmsodGhpcyk7CisgICAgICAgICAg
ICBtX2ZhaWx1cmVzLmNsZWFyKCk7CisgICAgICAgIH0KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIHZvaWQgcmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHNyYykKICAgICAgICAgewpAQCAt
MTY0LDEzICsyMDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXQoKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZpbmFsaXpl
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQor
ICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmluYWxpemUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhVTktfSUQp
OwogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2ZhaWx1cmVzLCBDb2RlTG9jYXRpb25M
YWJlbChmYWxsYmFjaykpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2Nh
bGxzW2ldLmZpcnN0LCBtX2NhbGxzW2ldLnNlY29uZCk7Ci0gICAgICAgICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgJXMiLCB0aHVu
a0tpbmQpKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnk7
CisgICAgICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAg
ICAgICAgICAgc3RhY2tFbnRyeSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9zdGFja0FyZ3Vt
ZW50c0VudHJ5KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZWdpc3RlckVu
dHJ5OworICAgICAgICAgICAgaWYgKG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeS5pc1NldCgpKQor
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1f
cmVnaXN0ZXJBcmd1bWVudHNFbnRyeSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBlbnRyeSA9IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1
bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIGlmIChtX3N0YWNrQXJndW1l
bnRzRW50cnkuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1l
bnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihlbnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVnaXN0ZXJFbnRyeSwgcmVnaXN0ZXJF
bnRyeSwgc3RhY2tFbnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZihlbnRyeSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIGVu
dHJ5LmNvZGUoKSwgc3RhY2tFbnRyeSwgc3RhY2tFbnRyeSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUo
KSwgZW50cnkuY29kZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc3VtZXMgdGhhdCB0
aGUgdGFyZ2V0IGZ1bmN0aW9uIHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50
CkBAIC0yMDcsNiArMjY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhaWx1cmVzOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5OworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFja0FyZ3VtZW50c0VudHJ5OwogICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPENhbGwsIEZ1bmN0aW9uUHRyPj4gbV9jYWxsczsKICAgICB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCShyZXZpc2lvbiAy
MDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFZN
OwogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgSklURW50cnlQb2ludHNXaXRo
UmVmOworY2xhc3MgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY7CiAKIHR5cGVkZWYg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmICgqVGh1bmtHZW5lcmF0b3IpKFZNKik7Cit0eXBlZGVmIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZiAoKkpJVEVudHJ5R2VuZXJhdG9yKShWTSopOwordHlwZWRlZiBK
SVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiAoKkpJVENhbGxUaHVua0VudHJ5R2VuZXJh
dG9yKShWTSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3NywyMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRp
b25Gcm9tCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiVGhyb3cgZXhj
ZXB0aW9uIGZyb20gY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNy
ZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShDQ2FsbEhlbHBlcnMmIGppdCwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5cGVDb3VudF0pCit7
CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIGZvciAo
dW5zaWduZWQgYXJnSW5kZXggPSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTOyBhcmdJbmRleC0tID4gMDspIHsKKyAgICAgICAgZW50cnlQb2ludHNbdGh1bmtFbnRyeVBv
aW50VHlwZUZvcihhcmdJbmRleCArIDEpXSA9IGppdC5sYWJlbCgpOworICAgICAgICBqaXQuZW1p
dFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9y
RnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICB9CisKKyAgICBqaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZv
ckNhbGxlZSgpLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOworICAgIGppdC5lbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3Vu
dCgpLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGppdCk7CisgICAgVU5VU0VEX1BBUkFNKGVudHJ5UG9pbnRzKTsKKyNlbmRpZgorICAgIGVu
dHJ5UG9pbnRzW1N0YWNrQXJnc10gPSBqaXQubGFiZWwoKTsKK30KKwogc3RhdGljIHZvaWQgc2xv
d1BhdGhGb3IoCiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIFZNKiB2bSwgU3BydF9KSVRPcGVyYXRp
b25fRUNsaSBzbG93UGF0aEZ1bmN0aW9uKQogewpAQCAtODgsNyArMTA1LDcgQEAgc3RhdGljIHZv
aWQgc2xvd1BhdGhGb3IoCiAgICAgLy8gTW92aW5nIHRoZSBzdGFjayBkb3duIG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsIGJ5dGVzIGdpdmVzIHVzIHJvb20gZm9yIG91ciAzIGFyZ3VtZW50
cwogICAgIC8vIGFuZCBzcGFjZSBmb3IgdGhlIDE2IGJ5dGUgcmV0dXJuIGFyZWEuCiAgICAgaml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQu
bW92ZShHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBqaXQubW92
ZShHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMzIpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHNs
b3dQYXRoRnVuY3Rpb24pKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CkBAIC0xMDAsNyArMTE3LDcg
QEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAjZWxzZQogICAgIGlmIChtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigtbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHNsb3dQYXRoRnVuY3Rpb24pKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CkBAIC0xMjcsNyArMTQ0
LDcgQEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dl
bmVyYXRvcihWTSogdm0pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMg
b24gdGhlIHN0YWNrIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBXZSB3aWxsIGhlbmNlCiAgICAg
Ly8gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUgd2UgbWFr
ZSBhIEMrKyBmdW5jdGlvbiBjYWxsCkBAIC0xMzUsNDUgKzE1MiwxNTMgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcgogICAgIC8vIHRvIGJlIGluIHJlZ1QwL3JlZ1Qx
IChwYXlsb2FkL3RhZyksIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBhbHJlYWR5CiAgICAgLy8gYmVl
biBhZGp1c3RlZCwgYW5kIGFsbCBvdGhlciByZWdpc3RlcnMgdG8gYmUgYXZhaWxhYmxlIGZvciB1
c2UuCiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7Ci0gICAgCisKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKworICAgIGNy
ZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsKICAgICBz
bG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2FsbCk7CiAgICAgCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNhbGwgc2xvdyBwYXRoIHRodW5rIikp
OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsICgiTGluayBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBKSVRKU0NhbGxUaHVu
a0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMgPSBKSVRKU0NhbGxUaHVua0VudHJ5
UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKworICAgIGZvciAodW5zaWduZWQgZW50cnlJbmRleCA9
IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5
SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nh
c3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisgICAgICAgICAgICBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhdKSk7CisgICAgfQorCisgICAg
cmV0dXJuIGNhbGxFbnRyeVBvaW50czsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgLy8gVGhl
IHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0aGUgbGluayByZWdpc3Rlci4g
V2Ugd2lsbCBoZW5jZQorICAgIC8vIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRoZSBjYWxs
IGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbAorICAgIC8vIHRvIHBlcmZv
cm0gbGlua2luZyBhbmQgbGF6eSBjb21waWxhdGlvbiBpZiBuZWNlc3NhcnkuIFdlIGV4cGVjdCB0
aGUgQ2FsbExpbmtJbmZvCisgICAgLy8gdG8gYmUgaW4gR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGhl
IGNhbGxlZSB0byBiZSBpbiBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksCisgICAgLy8gdGhl
IENhbGxGcmFtZSB0byBoYXZlIGFscmVhZHkgYmVlbiBhZGp1c3RlZCwgYW5kIGFyZ3VtZW50cyBp
biBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAvLyBhbmQvb3IgaW4gdGhlIHN0YWNrIGFzIGFwcHJv
cHJpYXRlLgorICAgIENDYWxsSGVscGVycyBqaXQodm0pOworICAgIAorICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdOworCisgICAg
Y3JlYXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5KGppdCwgZW50cnlQb2ludHMpOworCisg
ICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOyAvLyBTYXZlIGNhbGxlZSdzIGZyYW1lIHBvaW50ZXIKKyAgICBqaXQuZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
ICZ2bS0+dG9wQ2FsbEZyYW1lKTsKKworICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCkKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHMoR1BSSW5mbzo6bm9uQXJnR1BSMSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25MaW5rRGlyZWN0Q2FsbCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBlbWl0UG9p
bnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwpCisgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAKKyAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBqaXQuZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQuZW1pdEdldFBheWxvYWRGcm9t
Q2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCwgYXJnQ291bnRSZWcpOworCisgICAgLy8gbG9hZCAidGhpcyIKKyAgICBqaXQuZW1pdEdldEZy
b21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKDAsIGFyZ3VtZW50UmVnaXN0ZXJGb3JG
dW5jdGlvbkFyZ3VtZW50KDApKTsKKworICAgIENDYWxsSGVscGVyczo6SnVtcCBmaWxsVW5kZWZp
bmVkW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlNdOworICAgIAorICAg
IGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVm
aW5lZFthcmdJbmRleF0gPSBqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVh
bCwgYXJnQ291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKTsK
KyAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShh
cmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsK
KyAgICB9CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZUZpbGxpbmcgPSBqaXQuanVtcCgp
OworCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICBm
aWxsVW5kZWZpbmVkW2FyZ0luZGV4XS5saW5rKCZqaXQpOworICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIH0KKwor
ICAgIGRvbmVGaWxsaW5nLmxpbmsoJmppdCk7CisjZW5kaWYKKworCisgICAgaml0LnJldCgpOwor
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIkxpbmsgZGlyZWN0IGNhbGwgdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50
c1dpdGhSZWYoY29kZVJlZik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0g
U3RhY2tBcmdzOyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJ
bmRleCsrKSB7CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2Fz
dDxUaHVua0VudHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGNhbGxFbnRyeVBvaW50czsKIH0KIAogLy8gRm9yIGNsb3N1cmUgb3B0aW1pemF0
aW9ucywgd2Ugb25seSBpbmNsdWRlIGNhbGxzLCBzaW5jZSBpZiB5b3UncmUgdXNpbmcgY2xvc3Vy
ZXMgZm9yCiAvLyBvYmplY3QgY29uc3RydWN0aW9uIHRoZW4geW91J3JlIGdvaW5nIHRvIGxvc2Ug
YmlnIHRpbWUgYW55d2F5LgotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtQb2x5bW9ycGhpY0Nh
bGxUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIENDYWxs
SGVscGVycyBqaXQodm0pOwogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBv
aW50c1tUaHVua0VudHJ5UG9pbnRUeXBlQ291bnRdOworCisgICAgY3JlYXRlUmVnaXN0ZXJBcmd1
bWVudHNTcGlsbEVudHJ5KGppdCwgZW50cnlQb2ludHMpOworCiAgICAgc2xvd1BhdGhGb3Ioaml0
LCB2bSwgb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCk7CiAgICAgCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIHBvbHltb3JwaGljIGNhbGwgc2xvdyBwYXRo
IHRodW5rIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgiTGluayBwb2x5bW9ycGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIp
KTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBjYWxsRW50cnlQb2ludHMg
PSBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmKTsKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtF
bnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9p
bnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5k
ZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRy
eUluZGV4XSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2FsbEVudHJ5UG9pbnRzOwogfQog
CiAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSBtZWdhbW9ycGhpYyB2
aXJ0dWFsIGNhbGwgdnMuIGEgc2xvdwogLy8gcGF0aCB2aXJ0dWFsIGNhbGwgc28gdGhhdCB3ZSBj
YW4gZW5hYmxlIGZhc3QgdGFpbCBjYWxscyBmb3IgbWVnYW1vcnBoaWMKIC8vIHZpcnR1YWwgY2Fs
bHMgYnkgdXNpbmcgdGhlIHNodWZmbGVyLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODgzMQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0Zv
cihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pCiB7Ci0gICAgLy8gVGhlIGNhbGxlZSBpcyBpbiByZWdUMCAoZm9yIEpTVkFMVUUz
Ml82NCwgdGhlIHRhZyBpcyBpbiByZWdUMSkuCi0gICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlz
IG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKLSAg
ICAvLyBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRo
ZSBjYWxsIGZyYW1lIHdoaWxlIHdlCi0gICAgLy8gbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsIHRv
IHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgorICAgIC8vIFRoZSBjYWxsZWUgaXMgaW4g
YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIChmb3IgSlNWQUxVRTMyXzY0LCBpdCBpcyBpbiBy
ZWdUMTpyZWdUMCkuCisgICAgLy8gVGhlIENhbGxMaW5rSW5mbyBpcyBpbiBHUFJJbmZvOjpub25B
cmdHUFIwLgorICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2ssIG9yIGlu
IHRoZSBsaW5rIHJlZ2lzdGVyLgorICAgIC8vLyBXZSB3aWxsIGhlbmNlIGp1bXAgdG8gdGhlIGNh
bGxlZSwgb3Igc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwKKyAgICAvLyBmcmFt
ZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIEpJ
VCBvcGVyYXRpb24uCiAKICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKICAgICAKICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOwotICAgIAotICAgIC8vIFRoaXMgaXMgYSBzbG93
IHBhdGggZXhlY3V0aW9uLCBhbmQgcmVnVDIgY29udGFpbnMgdGhlIENhbGxMaW5rSW5mby4gQ291
bnQgdGhlCi0gICAgLy8gc2xvdyBwYXRoIGV4ZWN1dGlvbiBmb3IgdGhlIHByb2ZpbGVyLgorCisg
ICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgIEdQUlJlZyBjYWxsZWVUYWdSZWcgPSBHUFJJbmZvOjpyZWdU
MTsKKyNlbmRpZgorICAgIEdQUlJlZyB0YXJnZXRSZWcgPSBHUFJJbmZvOjpub25BcmdHUFIxOwor
ICAgIC8vIFRoaXMgaXMgdGhlIENhbGxMaW5rSW5mbyogb24gZW50cnkgYW5kIHVzZWQgbGF0ZXIg
YXMgYSB0ZW1wLgorICAgIEdQUlJlZyBjYWxsTGlua0luZm9BbmRUZW1wUmVnID0gR1BSSW5mbzo6
bm9uQXJnR1BSMDsKKworICAgIGppdC5maWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZv
cmVQcm9sb2d1ZSgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCByZWdpc3RlckVudHJ5ID0gaml0LmxhYmVs
KCk7CisjZW5kaWYKKworICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlZpcnR1YWxDYWxs
KTsKKworICAgIC8vIFRoaXMgaXMgYSBzbG93IHBhdGggZXhlY3V0aW9uLiBDb3VudCB0aGUgc2xv
dyBwYXRoIGV4ZWN1dGlvbiBmb3IgdGhlIHByb2ZpbGVyLgogICAgIGppdC5hZGQzMigKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksCi0gICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZlNsb3dQYXRoQ291
bnQoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvQW5kVGVt
cFJlZywgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZlNsb3dQYXRoQ291bnQoKSkpOwogCiAgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBoYXZlIGEgc3RvcnkgZm9yIGVsaW1pbmF0aW5nIHRoZXNlIGNoZWNr
cy4gSW4gbWFueSBjYXNlcywKICAgICAvLyB0aGUgREZHIGtub3dzIHRoYXQgdGhlIHZhbHVlIGlz
IGRlZmluaXRlbHkgYSBjZWxsLCBvciBkZWZpbml0ZWx5IGEgZnVuY3Rpb24uCkBAIC0xODEsNTQg
KzMwNiw2OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hU
ZXN0NjQoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Tm9uWmVybywgY2FsbGVlUmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICNlbHNlCiAg
ICAgc2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZVRhZ1JlZywKICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBzbG93Q2Fz
ZS5hcHBlbmQoaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlvblR5
cGUpKTsKKyAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaElmTm90VHlwZShjYWxsZWVSZWcs
IEpTRnVuY3Rpb25UeXBlKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgd2UgaGF2ZSBhIEpT
RnVuY3Rpb24uCiAgICAgCiAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LAotICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKKyAgICAgICAg
dGFyZ2V0UmVnKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRP
ZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8u
c3BlY2lhbGl6YXRpb25LaW5kKCkpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwotICAgIHNs
b3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUklu
Zm86OnJlZ1Q0KSk7CisgICAgICAgICAgICB0YXJnZXRSZWcsIEV4ZWN1dGFibGVCYXNlOjpvZmZz
ZXRPZkVudHJ5Rm9yKAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlv
bktpbmQoKSwKKyAgICAgICAgICAgICAgICBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8u
YXJndW1lbnRzTG9jYXRpb24oKSkpKSwKKyAgICAgICAgdGFyZ2V0UmVnKTsKKyAgICBzbG93Q2Fz
ZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCB0YXJnZXRSZWcp
KTsKICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBDb2RlQmxvY2ssIGFu
ZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5nIGEgZmFzdAogICAgIC8vIGNhbGwuCiAgICAgCiAg
ICAgLy8gTWFrZSBhIHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBjb2Rl
LgotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKKyAgICBl
bWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCB0YXJnZXRSZWcpOwogICAgIGlmIChjYWxsTGlua0lu
Zm8uaXNUYWlsQ2FsbCgpKSB7Ci0gICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xv
dyhHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9G
cmFtZUJlZm9yZVByb2xvZ3VlKCk7CisgICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoY2FsbExpbmtJbmZvQW5kVGVtcFJlZyk7CisgICAgICAgIGppdC5wcmVwYXJlRm9y
VGFpbENhbGxTbG93KHRhcmdldFJlZyk7CiAgICAgfQotICAgIGppdC5qdW1wKEdQUkluZm86OnJl
Z1Q0KTsKLQorICAgIGppdC5qdW1wKHRhcmdldFJlZyk7CiAgICAgc2xvd0Nhc2UubGluaygmaml0
KTsKLSAgICAKKworICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlZpcnR1YWxTbG93Q2Fs
bCk7CisKICAgICAvLyBIZXJlIHdlIGRvbid0IGtub3cgYW55dGhpbmcsIHNvIHJldmVydCB0byB0
aGUgZnVsbCBzbG93IHBhdGguCisgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1l
QmVmb3JlUHJvbG9ndWUoKTsKICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRp
b25WaXJ0dWFsQ2FsbCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAgICAgICAg
cGF0Y2hCdWZmZXIsCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwKICAgICAgICAgKCJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIs
CiAgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpSZWd1bGFyID8g
ImNhbGwiIDogY2FsbExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyAidGFp
bCBjYWxsIiA6ICJjb25zdHJ1Y3QiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYo
Y29kZVJlZik7CisKKyAgICBjYWxsRW50cnlQb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzRW50
cnksIGNvZGVSZWYuY29kZSgpKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVB0ciA9
IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeSk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGVudHJ5SW5kZXggPSBSZWdpc3RlcjFBcmdFbnRyeTsgZW50cnlJbmRleCA8ICBUaHVua0Vu
dHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykKKyAgICAgICAgY2FsbEVudHJ5UG9pbnRz
LnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgp
LCByZWdpc3RlckVudHJ5UHRyKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNhbGxFbnRyeVBvaW50
czsKIH0KIAogZW51bSBUaHVua0VudHJ5VHlwZSB7IEVudGVyVmlhQ2FsbCwgRW50ZXJWaWFKdW1w
V2l0aFNhdmVkVGFncywgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyB9OwogCi1zdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlbmVyYXRvcihWTSogdm0sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFD
YWxsKQorc3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0q
IHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBlIGVudHJ5VHlw
ZSA9IEVudGVyVmlhQ2FsbCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYWJsZSB0
byBsb2cgU2hhZG93Q2hpY2tlbiBwcm9sb2d1ZSBwYWNrZXRzLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU2ODkKQEAgLTIzNyw4ICszNzcsMTQgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIAogICAgIEpTSW50
ZXJmYWNlSklUIGppdCh2bSk7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc3RhY2tBcmdz
RW50cnk7CisKICAgICBzd2l0Y2ggKGVudHJ5VHlwZSkgewogICAgIGNhc2UgRW50ZXJWaWFDYWxs
OgorICAgICAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSgpOworCisgICAgICAgIHN0YWNrQXJnc0VudHJ5ID0gaml0LmxhYmVsKCk7CisKICAgICAgICAg
aml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRW50
ZXJWaWFKdW1wV2l0aFNhdmVkVGFnczoKQEAgLTM3OSwyNSArNTI1LDMzIEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFu
ZGxlcigpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJuYXRpdmUg
JXMlcyB0cmFtcG9saW5lIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3Mg
PyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRo
b3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5n
KGtpbmQpLmRhdGEoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsICgibmF0aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlw
ZSA9PSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRhaWwgV2l0aCBTYXZlZCBUYWdzICIg
OiBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyA/ICJUYWlsIFdpdGhv
dXQgU2F2ZWQgVGFncyAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKKyAgICBpZiAo
ZW50cnlUeXBlID09IEVudGVyVmlhQ2FsbCkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgc3RhY2tFbnRyeVB0ciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Yoc3RhY2tBcmdzRW50cnkp
OworCisgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJl
Zi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgc3RhY2tFbnRyeVB0ciwg
c3RhY2tFbnRyeVB0cik7CisgICAgfQorCisgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCkpOworCiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICByZXR1cm4gbmF0
aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9yQ2FsbCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIG5hdGl2
ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3Mp
OworICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZp
YUp1bXBXaXRoU2F2ZWRUYWdzKS5jb2RlUmVmKCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBuYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0qIHZtKQogewotICAg
IHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBX
aXRob3V0U2F2ZWRUYWdzKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2Rl
Rm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncykuY29kZVJlZigpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNKiB2bSkKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qIHZtKQogewog
ICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogfQpA
QCAtNTM2LDYgKzY5MCw0MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdW5yZWFjaGFibGVHZW5l
cmF0CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgidW5yZWFjaGFibGUg
dGh1bmsiKSk7CiB9CiAKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCitzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoU3BlY2lhbGl6ZWRUaHVua0pJ
VCYgaml0LCBWTSogdm0pCit7CisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBHUFJSZWcgdGhpc1Jl
ZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDApOworICAgIEdQUlJlZyBp
bmRleFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDIpOworICAgIEdQ
UlJlZyBsZW5ndGhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKTsK
KyAgICBHUFJSZWcgdGVtcFJlZyA9IFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjA7CisK
KyAgICBqaXQuY2hlY2tKU1N0cmluZ0FyZ3VtZW50KCp2bSwgdGhpc1JlZyk7CisKKyAgICAvLyBM
b2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2Fk
aW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAorICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNl
dCgpKSwgbGVuZ3RoUmVnKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0aGlzUmVnLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nVmFsdWVPZmZzZXQoKSksIHRlbXBSZWcp
OworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6
Olplcm8sIHRlbXBSZWcpKTsKKworICAgIC8vIGxvYWQgaW5kZXgKKyAgICBqaXQubW92ZShhcmd1
bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgxKSwgaW5kZXhSZWcpOworICAgIGppdC5h
cHBlbmRGYWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50MzIoaW5kZXhSZWcpKTsKKworICAgIC8v
IERvIGFuIHVuc2lnbmVkIGNvbXBhcmUgdG8gc2ltdWx0YW5lb3VzbHkgZmlsdGVyIG5lZ2F0aXZl
IGluZGljZXMgYXMgd2VsbCBhcyBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgIGppdC5h
cHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleFJlZywgbGVuZ3RoUmVnKSk7CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBT
cGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlzdCBpczE2Qml0OworICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQ6Okp1bXBMaXN0IGNvbnQ4Qml0OworICAgIC8vIExvYWQgdGhlIHN0cmluZyBmbGFncwor
ICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBSZWcsIFN0cmluZ0lt
cGw6OmZsYWdzT2Zmc2V0KCkpLCBsZW5ndGhSZWcpOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXBSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHRlbXBS
ZWcpOworICAgIGlzMTZCaXQuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6
Olplcm8sIGxlbmd0aFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBs
OjpmbGFnSXM4Qml0KCkpKSk7CisgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgodGVtcFJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIHRlbXBS
ZWcpOworICAgIGNvbnQ4Qml0LmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICBpczE2Qml0Lmxpbmso
JmppdCk7CisgICAgaml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHRlbXBSZWcs
IGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCB0ZW1wUmVnKTsKKyAgICBj
b250OEJpdC5saW5rKCZqaXQpOworfQorI2Vsc2UKIHN0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2Fk
KFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtKQogewogICAgIC8vIGxvYWQgc3RyaW5n
CkBAIC01NjUsNiArNzU2LDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6
ZWRUaAogICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1i
bGVyOjpUaW1lc1R3bywgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBjb250
OEJpdC5saW5rKCZqaXQpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIGNoYXJUb1N0cmluZyhT
cGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgc3JjLCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkc3QsIE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIHNjcmF0Y2gpCiB7CkBAIC01NzQsMzQgKzc2Niw2OSBAQCBzdGF0aWMgdm9pZCBj
aGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVuCiAgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGRzdCkpOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0LCB2
bSk7CisgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAp
OworICAgIGppdC5saW5rRmFpbHVyZUhlcmUoKTsKKyAgICBqaXQuc3BpbGxBcmd1bWVudFJlZ2lz
dGVyc1RvRnJhbWUoMiwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHkpOworICAgIGppdC5h
cHBlbmRGYWlsdXJlKGppdC5qdW1wKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQ29kZUF0Iik7CisjZWxzZQogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBzdHJpbmdDaGFyTG9hZChqaXQs
IHZtKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
ICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2
bSksICJjaGFyQ29kZUF0Iik7CisjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNo
YXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjaGFyQXRU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJs
eUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5SZWdpc3RlcnMp
OworICAgIHN0cmluZ0NoYXJMb2FkUmVnQ2FsbChqaXQsIHZtKTsKKyAgICBjaGFyVG9TdHJpbmco
aml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KDMpKTsKKyAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZh
bHVlR1BSKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7CisgICAgaml0LnNwaWxsQXJndW1l
bnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxFeGFjdGx5KTsKKyAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckF0Iik7CisjZWxzZQog
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBzdHJpbmdDaGFyTG9hZChq
aXQsIHZtKTsKICAgICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMSk7CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7
CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImNoYXJBdCIpOworI2VuZGlmCiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmcm9t
Q2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZnJv
bUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAxKTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6
U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgLy8g
bG9hZCBjaGFyIGNvZGUKKyAgICBqaXQubW92ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudCgxKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCk7CisgICAgaml0LmFw
cGVuZEZhaWx1cmUoaml0LmVtaXRKdW1wSWZOb3RJbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpu
b25BcmdHUFIwKSk7CisKKyAgICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6bm9uQXJnR1BSMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuVmFsdWVHUFIsIGFy
Z3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KDMpKTsKKyAgICBqaXQucmV0dXJuSlND
ZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSKTsKKyAgICBqaXQubGlua0Zh
aWx1cmVIZXJlKCk7CisgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFz
c2VtYmx5SGVscGVyczo6U3BpbGxBbGwpOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5qdW1w
KCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWls
Q2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKKyNlbHNlCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxBbGwpOwogICAgIC8vIGxvYWQgY2hh
ciBjb2RlCiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKICAgICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMSk7CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7
CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImZyb21DaGFyQ29kZSIpOworI2VuZGlmCiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjbHoz
MlRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2
bSwgMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50QXJnSnVtcDsKQEAgLTYyMiwx
MSArODQ5LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG8KICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0p
LCAiY2x6MzIiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRv
cihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQu
c3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZl
Q2FsbCh2bSk7CiAKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuc3Fy
dERvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwKTsKQEAgLTc4MiwxMiArMTAwOSwxMiBAQCBkZWZpbmVVbmFyeURvdWJsZU9wV3Jh
cHBlcih0cnVuYyk7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgaGFsZkNvbnN0YW50ID0gMC41Owog
ICAgIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
SklURW50cnlQb2ludHNXaXRoUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub25JbnRKdW1wOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpIHx8ICFq
aXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2
ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVD
YWxsKHZtKTsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CiAgICAgbm9uSW50SnVtcC5saW5rKCZqaXQpOwpAQCAtODI1LDExICsx
MDUyLDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJhdG8KICAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAi
Zmxvb3IiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihW
TSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2VpbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
IHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURv
dWJsZU9wV3JhcHBlcihjZWlsKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+
aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm9uSW50SnVtcDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCk7CkBAIC04NDgsMTEgKzEwNzUsMTEgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcgogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjZWlsIik7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYykg
fHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5h
dGl2ZUNhbGwodm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAg
aml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25J
bnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwpAQCAtODcxLDExICsxMDk4LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5r
R2VuZXJhdG8KICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
VGFpbENhbGwodm0pLCAidHJ1bmMiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5k
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsK
ICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGpzUm91bmQpIHx8ICFqaXQuc3VwcG9ydHNG
bG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsK
KyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0
LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTkwNSwzNyArMTEz
MiwzNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvCiAgICAgcmV0
dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJv
dW5kIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRvcihWTSog
dm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewog
ICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhwKSkKLSAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRy
eU5hdGl2ZUNhbGwodm0pOwogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAg
ICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRy
eU5hdGl2ZUNhbGwodm0pOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGpp
dC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVy
KGV4cCkpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdU
MCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxD
YWxsKHZtKSwgImV4cCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVi
cy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2
bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5qaXRTdHVi
cy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
KTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJs
ZU9wV3JhcHBlcihsb2cpKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtK
SVQ6OmZwUmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVUYWlsQ2FsbCh2bSksICJsb2ciKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFi
c1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBhYnNUaHVua0dl
bmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwog
ICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpKQotICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmpp
dEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHVuc2lnbmVk
IHZpcnR1YWxSZWdpc3RlckluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKQEAg
LTk4OCw3ICsxMjE1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9y
KAogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2Fs
bCh2bSksICJhYnMiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVy
YXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMik7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm9uSW50QXJnMEp1bXA7CkBAIC0xMDE5LDExICsxMjQ2LDExIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IKICAgICByZXR1cm4gaml0LmZp
bmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiaW11bCIpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBT
cGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMCk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9h
dGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAg
ICAgICAgcmV0dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgaml0LmVtaXRSYW5kb21UaHVuayhTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMywgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6ZnBSZWdUMCk7CkBAIC0xMDMxLDE2ICsxMjU4LDIyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiByYW5kb21UaHVua0dlbmVyYXQKIAogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJyYW5kb20iKTsKICNlbHNlCi0gICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVu
dHJ5TmF0aXZlQ2FsbCh2bSk7CiAjZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50
c1dpdGhSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSkKIHsK
LSAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwor
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVzOworCisgICAgaml0LnNwaWxs
QXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKICAgICAKLSAgICBqaXQu
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpMYWJlbCBz
dGFja0FyZ3NFbnRyeSgmaml0KTsKICAgICAKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKwogICAgIC8vIFNldCB1cCBvdXIgY2FsbCBmcmFtZS4KICAgICBqaXQuc3RvcmVQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CiAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpKTsKQEAgLTExMTAsMjAgKzEzNDMsMjMgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgogICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
aml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5
Q2hlY2tGb3IoQ29kZUZvckNhbGwpKSwKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBFeGVj
dXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZvcihDb2RlRm9yQ2FsbCwgU3RhY2tBcmdzTXVzdENo
ZWNrQXJpdHkpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgIENDYWxsSGVscGVyczo6
SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCkpOwogICAgIAogICAgIGVtaXRQb2ludGVyVmFs
aWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdU
MCk7CiAgICAgCiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgp
OwotICAgIAotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKLSAgICBsaW5rQnVmZmVyLmxpbmsobm9Db2RlLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncyh2bSkpKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAgICAgICAgbGlua0J1ZmZlciwgKCJTcGVjaWFsaXplZCB0
aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2FsbHMgd2l0aCBubyBhcmd1bWVudHMiKSk7CisKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZXMsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtKSkpOworCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTcGVj
aWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2FsbHMgd2l0aCBubyBhcmd1bWVudHMi
KSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mKHN0YWNrQXJnc0VudHJ5KTsKKworICAgIHJldHVybiBKSVRFbnRyeVBvaW50
c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVm
LmNvZGUoKSwgc3RhY2tFbnRyeVB0ciwgc3RhY2tFbnRyeVB0cik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKyNpbmNsdWRlICJKSVRF
bnRyeVBvaW50cy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUo
SklUKQpAQCAtMzYsMzQgKzM3LDM1IEBAIGNsYXNzIENhbGxMaW5rSW5mbzsKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0qKTsK
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmsoVk0qLCBDYWxsTGlua0luZm8m
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3Jw
aGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0
aFJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZiBsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRKU0NhbGxU
aHVua0VudHJ5UG9pbnRzV2l0aFJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTSosIENhbGxM
aW5rSW5mbyYpOworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdmlydHVhbFRodW5r
Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVD
YWxsR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3RydWN0
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRv
cihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihW
TSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxsR2VuZXJhdG9yKFZNKik7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2Vu
ZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvcihW
TSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHVucmVhY2hhYmxlR2VuZXJhdG9yKFZNKik7CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNsejMyVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRo
dW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJhdG9yKFZNKik7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11
bFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZN
Kik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVm
IGNlaWxUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRodW5r
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgZmxvb3JUaHVua0dlbmVyYXRv
cihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKik7CitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQ
b2ludHNXaXRoUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRo
UmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHJhbmRv
bVRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgdHJ1bmNUaHVua0dl
bmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVu
Y3Rpb25DYWxsR2VuZXJhdG9yKFZNKiB2bSk7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYm91bmRU
aGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKik7CiAKIH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMjYg
QEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2bQogICAgIGlmICh2bS5j
YW5Vc2VKSVQoKSkgewogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAg
ICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dl
bmVyYXRvciksIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAg
ICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgICAgIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZih2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxs
RW50cnlUaHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVy
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdl
dENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zih2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRv
ciksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3Rl
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0
aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwK
KyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICB2bS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKSksCisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNTks
MTIgKzczLDI2IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0KICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0
cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2spLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAg
ICAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTElu
dENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2spLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwKKyAg
ICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC03Miwx
NCArMTAwLDI4IEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ28KICNp
ZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2
bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJl
ZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihl
dmFsRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9l
dmFsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSkuY29kZSgpKSwKKyAgICAgICAgICAgIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC04NywxNCArMTI5LDI4IEBAIHN0YXRp
YyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwKICNpZiBFTkFCTEUoSklUKQogICAg
IGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZSgKKyAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1
Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAg
ICAgdm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLAorICAg
ICAgICAgICAgICAgIHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUoCisgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTElu
dENvZGVQdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSkpLAorICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3Rh
dGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKQEAgLTEwMiwxNCArMTU4LDI4IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dy
YW1FbnRyeXBvaW50KFYKICNpZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkg
ewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2Vu
ZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAg
ICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvciksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAg
ICAgICAgICAgIHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklU
Q29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUp
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsK
KyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAor
ICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogdm9pZCBzZXRF
bnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwOTYy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3Myw5ICszNzMsOSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGVudHJ5T1NSKEV4ZWNTCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJPU1Ig
ZW50cnkiLCAoImluIHByb2xvZ3VlIikpOwogICAgIAogICAgIGlmIChraW5kID09IFByb2xvZ3Vl
KQotICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRh
YmxlQWRkcmVzcygpLCAwKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmpp
dENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5l
eGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKICAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsK
LSAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2Fs
bChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CisgICAgTExJTlRfUkVU
VVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogfQogI2Vsc2UgLy8gRU5BQkxF
KEpJVCkKIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiwgRW50cnlL
aW5kKQpAQCAtMTI5Miw3ICsxMjkyLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRV
cENhbGwoRXhlYwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24o
KSkgewotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBN
dXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKICAgICB9IGVsc2UgewogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC0xMzA2LDEyICsxMzA2LDEyIEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIExM
SU5UX0NBTExfVEhST1coZXhlYywgZXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJs
b2NrU2xvdDsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIEFyaXR5Q2hlY2tN
b2RlIGFyaXR5OworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CiAgICAgICAgIGlm
IChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9
IE11c3RDaGVja0FyaXR5OworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzTXVzdENo
ZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05v
dFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIGFyaXR5KTsKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0Fy
aXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0KIAogICAgIEFTU0VSVCgh
IWNvZGVQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeQogCiBuYW1lc3BhY2UgTExJbnQgewog
Ci1zdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZN
KiB2bSwgdm9pZCAoKnRhcmdldCkoKSwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQorZW51bSBTaG91
bGRDcmVhdGVSZWdpc3RlckVudHJ5IHsgQ3JlYXRlUmVnaXN0ZXJFbnRyeSwgRG9udENyZWF0ZVJl
Z2lzdGVyRW50cnkgfTsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5r
S2luZCwgU2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSBzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5
ID0gRG9udENyZWF0ZVJlZ2lzdGVyRW50cnkpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZt
KTsKLSAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKHNob3VsZENyZWF0ZVJlZ2lz
dGVyRW50cnkgPT0gQ3JlYXRlUmVnaXN0ZXJFbnRyeSkKKyAgICAgICAgaml0LnNwaWxsQXJndW1l
bnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkpOworI2VuZGlmCisKICAgICAvLyBGSVhNRTog
dGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5v
dCBzdXJlIEkgY2FyZS4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOwog
ICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CkBAIC02MywyNCArNzIsNDQgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtL
aW5kKSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJl
Z2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJncyBj
YWxsIiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3Igc3RhY2sg
YXJncyBjYWxsIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lz
dGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCAiZnVuY3Rpb24gZm9yIHJlZ2lzdGVy
IGFyZ3MgY29uc3RydWN0IiwgQ3JlYXRlUmVnaXN0ZXJFbnRyeSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihW
TSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUp
LCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY29uc3RydWN0Iik7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTElu
dDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwg
ImZ1bmN0aW9uIGZvciBjYWxsIik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNhbGwgd2l0aCBhcml0eSBj
aGVjayIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTElu
dDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3Igc3RhY2sgYXJncyBjYWxsIHdpdGgg
YXJpdHkgY2hlY2siKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0
Q29kZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgImZ1
bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJn
cyBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3Rh
Y2tDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciBj
b25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0cnVj
dCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50
cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0MiwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVudHJ5CiAKIG5hbWVzcGFjZSBM
TEludCB7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1vZHVs
ZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIEFyaXR5Q2hl
Y2tNb2RlIHsKKyAgICBSZWdpc3RlckVudHJ5LAogICAgIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCwK
ICAgICBNdXN0Q2hlY2tBcml0eQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsOCArNTQsOCBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUoKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IG51bGxwdHI7CiAgICAgbV9qaXRD
b2RlRm9yQ29uc3RydWN0ID0gbnVsbHB0cjsKLSAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKLSAgICBtX2ppdENvZGVGb3JDb25zdHJ1
Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgIG1faml0RW50
cmllc0ZvckNhbGwuY2xlYXJFbnRyaWVzKCk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0
LmNsZWFyRW50cmllcygpOwogI2VuZGlmCiAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IE5V
TV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1
Y3QgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBcml0
eUNoZWNrTW9kZS5oIgogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
SGFzaC5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTM0LDYgKzMz
LDcgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUu
aCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNs
dWRlICJUeXBlU2V0LmgiCkBAIC0xNDUsNDcgKzE0NSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CiAgICAgfQogICAgIAotICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCwgQXJpdHlDaGVja01vZGUgYXJpdHkpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVu
dHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBFbnRyeVBvaW50VHlwZSBl
bnRyeVR5cGUpCiAgICAgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY2FjaGVkIHJl
c3VsdC4gV2Ugb25seSBoYXZlIGl0IGZvciBhcml0eSBjaGVjayBiZWNhdXNlIHdlIHVzZSB0aGUK
ICAgICAgICAgLy8gbm8tYXJpdHkgZW50cnlwb2ludCBpbiBub24tdmlydHVhbCBjYWxscywgd2hp
Y2ggd2lsbCAiY2FjaGUiIHRoaXMgdmFsdWUgZGlyZWN0bHkgaW4KICAgICAgICAgLy8gbWFjaGlu
ZSBjb2RlLgotICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAg
ICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVj
dDoKLSAgICAgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAg
ICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRFbnRyaWVzRm9yQ2Fs
bC5lbnRyeUZvcihlbnRyeVR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAg
ICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdEVudHJpZXNGb3JD
b25zdHJ1Y3QuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHJlc3VsdCA9Ci0gICAgICAgICAgICBnZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQp
LT5hZGRyZXNzRm9yQ2FsbChhcml0eSk7Ci0gICAgICAgIGlmIChhcml0eSA9PSBNdXN0Q2hlY2tB
cml0eSkgewotICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBuZWNlc3Nh
cnkgZm9yIHRoZSBKSVQncyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZCkgewotICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAg
ICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSByZXN1bHQ7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAg
ICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSByZXN1bHQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBnZW5l
cmF0ZWRKSVRDb2RlRm9yKGtpbmQpLT5hZGRyZXNzRm9yQ2FsbChlbnRyeVR5cGUpOworICAgICAg
ICAvLyBDYWNoZSB0aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZp
cnR1YWwgY2FsbCBvcHRpbWl6YXRpb25zLgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAg
ICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgICAgIG1faml0RW50cmllc0ZvckNhbGwuc2V0
RW50cnlGb3IoZW50cnlUeXBlLCByZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAgICAgICAgIG1faml0RW50cmllc0ZvckNvbnN0
cnVjdC5zZXRFbnRyeUZvcihlbnRyeVR5cGUsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAgIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRW50
cnlGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBFbnRyeVBvaW50VHlwZSBlbnRyeVBv
aW50VHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAgICBjYXNlIENv
ZGVGb3JDYWxsOgotICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxl
QmFzZSwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0RW50cmllc0ZvckNhbGwpICsg
SklURW50cnlQb2ludHM6Om9mZnNldE9mRW50cnlGb3IoZW50cnlQb2ludFR5cGUpOwogICAgICAg
ICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2pp
dEVudHJpZXNGb3JDb25zdHJ1Y3QpICsgSklURW50cnlQb2ludHM6Om9mZnNldE9mRW50cnlGb3Io
ZW50cnlQb2ludFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjMzLDggKzIyOCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0
Q29kZUZvckNhbGw7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNvbnN0cnVjdDsK
LSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjazsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDYWxsOworICAgIEpJ
VEVudHJ5UG9pbnRzIG1faml0RW50cmllc0ZvckNvbnN0cnVjdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm8KICAgICBFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CiAg
ICAgaWYgKGV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3JDYWxsKCkpIHsKICAgICAgICAgLy8gRm9y
Y2UgdGhlIGV4ZWN1dGFibGUgdG8gY2FjaGUgaXRzIGFyaXR5IGVudHJ5cG9pbnQuCi0gICAgICAg
IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RDaGVja0FyaXR5KTsK
KyAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgU3RhY2tBcmdz
TXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAg
dm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTQogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICBtX2ppdENvZGVGb3JDYWxsID0gY2FsbFRodW5rOwogICAgIG1f
aml0Q29kZUZvckNvbnN0cnVjdCA9IGNvbnN0cnVjdFRodW5rOwotICAgIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKE11c3RD
aGVja0FyaXR5KTsKLSAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IG1f
aml0Q29kZUZvckNvbnN0cnVjdC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOworICAg
IG1faml0RW50cmllc0ZvckNhbGwuc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHks
IG1faml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5
KSk7CisgICAgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LnNldEVudHJ5Rm9yKFN0YWNrQXJnc011
c3RDaGVja0FyaXR5LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JDYWxsKFN0YWNr
QXJnc011c3RDaGVja0FyaXR5KSk7CiAgICAgbV9uYW1lID0gbmFtZTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJ
KHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTIgKzEzOSwxMiBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2CiAgICAgc3dpdGNoIChraW5kKSB7
CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGdlbmVy
aWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRyOwotICAg
ICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICAgICAgbV9qaXRFbnRyaWVzRm9yQ2FsbC5jbGVhckVudHJpZXMoKTsKICAgICAg
ICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKICAgICAgICAgbV9qaXRD
b2RlRm9yQ29uc3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPmpp
dENvZGUoKSA6IG51bGxwdHI7Ci0gICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmllc0Zv
ckNvbnN0cnVjdC5jbGVhckVudHJpZXMoKTsKICAgICAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ29u
c3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSA6IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjgyLDYgKzI4Miw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVw
bGFjZW0KIAogc3RhdGljIHZvaWQgc2V0dXBMTEludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogeworICAgIGNvZGVCbG9jay0+c2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCk7CiAgICAg
TExJbnQ6OnNldEVudHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CiB9CiAKQEAgLTI4OSw2ICsyOTAs
NyBAQCBzdGF0aWMgdm9pZCBzZXR1cEpJVChWTSYgdm0sIENvZGVCbG9jayogCiB7CiAjaWYgRU5B
QkxFKEpJVCkKICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBKSVQ6OmNvbXBpbGUoJnZt
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOworICAgIGNvZGVCbG9jay0+
c2V0UHJlZmVyc1N0YWNrQXJndW1lbnRzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ID09
IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyMDk2MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMCw2ICsyMTAsMTAgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpv
bmVTaXplKCkpOwogICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAKKyNpZiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgY2xlYXJDb3VudGVycygpOworI2VuZGlmCisKICAgICAv
LyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVyZQog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBleGlz
dGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudEF0
b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOwpAQCAtNDc2LDcgKzQ4MCw3IEBA
IFNhbXBsaW5nUHJvZmlsZXImIFZNOjplbnN1cmVTYW1wbGluZ1Byb2YKICNlbmRpZiAvLyBFTkFC
TEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICNpZiBFTkFCTEUoSklUKQotc3RhdGljIFRodW5rR2Vu
ZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCitz
dGF0aWMgSklURW50cnlHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmlu
c2ljIGludHJpbnNpYykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2UgQ2hh
ckNvZGVBdEludHJpbnNpYzoKQEAgLTkyMyw0ICs5MjcsMzUgQEAgdm9pZCBWTTo6dmVyaWZ5RXhj
ZXB0aW9uQ2hlY2tOZWVkSXNTYXRpcwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRF
UlMpCit2b2lkIFZNOjpjbGVhckNvdW50ZXJzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTnVtYmVyVk1Db3VudGVyOyBpKyspCisgICAgICAgIG1fY291bnRlcnNbaV0gPSAwOwor
fQorCit2b2lkIFZNOjpkdW1wQ291bnRlcnMoKQoreworICAgIHNpemVfdCB0b3RhbENhbGxzID0g
Y291bnRlckZvcihCYXNlbGluZUNhbGxlcikgKyBjb3VudGVyRm9yKERGR0NhbGxlcikgKyBjb3Vu
dGVyRm9yKEZUTENhbGxlcik7CisgICAgZGF0YUxvZygiIyMjIyBWTSBDYWxsIGNvdW50ZXJzICMj
IyNcbiIpOworICAgIGRhdGFMb2dGKCIlMTB6dSBUb3RhbCBjYWxsc1xuIiwgdG90YWxDYWxscyk7
CisgICAgZGF0YUxvZ0YoIiUxMHp1IEJhc2VsaW5lIGNhbGxzXG4iLCBjb3VudGVyRm9yKEJhc2Vs
aW5lQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IERGRyBjYWxsc1xuIiwgY291bnRlckZv
cihERkdDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgRlRMIGNhbGxzXG4iLCBjb3VudGVy
Rm9yKEZUTENhbGxlcikpOworICAgIGRhdGFMb2dGKCIlMTB6dSBWYXJhcmcgY2FsbHNcbiIsIGNv
dW50ZXJGb3IoQ2FsbFZhcmFyZ3MpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVGFpbCBjYWxsc1xu
IiwgY291bnRlckZvcihUYWlsQ2FsbCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBFdmFsIGNhbGxz
XG4iLCBjb3VudGVyRm9yKENhbGxFdmFsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IERpcmVjdCBj
YWxsc1xuIiwgY291bnRlckZvcihEaXJlY3RDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFBv
bHltb3JwaGljIGNhbGxzXG4iLCBjb3VudGVyRm9yKFBvbHltb3JwaGljQ2FsbCkpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBWaXJ0dWFsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxDYWxsKSk7
CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgc2xvdyBjYWxsc1xuIiwgY291bnRlckZvcihW
aXJ0dWFsU2xvd0NhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJncyBubyBh
cml0eVxuIiwgY291bnRlckZvcihSZWdBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6
dSBTdGFjayBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFN0YWNrQXJnc05vQXJpdHkpKTsK
KyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJncyBleHRyYSBhcml0eVxuIiwgY291bnRl
ckZvcihSZWdBcmdzRXh0cmEpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUmVnaXN0ZXIgYXJncyBh
cml0eSBjaGVja1xuIiwgY291bnRlckZvcihSZWdBcmdzQXJpdHkpKTsKKyAgICBkYXRhTG9nRigi
JTEwenUgU3RhY2sgYXJncyBhcml0eSBjaGVja1xuIiwgY291bnRlckZvcihTdGFja0FyZ3NBcml0
eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBBcml0eSBmaXh1cHMgcmVxdWlyZWRcbiIsIGNvdW50
ZXJGb3IoQXJpdHlGaXh1cFJlcXVpcmVkKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzMCw2ICs0MzAsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGppdFN0dWJz
LT5jdGlTdHViKHRoaXMsIGdlbmVyYXRvcik7CiAgICAgfQorCisgICAgSklURW50cnlQb2ludHNX
aXRoUmVmIGdldEpJVEVudHJ5U3R1YihKSVRFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCisgICAg
eworICAgICAgICByZXR1cm4gaml0U3R1YnMtPmppdEVudHJ5U3R1Yih0aGlzLCBnZW5lcmF0b3Ip
OworICAgIH0KKworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGdldEpJVENh
bGxUaHVua0VudHJ5U3R1YihKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0b3IpCisg
ICAgeworICAgICAgICByZXR1cm4gaml0U3R1YnMtPmppdENhbGxUaHVua0VudHJ5U3R1Yih0aGlz
LCBnZW5lcmF0b3IpOworICAgIH0KICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+IGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHM7CiAgICAgCkBAIC01NzIs
NiArNTgyLDUwIEBAIHB1YmxpYzoKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFs
bG9jYXRvcjsKICAgICBDb25jdXJyZW50SlNMb2NrIG1fcmVnRXhwQWxsb2NhdG9yTG9jazsKIAor
ICAgIGVudW0gVk1Db3VudGVyVHlwZSB7CisgICAgICAgIEJhc2VsaW5lQ2FsbGVyLAorICAgICAg
ICBERkdDYWxsZXIsCisgICAgICAgIEZUTENhbGxlciwKKyAgICAgICAgQ2FsbFZhcmFyZ3MsCisg
ICAgICAgIFRhaWxDYWxsLAorICAgICAgICBDYWxsRXZhbCwKKyAgICAgICAgRGlyZWN0Q2FsbCwK
KyAgICAgICAgUG9seW1vcnBoaWNDYWxsLAorICAgICAgICBWaXJ0dWFsQ2FsbCwKKyAgICAgICAg
VmlydHVhbFNsb3dDYWxsLAorICAgICAgICBSZWdBcmdzTm9Bcml0eSwKKyAgICAgICAgU3RhY2tB
cmdzTm9Bcml0eSwKKyAgICAgICAgUmVnQXJnc0V4dHJhLAorICAgICAgICBSZWdBcmdzQXJpdHks
CisgICAgICAgIFN0YWNrQXJnc0FyaXR5LAorICAgICAgICBBcml0eUZpeHVwUmVxdWlyZWQsCisg
ICAgICAgIE51bWJlclZNQ291bnRlcgorICAgIH07CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMp
CisgICAgc2l6ZV90IG1fY291bnRlcnNbTnVtYmVyVk1Db3VudGVyXTsKKworICAgIHZvaWQgY2xl
YXJDb3VudGVycygpOworCisgICAgc2l6ZV90KiBhZGRyZXNzT2ZDb3VudGVyKFZNQ291bnRlclR5
cGUgY291bnRlclR5cGUpCisgICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVy
Vk1Db3VudGVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJu
ICZtX2NvdW50ZXJzW2NvdW50ZXJUeXBlXTsKKyAgICB9CisKKyAgICBzaXplX3QgY291bnRlckZv
cihWTUNvdW50ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ZXJU
eXBlID49IE51bWJlclZNQ291bnRlcikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIG1fY291bnRlcnNbY291bnRlclR5cGVdOworICAgIH0KKworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcENvdW50ZXJzKCk7CisjZW5kaWYKKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxIYXNPd25Qcm9wZXJ0eUNhY2hlPiBtX2hhc093blByb3BlcnR5Q2FjaGU7CiAg
ICAgQUxXQVlTX0lOTElORSBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBoYXNPd25Qcm9wZXJ0eUNhY2hl
KCkgeyByZXR1cm4gbV9oYXNPd25Qcm9wZXJ0eUNhY2hlLmdldCgpOyB9CiAgICAgSGFzT3duUHJv
cGVydHlDYWNoZSogZW5zdXJlSGFzT3duUHJvcGVydHlDYWNoZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNyArMTQ4LDcgQEAgV2FzbVRvSlNTdHViIGltcG9ydFN0dWJHZW5lcmF0b3IoVk0q
IHZtLAogICAgIC8vIEZJWE1FIFRhaWwgY2FsbCBpZiB0aGUgd2FzbSByZXR1cm4gdHlwZSBpcyB2
b2lkIGFuZCBubyByZWdpc3RlcnMgd2VyZSBzcGlsbGVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDg4CiAKICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGNhbGxMaW5rSW5mb3MuYWRkKCk7Ci0gICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2Fs
bExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKCksIGltcG9ydEpTQ2VsbEdQUlJlZyk7CisgICAg
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIENv
ZGVPcmlnaW4oKSwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKICAgICBKSVQ6OkRhdGFMYWJlbFB0ciB0
YXJnZXRUb0NoZWNrOwogICAgIEpJVDo6VHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSgw
KTsKICAgICBKSVQ6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgaW1wb3J0SlNDZWxsR1BSUmVnLCB0YXJnZXRUb0NoZWNrLCBp
bml0aWFsUmlnaHRWYWx1ZSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgV2FzbVRvSlNTdHViIGltcG9y
dFN0dWJHZW5lcmF0b3IoVk0qIHZtLAogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcGF0Y2hCdWZmZXIu
bGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIodm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxp
bmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKTsKICAgICBDb2RlTG9jYXRpb25MYWJl
bCBob3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZih0YXJnZXRUb0NoZWNrKSk7CiAg
ICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjk1LDYg
KzY5NSw5IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIFRoaXMgZW5hYmxl
cyBwZXIgVk0gY291bnRlcnMgYXZhaWxhYmxlIGZvciB1c2UgYnkgSklUJ2VkIGNvZGUuICovCisj
ZGVmaW5lIEVOQUJMRV9WTV9DT1VOVEVSUyAwCisKIC8qIFRoZSBGVEwgKmRvZXMgbm90KiB3b3Jr
IG9uIDMyLWJpdCBwbGF0Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21lb25lIGFza2VkIHVz
IHRvIGVuYWJsZSBpdC4gKi8KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI3VuZGVmIEVOQUJMRV9G
VExfSklUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296726</attachid>
            <date>2016-12-09 15:45:56 -0800</date>
            <delta_ts>2016-12-09 16:55:10 -0800</delta_ts>
            <desc>Patch for Review</desc>
            <filename>160355.patch</filename>
            <type>text/plain</type>
            <size>360386</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDk2MzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI0IEBACisyMDE2LTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIEpTVkFMVUU2NDogUGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0g
YXJndW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFraW5nIEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBtaWNyb2JlbmNobWFy
a3MgdG8gbWVhc3VyZSBjYWxsIHR5cGUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2FsbGluZy1jb21wdXRlZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNhbGxlZXMuanM6IEFkZGVkLgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktY2FsbGVlcy5qczogQWRkZWQuCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctcG9seS1leHRyYS1hcml0eS1jYWxsZWVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1m
aXh1cC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGlu
Zy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMuanM6
IEFkZGVkLgorCiAyMDE2LTEyLTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGltcG9ydGluZyBhbmQgZGVm
aW5pbmcgTWVtb3J5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1
dGVkLWFyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1jb21wdXRlZC1hcmdzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACitmdW5jdGlvbiBzdW0yKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lu
bGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMmIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTJiKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAg
IHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBzdW0z
YihhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTNi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IG8xID0geworICAgICAgICBvbmU6IDEs
CisgICAgICAgIHR3bzogMgorICAgIH0KKyAgICBsZXQgbzIgPSB7CisgICAgICAgIHRocmVlOiAz
LAorICAgICAgICBmaXZlOiA1CisgICAgfTsKKyAgICBsZXQgbzMgPSB7CisgICAgICAgIGZvdXI6
IDQsCisgICAgICAgIHNpeDogNgorICAgIH07CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIobzEu
b25lLCBvMi5maXZlKSArIHN1bTJiKG8xLnR3bywgbzEub25lICsgbzIuZml2ZSkKKyAgICAgICAg
ICAgICsgc3VtMyhvMi50aHJlZSwgbzMuZm91ciwgbzIuZml2ZSkgKyBzdW0zYihvMS50d28sIG8y
LnRocmVlICsgbzIuZml2ZSwgbzMuc2l4KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xl
dCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVj
dGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctbWFueS1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2NhbGxpbmctbWFueS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NhbGxpbmctbWFueS1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDAgQEAKK2Z1bmN0aW9uIHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9
CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVy
biBhICsgYiArIGI7Cit9CisKK25vSW5saW5lKHN1bTJiKTsKKworZnVuY3Rpb24gc3VtMyhhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitm
dW5jdGlvbiBzdW0zYihhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGIgKyBjOworfQor
Citub0lubGluZShzdW0zYik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgaSsrKQorICAgICAgICByZXN1
bHQgPSBzdW0yKDEsIDIpICsgc3VtMmIoMiwgMykgKyBzdW0zKDUsIDUsIDUpICsgc3VtM2IoMiwg
NCwgNik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4
ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
IEBACitmdW5jdGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQor
Citub0lubGluZShzdW0pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0
ID0gc3VtKDEsIDIsIDMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9
IHRlc3QoKTsKK2lmIChyZXN1bHQgIT0gNikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6
ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1j
YWxsZWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1v
bmUtY2FsbGVlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctb25lLWNhbGxlZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5j
dGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGlu
ZShzdW0pOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9
IHN1bShhLCBiLCBjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0
ZXN0KDEsIDIsIDMpOworaWYgKHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
cG9seS1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctcG9seS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2NhbGxpbmctcG9seS1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzUgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOwor
fQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJl
dHVybiBiICsgYSArIGM7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEs
IGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisK
K2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMgXTsKKworZnVuY3Rpb24gdGVzdChh
LCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
NDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDNdKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMw
KTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsg
cmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWV4dHJh
LWFyaXR5LWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1wb2x5LWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rpb24gc3VtMShhLCBiKQorewor
ICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIo
YSwgYikKK3sKKyAgICByZXR1cm4gYiArIGE7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5j
dGlvbiBzdW0zKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW0z
KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0
ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwg
YiwgYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCA0
MCwgIlRlc3QiKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVz
dWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10
YWlsY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5n
LXRhaWxjYWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctdGFpbGNhbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorInVzZSBz
dHJpY3QiOworCitmdW5jdGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBj
OworfQorCitub0lubGluZShzdW0pOworCitmdW5jdGlvbiB0YWlsQ2FsbGVyKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIHN1bShiLCBhLCBjKTsKK30KKworbm9JbmxpbmUodGFpbENhbGxlcik7CisK
K2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gdGFpbENhbGxl
cihhLCBiLCBjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0
KDEsIDIsIDMpOworaWYgKHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3Vs
dDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmly
dHVhbC1hcml0eS1maXh1cC1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1maXh1cC1jYWxsZWVzLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1m
aXh1cC1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9u
IHN1bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyAoYyB8IDApOworfQorCitub0lu
bGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJldHVybiBiICsg
YSArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7
CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBi
OworfQorCitub0lubGluZShzdW00KTsKKworZnVuY3Rpb24gc3VtNShhLCBiLCBjKQoreworICAg
IHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlv
biBzdW02KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQs
IHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiKQoreworICAgIGxldCByZXN1bHQg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1
bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgNDApOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAi
VW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtc3RhY2thcmdzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1maXh1cC1z
dGFja2FyZ3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIGEg
KyBiICsgYyArIChkIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0y
KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYyArIChkIHwgMCk7Cit9CisKK25v
SW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJu
IChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBz
dW00KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisK
K25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMsIGQpCit7CisgICAgcmV0
dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlv
biBzdW02KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9
CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0z
LCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBs
ZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpz
CShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIHN1
bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGluZShzdW0x
KTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJldHVybiBiICsgYSArIGM7Cit9
CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0
dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwg
YiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW00KTsKKwor
ZnVuY3Rpb24gc3VtNShhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7Cit9CisKK25v
SW5saW5lKHN1bTUpOworCitmdW5jdGlvbiBzdW02KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMg
KyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEs
IHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBj
KQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAw
MDsgaSsrKQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lm
IChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFy
aXR5LWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiKQor
eworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1
bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYiArIGE7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitm
dW5jdGlvbiBzdW0zKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShz
dW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKwor
bm9JbmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYikKK3sKKyAgICByZXR1cm4gYSAr
IGI7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlvbiBzdW02KGEsIGIpCit7CisgICAg
cmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsg
c3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEs
IGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0
MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCg0MCwgMiwgIlRl
c3QiKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2Mjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDEwIEBACisyMDE2LTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAg
ICBKU1ZBTFVFNjQ6IFBhc3MgYXJndW1lbnRzIGluIHBsYXRmb3JtIGFyZ3VtZW50IHJlZ2lzdGVy
cyB3aGVuIG1ha2luZyBKYXZhU2NyaXB0IGNhbGxzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHBhc3NpbmcgSmF2
YVNjcmlwdCBmdW5jdGlvbiBhcmd1bWVudHMgaW4gcmVnaXN0ZXJzIGZvciA2NCBiaXQgcGxhdGZv
cm1zLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRlZCBjb252ZW50aW9uIGZvbGxvd3MgdGhlIEFC
SSBjb252ZW50aW9ucyBmb3IgdGhlIGFzc29jaWF0ZWQgcGxhdGZvcm0uCisgICAgICAgIFRoZSBm
aXJzdCB0d28gYXJndW1lbnRzIGFyZSB0aGUgY2FsbGVlIGFuZCBhcmd1bWVudCBjb3VudCwgdGhl
IHJlc3Qgb2YgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycworICAgICAgICBjb250YWluICJ0aGlzIiBh
bmQgZm9sbG93aW5nIGFyZ3VtZW50IHVudGlsIGFsbCBwbGF0Zm9ybSBhcmd1bWVudCByZWdpc3Rl
cnMgYXJlIGV4aGF1c3RlZC4KKyAgICAgICAgQXJndW1lbnRzIGJleW9uZCB3aGF0IGZpdCBpbiBy
ZWdpc3RlcnMgYXJlIHBsYWNlZCBvbiB0aGUgc3RhY2sgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMK
KyAgICAgICAgYmVmb3JlIHRoaXMgcGF0Y2guCisKKyAgICAgICAgRm9yIFg4Ni02NCBub24tV2lu
ZG93cyBwbGF0Zm9ybXMsIHRoZXJlIGFyZSA2IGFyZ3VtZW50IHJlZ2lzdGVycyBzcGVjaWZpZWQg
aW4gdGhlIHJlbGF0ZWQgQUJJLgorICAgICAgICBBUk02NCBoYXMgaGFkIGFyZ3VtZW50IHJlZ2lz
dGVycy4gIFRoaXMgYWxsb3dzIGZvciA0IG9yIDYgcGFyYW1ldGVyIHZhbHVlcyB0byBiZSBwbGFj
ZWQgaW4KKyAgICAgICAgcmVnaXN0ZXJzIG9uIHRoZXNlIHJlc3BlY3RpdmUgcGxhdGZvcm1zLiAg
VGhpcyBwYXRjaCBkb2Vzbid0IGltcGxlbWVudCBwYXNzaW5nIGFyZ3VtZW50cyBpbgorICAgICAg
ICByZWdpc3RlcnMgZm9yIDMyIGJpdCBwbGF0Zm9ybSwgc2luY2UgbW9zdCBwbGF0Zm9ybXMgaGF2
ZSBhdCBtb3N0IDQgYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgICAgIHNwZWNpZmllZCBhbmQgMzIg
Yml0IHBsYXRmb3JtcyB1c2UgdHdvIDMyIGJpdCByZWdpc3RlcnMvbWVtb3J5IGxvY2F0aW9ucyB0
byBzdG9yZSBvbmUgSlNWYWx1ZS4KKworICAgICAgICBUaGUgY2FsbCBmcmFtZSBvbiB0aGUgc3Rh
Y2sgaW4gdW5jaGFuZ2VkIGluIGZvcm1hdCBhbmQgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNz
ZWQgaW4KKyAgICAgICAgcmVnaXN0ZXJzIHVzZSB0aGUgY29ycmVzcG9uZGluZyBjYWxsIGZyYW1l
IGxvY2F0aW9uIGFzIGEgc3BpbGwgbG9jYXRpb24uIEFyZ3VtZW50cyBjYW4KKyAgICAgICAgYWxz
byBiZSBwYXNzZWQgb24gdGhlIHN0YWNrLiBUaGUgTExJbnQsIGJhc2VsaW5lIEpJVCdlZCBjb2Rl
IGFzIHdlbGwgYXMgdGhlIGluaXRpYWwgZW50cnkKKyAgICAgICAgZnJvbSBDKysgY29kZSBiYXNl
IGFyZ3VtZW50cyBvbiB0aGUgc3RhY2suIERGRyBzIGFuZCBGVEwgZ2VuZXJhdGVkIGNvZGUgcGFz
cyBhcmd1bWVudHMKKyAgICAgICAgdmlhIHJlZ2lzdGVycy4gQWxsIGNhbGxlZXMgY2FuIGFjY2Vw
dCBhcmd1bWVudHMgZWl0aGVyIGluIHJlZ2lzdGVycyBvciBvbiB0aGUgc3RhY2suCisgICAgICAg
IFRoZSBjYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIG1vdmluZyBhcmd1bWVudCB0byBpdHMgcHJl
ZmVycmVkIGxvY2F0aW9uLgorCisgICAgICAgIFRoZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMgdG8g
SmF2YVNDcmlwdCBjb2RlIGlzIG5vdyBoYW5kbGVkIHZpYSB0aGUgSklURW50cnlQb2ludHMgY2xh
c3MgYW5kCisgICAgICAgIHJlbGF0ZWQgY29kZS4gIFRoYXQgY2xhc3Mgbm93IGhhcyBlbnRyaWVz
IGZvciBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgICAgIFN0YWNrQXJnc011
c3RDaGVja0FyaXR5IGFuZCBmb3IgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCByZWdpc3RlcnMgYXJn
dW1lbnRzLAorICAgICAgICBSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIFJlZ2lz
dGVyQXJnc011c3RDaGVja0FyaXR5IGFzIHdlbGwgYXMgYW5kIGFkZGl0aW9uYWwKKyAgICAgICAg
UmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MgZW50cnkgcG9pbnQgd2hlbiBleHRyYSByZWdp
c3RlcnMgYXJndW1lbnQgYXJlIHBhc3NlZC4KKyAgICAgICAgVGhpcyBsYXN0IGNhc2UgaXMgbmVl
ZGVkIHRvIHNwaWxsIHRob3NlIGV4dHJhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVzcG9uZGluZyBj
YWxsIGZyYW1lCisgICAgICAgIHNsb3RzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM0FyZ3VtZW50UmVnVmFsdWUu
aDoKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OkNhbGxMaW5rSW5mbyk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjphcmd1bWVu
dHNMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6YXJndW1lbnRzSW5SZWdp
c3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRQcmVmZXJzU3RhY2tBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByZWZlcnNTdGFja0FyZ3VtZW50cyk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2su
aDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFz
ZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0
aHJlYWRpbmdQaGFzZTo6c3BlY2lhbENhc2VBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNvbXB1dGVJc0ZsdXNoZWQpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bmVl
ZHNGbHVzaGVkVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFkZEltbWVkaWF0ZVNo
b3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFkZEpTRGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OkpTRGlyZWN0Q2FsbFJlY29yZDo6SlNEaXJlY3RDYWxsUmVjb3JkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6SlNEaXJlY3RDYWxsUmVjb3JkOjpoYXNTbG93Q2FsbCk6
CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFs
aXplcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxp
emVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5oOgorICAgICAgICAq
IGRmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpoYW5kbGVCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZTo6dHJlYXRSZWd1bGFy
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjp0
cmVhdFJvb3RCbG9jayk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAq
IGRmZy9ERkdNaW5pZmllZE5vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9k
ZTo6ZnJvbU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNaW5pZmllZE5vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpiZWxvbmdzSW5NaW5pZmllZEdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFjY2Vz
c2VzU3RhY2spOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldFZhcmlhYmxlQWNjZXNzRGF0
YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcmd1bWVudFJlZ2lzdGVySW5kZXgpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0
eUNhbGN1bGF0b3I6OmV4ZWN1dGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJh
bms6Oml0ZXJhdG9yOjp1bmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFuazo6
dW5sb2NrQXRJbmRleCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAq
IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6REZH
OjpkdW1wUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50
VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50
UmVnaXN0ZXJzRm9yRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6
SlNWYWx1ZU9wZXJhbmQ6OkpTVmFsdWVPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpKU1Zh
bHVlT3BlcmFuZDo6Z3ByVXNlU3BlY2lmaWMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVu
a0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U6OnJ1bik6
CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyaWFi
bGVFdmVudFN0cmVhbS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVh
bTo6cmVjb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRp
b25QaGFzZTo6YWxsb2NhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6VmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjp+SklUQ29kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayk6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6c2V0RW50cnlGb3IpOgorICAgICAgICAoSlNDOjpG
VEw6OkpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2Rl
OjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2Rl
Ojppbml0aWFsaXplQWRkcmVzc0ZvckNhbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6
OkpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludCk6IERlbGV0ZWQuCisgICAg
ICAgICogZnRsL0ZUTEpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgor
ICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEaXJlY3RDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFy
YXJnc1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZU
TE91dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFyZ3VtZW50UmVnaXN0ZXJJbnQzMik6Cisg
ICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp1cGRhdGUpOgorICAgICAg
ICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmVtaXREdW1iVmlydHVhbENhbGwpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzcGlsbEFyZ3VtZW50UmVnaXN0ZXJz
VG9GcmFtZUJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpz
cGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZmlsbEFyZ3VtZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVm
b3JlUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRBcmd1
bWVudFRvQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFt
ZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpp
bmNyZW1lbnRDb3VudGVyKToKKyAgICAgICAgKiBqaXQvQ2FjaGVkUmVjb3ZlcnkuY3BwOgorICAg
ICAgICAoSlNDOjpDYWNoZWRSZWNvdmVyeTo6YWRkVGFyZ2V0SlNWYWx1ZVJlZ3MpOgorICAgICAg
ICAqIGppdC9DYWNoZWRSZWNvdmVyeS5oOgorICAgICAgICAoSlNDOjpDYWNoZWRSZWNvdmVyeTo6
Z3ByVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OkNhY2hlZFJlY292ZXJ5OjpzZXRXYW50ZWRGUFIp
OgorICAgICAgICAoSlNDOjpDYWNoZWRSZWNvdmVyeTo6d2FudGVkSlNWYWx1ZVJlZ3MpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRSZWNvdmVyeTo6c2V0V2FudGVkSlNWYWx1ZVJlZ3MpOiBEZWxldGVk
LgorICAgICAgICAqIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oOgorICAgICAgICAqIGppdC9D
YWxsRnJhbWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpD
YWxsRnJhbWVTaHVmZmxlcik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpkdW1w
KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnRyeVdyaXRlcyk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2Fs
bEZyYW1lU2h1ZmZsZXIuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnNuYXBz
aG90KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmFkZE5ldyk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjppbml0RGFuZ2VyRnJvbnRpZXIpOgorICAgICAgICAo
SlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6dXBkYXRlRGFuZ2VyRnJvbnRpZXIpOgorICAgICAgICAo
SlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZmluZERhbmdlckZyb250aWVyRnJvbSk6CisgICAgICAg
ICogaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVT
aHVmZmxlcjo6ZW1pdERpc3BsYWNlKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlUmVnczo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkpTVmFsdWVS
ZWdzOjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9Bcmd1bWVudEluZGV4
KToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvcik6CisgICAgICAgIChKU0M6OmFy
Z3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjphcmd1bWVudFJlZ2lzdGVy
Rm9yQXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OmFyZ3VtZW50UmVnaXN0ZXJJbmRleEZv
ckpTRnVuY3Rpb25Bcmd1bWVudCk6CisgICAgICAgIChKU0M6OmpzRnVuY3Rpb25Bcmd1bWVudEZv
ckFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjphcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudCk6CisgICAgICAgIChKU0M6Om51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNG
b3IpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVX
aXRob3V0TGlua2luZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRzKToKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVw
VmFyYXJnc0ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsU2xv
d0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
T3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UpOgorICAg
ICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6ZXhlY3V0ZSk6
CisgICAgICAgIChKU0M6OkRpcmVjdEpJVENvZGU6OkRpcmVjdEpJVENvZGUpOgorICAgICAgICAo
SlNDOjpEaXJlY3RKSVRDb2RlOjppbml0aWFsaXplRW50cnlQb2ludHMpOgorICAgICAgICAoSlND
OjpEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUpJ
VENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RGlyZWN0SklUQ29kZTo6aW5p
dGlhbGl6ZUNvZGVSZWYpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAg
ICAgIChKU0M6OkpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvSklURW50cnlQb2ludHMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9p
bnRzOjpKSVRFbnRyeVBvaW50cyk6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjplbnRy
eUZvcik6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpzZXRFbnRyeUZvcik6CisgICAg
ICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9yKToKKyAgICAgICAgKEpT
Qzo6SklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudCk6Cisg
ICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50
VHlwZSk6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpjbGVhckVudHJpZXMpOgorICAg
ICAgICAoSlNDOjpKSVRFbnRyeVBvaW50czo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6SklU
RW50cnlQb2ludHNXaXRoUmVmOjpKSVRFbnRyeVBvaW50c1dpdGhSZWYpOgorICAgICAgICAoSlND
OjpKSVRFbnRyeVBvaW50c1dpdGhSZWY6OmNvZGVSZWYpOgorICAgICAgICAoSlNDOjphcmd1bWVu
dHNMb2NhdGlvbkZvcik6CisgICAgICAgIChKU0M6OnJlZ2lzdGVyRW50cnlQb2ludFR5cGVGb3Ip
OgorICAgICAgICAoSlNDOjplbnRyeVBvaW50VHlwZUZvcik6CisgICAgICAgIChKU0M6OnRodW5r
RW50cnlQb2ludFR5cGVGb3IpOgorICAgICAgICAoSlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZjo6SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYpOgorICAgICAgICAo
SlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZjo6ZW50cnlGb3IpOgorICAgICAg
ICAoSlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZjo6c2V0RW50cnlGb3IpOgor
ICAgICAgICAoSlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZjo6b2Zmc2V0T2ZF
bnRyeUZvcik6CisgICAgICAgIChKU0M6OkpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
OjpjbGVhckVudHJpZXMpOgorICAgICAgICAoSlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRz
V2l0aFJlZjo6Y29kZVJlZik6CisgICAgICAgIChKU0M6OkpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmOjpvcGVyYXRvcj0pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVDVElOYXRpdmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6aml0RW50cnlOYXRpdmVDYWxsKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpq
aXRFbnRyeU5hdGl2ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aml0RW50
cnlTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpqaXRDYWxsVGh1bmtFbnRyeVN0dWIp
OgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgorICAgICAgICAo
SlNDOjpKSVRUaHVua3M6OmN0aU5hdGl2ZUNhbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRUaHVua3M6OmN0aU5hdGl2ZUNvbnN0cnVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJ
VFRodW5rcy5oOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdEludDMyKToKKyAgICAgICAgKEpTQzo6SlNJ
bnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNldC5j
cHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lzdGVycyk6CisgICAg
ICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAg
ICAgICAoSlNDOjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OnJldmVydENhbGwpOgorICAg
ICAgICAoSlNDOjp1bmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rVmlydHVhbEZvcik6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGppdC9TcGVjaWFs
aXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OlNwZWNp
YWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpjaGVj
a0pTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjps
aW5rRmFpbHVyZUhlcmUpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRz
U3BpbGxFbnRyeSk6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKEpTQzo6
bGlua0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxpbmtEaXJlY3RDYWxsVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpu
YXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVDYWxsR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6bmF0aXZlVGFpbENhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpu
YXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpu
YXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZFJl
Z0NhbGwpOgorICAgICAgICAoSlNDOjpjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpjaGFyQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmZyb21DaGFyQ29k
ZVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2x6MzJUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OnNxcnRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmZsb29yVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpjZWlsVGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjp0cnVuY1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cm91bmRUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OmV4cFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6bG9nVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphYnNUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OmltdWxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnJhbmRv
bVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKGpzY21haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50RW50
cnlwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRGdW5jdGlvbkVudHJ5cG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlND
OjpMTEludDo6c2V0UHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0RW50cnlU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvclN0YWNrQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlv
bkZvclJlZ2lzdGVyQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkxMSW50OjpmdW5jdGlvbkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yU3RhY2tD
b25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGlu
dC9MTEludFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJpdHlDaGVja01vZGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5o
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZW50cnlwb2ludEZvcik6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6c2V0
dXBMTEludCk6CisgICAgICAgIChKU0M6OnNldHVwSklUKToKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0
b3JGb3JJbnRyaW5zaWMpOgorICAgICAgICAoSlNDOjpWTTo6Y2xlYXJDb3VudGVycyk6CisgICAg
ICAgIChKU0M6OlZNOjpkdW1wQ291bnRlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAg
ICAgICAgKEpTQzo6Vk06OmdldEpJVEVudHJ5U3R1Yik6CisgICAgICAgIChKU0M6OlZNOjpnZXRK
SVRDYWxsVGh1bmtFbnRyeVN0dWIpOgorICAgICAgICAoSlNDOjpWTTo6YWRkcmVzc09mQ291bnRl
cik6CisgICAgICAgIChKU0M6OlZNOjpjb3VudGVyRm9yKToKKyAgICAgICAgKiB3YXNtL1dhc21C
aW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aW1wb3J0U3R1YkdlbmVyYXRvcik6CisK
IDIwMTYtMTItMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkg
ZG8gbm90IGhhdmUgZGF0YQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwOTYy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjM3LDYgKzMyMzcsOSBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
aW50IHJlc3VsdDsKICAgICByZXN1bHQgPSBydW5KU0Modm0sIG9wdGlvbnMpOwogCisjaWYgRU5B
QkxFKFZNX0NPVU5URVJTKQorICAgIHZtLT5kdW1wQ291bnRlcnMoKTsKKyNlbmRpZgogICAgIGlm
IChPcHRpb25zOjpnY0F0RW5kKCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBob2xkIHRoZSBB
UEkgbG9jayB0byBkbyBhIEdDLgogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTM1NCw2ICsxMzU0LDcgQEAKIAkJNjVDMDI4NTAxNzE3OTVF
MjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODRGMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBB
Uk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgKi87IH07
CiAJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVCMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLzsgfTsKKwkJNjVEQkYzMDIxRDkzMzkyQjAwM0FGNEIw
IC8qIEpJVEVudHJ5UG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTAzMDBGMjFDNTAyNzQ2MDBENzg2RDcgLyogSklURW50cnlQb2ludHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUZCNTEx
NzE4NEVFRTcwMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJNjVGQjYzQTQxQzhFQTA5QzAwMjA3MTlCIC8q
IFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTk0NjE0MUM4RTlGNkYwMEE3MjA5QSAvKiBZYXJyQ2Fub25p
Y2FsaXplVW5pY29kZS5jcHAgKi87IH07CiAJCTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBE
ZWJ1Z2dlckV2YWxFbmFibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0z
NzI5LDYgKzM3MzAsNyBAQAogCQk2MkUzRDVFRjFCOEQwQjczMDBCODY4QkIgLyogRGF0YUZvcm1h
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhRm9ybWF0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJFQzlCQjQxQjdFQjA3QzAwMzAzQUQx
IC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjJFQzlCQjUxQjdFQjA3QzAwMzAzQUQxIC8qIENhbGxGcmFtZVNodWZmbGVEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxGcmFtZVNodWZmbGVEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRFbnRyeVBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTA3RDI5NzBF
ODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEy
MkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5l
eGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU1NzQsNiArNTU3Niw3IEBACiAJCQkJ
MEZBRjdFRkIxNjVCQTkxOTAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oICovLAogCQkJCUZF
MTg3QTBBMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuY3BwICovLAogCQkJCUZF
MTg3QTBCMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCAqLywKKwkJCQk2NTAz
MDBGMjFDNTAyNzQ2MDBENzg2RDcgLyogSklURW50cnlQb2ludHMuaCAqLywKIAkJCQkwRjQ2ODA3
RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkIxNEUxQzE4MTI0
QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwICovLApAQCAtNzcyNyw2
ICs3NzMwLDcgQEAKIAkJCQk3OUIwMENCRDFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIz
V2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwREE2N0YxQzhFMzE2QTAw
Mjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1l
bnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTY1REJGMzAyMUQ5MzM5MkIwMDNBRjRCMCAv
KiBKSVRFbnRyeVBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4MTkxQzlDOTFEQjAw
OEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3
RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdpbk1hcC5oIGluIEhlYWRl
cnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdW
YWx1ZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNB
cmd1bWVudFJlZ1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIEFTU0VSVChyZWcuaXNTZXQoKSk7CiAgICAgfQogCisgICAgQXJndW1lbnRS
ZWdWYWx1ZShPcmlnaW4gb3JpZ2luLCBSZWcgcmVnLCBUeXBlIHR5cGUpCisgICAgICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwgQXJndW1lbnRSZWcsIHR5cGUsIG9yaWdpbikKKyAgICAgICAgLCBt
X3JlZyhyZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnLmlzU2V0KCkpOworICAgIH0KKwog
ICAgIFJlZyBtX3JlZzsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxp
ZGF0ZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDkgKzE4Miw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNhc2UgQXJndW1lbnRSZWc6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkp
OwotICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAodmFsdWUt
PmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFyZ3VtZW50UmVnKCkuaXNHUFIoKSA/IHBvaW50ZXJU
eXBlKCkgOiBEb3VibGUpCi0gICAgICAgICAgICAgICAgICAgID09IHZhbHVlLT50eXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZhbHVlLT5hczxBcmd1
bWVudFJlZ1ZhbHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkKKyAgICAgICAgICAgICAgICAg
ICAgPyAodmFsdWUtPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpIHx8IHZhbHVlLT50eXBlKCkgPT0g
SW50MzIpCisgICAgICAgICAgICAgICAgICAgIDogdmFsdWUtPnR5cGUoKSA9PSBEb3VibGUpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBBZGQ6CiAgICAgICAgICAgICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNiArNjAsNyBAQCBDYWxsTGlua0luZm86OkNhbGxMaW5rSW5mbygpCiAgICAg
LCBtX2hhc1NlZW5DbG9zdXJlKGZhbHNlKQogICAgICwgbV9jbGVhcmVkQnlHQyhmYWxzZSkKICAg
ICAsIG1fYWxsb3dTdHVicyh0cnVlKQorICAgICwgbV9hcmd1bWVudHNMb2NhdGlvbihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQXJndW1lbnRzTG9jYXRpb246OlN0YWNrQXJncykpCiAgICAgLCBtX2lz
TGlua2VkKGZhbHNlKQogICAgICwgbV9jYWxsVHlwZShOb25lKQogICAgICwgbV9jYWxsZWVHUFIo
MjU1KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ2FsbE1vZGUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNs
dWRlICJQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KQEAgLTE1Nyw5ICsxNTgs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBtX3N0dWIgfHwgbV9j
YWxsZWVPckNvZGVCbG9jazsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7CiAKLSAgICB2b2lkIHNl
dFVwQ2FsbChDYWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25l
ZCBjYWxsZWVHUFIpCisgICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIEFyZ3Vt
ZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIHVu
c2lnbmVkIGNhbGxlZUdQUikKICAgICB7CisgICAgICAgIEFTU0VSVCghaXNWYXJhcmdzQ2FsbFR5
cGUoY2FsbFR5cGUpIHx8IChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpKTsKKwogICAg
ICAgICBtX2NhbGxUeXBlID0gY2FsbFR5cGU7CisgICAgICAgIG1fYXJndW1lbnRzTG9jYXRpb24g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRzTG9jYXRpb24pOwogICAgICAgICBtX2Nv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luOwogICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsK
ICAgICB9CkBAIC0yNzUsNiArMjc5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKTsKICAgICB9CiAKKyAgICBBcmd1bWVudHNMb2Nh
dGlvbiBhcmd1bWVudHNMb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8QXJndW1lbnRzTG9jYXRpb24+KG1fYXJndW1lbnRzTG9jYXRpb24pOworICAgIH0KKworICAg
IGJvb2wgYXJndW1lbnRzSW5SZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOworICAgIH0KKwogICAgIHVpbnQzMl90KiBhZGRy
ZXNzT2ZNYXhOdW1Bcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuICZtX21heE51bUFy
Z3VtZW50czsKQEAgLTMzOSw2ICszNTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNTZWVu
Q2xvc3VyZSA6IDE7CiAgICAgYm9vbCBtX2NsZWFyZWRCeUdDIDogMTsKICAgICBib29sIG1fYWxs
b3dTdHVicyA6IDE7CisgICAgdW5zaWduZWQgbV9hcmd1bWVudHNMb2NhdGlvbiA6IDQ7CiAgICAg
Ym9vbCBtX2lzTGlua2VkIDogMTsKICAgICB1bnNpZ25lZCBtX2NhbGxUeXBlIDogNDsgLy8gQ2Fs
bFR5cGUKICAgICB1bnNpZ25lZCBtX2NhbGxlZUdQUiA6IDg7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4MzcsNiArMTgzNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiAKICAgICAsIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1f
aXNDb25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2lzU3RyaWN0TW9k
ZShvdGhlci5tX2lzU3RyaWN0TW9kZSkKKyAgICAsIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzKGZh
bHNlKQogICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV91bmxpbmtl
ZENvZGUoKm90aGVyLm1fdm0sIHRoaXMsIG90aGVyLm1fdW5saW5rZWRDb2RlLmdldCgpKQogICAg
ICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKQEAgLTE5MDIsNiArMTkwMyw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1faGFzQmVlbkNv
bXBpbGVkV2l0aEZUTChmYWxzZSkKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVC
bG9jay0+aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9wcmVmZXJzU3RhY2tBcmd1bWVudHMoZmFs
c2UpCiAgICAgLCBtX2NvZGVUeXBlKHVubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpKQogICAg
ICwgbV91bmxpbmtlZENvZGUobV9nbG9iYWxPYmplY3QtPnZtKCksIHRoaXMsIHVubGlua2VkQ29k
ZUJsb2NrKQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzY5LDcgKzM2OSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
bV9zY29wZVJlZ2lzdGVyOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc2V0UHJlZmVyc1N0YWNr
QXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIG1fcHJlZmVyc1N0YWNrQXJndW1lbnRzID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBib29sIHByZWZlcnNTdGFja0FyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9wcmVmZXJzU3RhY2tBcmd1bWVudHM7CisgICAgfQorCiAgICAg
Q29kZVR5cGUgY29kZVR5cGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENvZGVUeXBlPihtX2NvZGVUeXBlKTsKQEAgLTg0NSw2ICs4NTUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0
cnVjdG9yIDogMTsKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1fcHJl
ZmVyc1N0YWNrQXJndW1lbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvZGVUeXBlIDogMjsgLy8g
Q29kZVR5cGUKIAogICAgIC8vIEludGVybmFsIG1ldGhvZHMgZm9yIHVzZSBieSB2YWxpZGF0aW9u
IGNvZGUuIEl0IHdvdWxkIGJlIHByaXZhdGUgaWYgaXQgd2Fzbid0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPmNhbGxMaW5rSW5mby0+ZGlzYWxsb3dTdHVicygpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm86OkNhbGwsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxvYWRlZFZhbHVlR1BS
KTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywgc3R1Yklu
Zm8uY29kZU9yaWdpbiwgbG9hZGVkVmFsdWVHUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGRvbmU7CiAKQEAgLTExMDUsNyArMTEwNSw3IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIC8vIFdlICphbHdheXMqIGtu
b3cgdGhhdCB0aGUgZ2V0dGVyL3NldHRlciwgaWYgbm9uLW51bGwsIGlzIGEgY2VsbC4KICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCBHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8uZ2V0KCkpLCBH
UFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CiAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAg
ICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAgICAgICAgIGppdC5zZXR1cFJl
c3VsdHModmFsdWVSZWdzKTsKQEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ3VzdG9tVmFsdWVHZXR0ZXIg
fHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21WYWx1
ZVNldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEs
NyArMjcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgLy8gbm9uLWNsZWFyIHZhbHVlLgogICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOwogICAgICAgICBicmVhazsK
LSAgICAgICAgCisKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgIEFTU0VS
VCghbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpLmlzQ2xlYXIoKSk7
CisgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9
PSBGbHVzaGVkSlNWYWx1ZSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNv
ZGVUb3AoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIHR5cGVGaWx0ZXJGb3Iobm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIExv
YWRWYXJhcmdzOgogICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6IHsKICAgICAgICAgLy8gRklYTUU6
IEZvcndhcmRWYXJhcmdzIHNob3VsZCBjaGVjayBpZiB0aGUgY291bnQgYmVjb21lcyBrbm93biwg
YW5kIGlmIGl0IGRvZXMsIGl0IHNob3VsZCB0dXJuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsx
OTksNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgYm9v
bCBpc0xpbmtlZDsKICNlbmRpZgogICAgIGJvb2wgaXNSZWFjaGFibGU7Ci0gICAgCisKICAgICBW
ZWN0b3I8Tm9kZSo+IHBoaXM7CiAgICAgUHJlZGVjZXNzb3JMaXN0IHByZWRlY2Vzc29yczsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4NywyMCArMzY4Nyw2OCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgLy8gdXMgdG8g
dHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3VtZW50
IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4cGxp
Y2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkgJiYgIWlu
bGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKLSAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IFNldEFyZ3VtZW50IG5vZGVz
LiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUgdG9wIG9mIGFuIG9wX2VudGVyIHNv
Ci0gICAgICAgIC8vIGV4aXRPSyA9IHRydWUuCisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNP
blN0YWNrLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNGb3JDaGVja2luZy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAvLyBDcmVhdGUg
YWxsIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgZmlyc3QgYW5kIHRoZW4gdGhlIGNvcnJlc3Bv
bmRpbmcgTW92SGludCBub2RlcywKKyAgICAgICAgLy8gZm9sbG93ZWQgYnkgdGhlIGNvcnJlc3Bv
bmRpbmcgU2V0TG9jYWwgbm9kZXMgYW5kIGZpbmFsbHkgYW55IFNldEFyZ3VtZW50IG5vZGVzIGZv
cgorICAgICAgICAvLyB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gV2UgZG8g
dGhpcyB0byBtYWtlIHRoZSBleGl0IHByb2Nlc3NpbmcgY29ycmVjdC4gV2Ugc3RhcnQgd2l0aCBt
X2V4aXRPSyA9IHRydWUgc2luY2UKKyAgICAgICAgLy8gR2V0QXJndW1lbnRSZWdpc3RlciBub2Rl
cyBjYW4gZXhpdCwgZXZlbiB0aG91Z2ggdGhleSBkb24ndC4gVGhlIE1vdkhpbnQncyB0ZWNobmlj
YWxseSBjb3VsZAorICAgICAgICAvLyBleGl0IGJ1dCB3b24ndC4gVGhlIFNldExvY2FscyBjYW4g
ZXhpdCBhbmQgdGhlcmVmb3JlIHdlIHdhbnQgYWxsIHRoZSBNb3ZIaW50cworICAgICAgICAvLyBi
ZWZvcmUgdGhlIGZpcnN0IFNldExvY2FsIHNvIHRoYXQgdGhlIHJlZ2lzdGVyIHN0YXRlIGlzIGNv
bnNpc3RlbnQuCisgICAgICAgIC8vIFdlIGRvIGFsbCB0aGlzIHByb2Nlc3NpbmcgYmVmb3JlIGNy
ZWF0aW5nIGFueSBTZXRBcmd1bWVudCBub2RlcyBzaW5jZSB0aGV5IGFyZQorICAgICAgICAvLyBt
b3JhbGx5IGVxdWl2YWxlbnQgdG8gdGhlIFNldExvY2FscyBmb3IgR2V0QXJndW1lbnRSZWdpc3Rl
ciBub2Rlcy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkgewor
ICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtUmVnaXN0ZXJBcmd1bWVudHMgPSBzdGQ6Om1p
bihtX251bUFyZ3VtZW50cywgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
Uyk7CisKKyAgICAgICAgVmVjdG9yPE5vZGUqLCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTPiBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXM7CisKKyAgICAgICAgLy8gRmly
c3QgY3JlYXRlIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMuCisgICAgICAgIGZvciAodW5zaWdu
ZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG51bVJlZ2lzdGVyQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgICAgICBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QXJndW1lbnRSZWdpc3RlciwgT3BJbmZvKDApLAor
ICAgICAgICAgICAgICAgICAgICBPcEluZm8oYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5j
dGlvbkFyZ3VtZW50KGFyZ3VtZW50KSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENyZWF0
ZSBhbGwgdGhlIE1vdkhpbnQncyBmb3IgdGhlIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY3Jl
YXRlZCBhYm92ZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdldEFyZ3VtZW50
UmVnaXN0ZXJOb2Rlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSogZ2V0QXJndW1l
bnRSZWdpc3RlciA9IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlc1tpXTsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoTW92SGludCwgT3BJbmZvKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9m
ZnNldCgpKSwgZ2V0QXJndW1lbnRSZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBl
eGl0IGFueW1vcmUuCisgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRXhpdCBpcyBub3cgb2theSwgYnV0IHdlIG5lZWQgdG8gZmVuY2Ugd2l0aCBh
biBFeGl0T0sgbm9kZS4KKyAgICAgICAgbV9leGl0T0sgPSB0cnVlOworICAgICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCB0aGUgU2V0TG9jYWxzJ3MgZm9y
IHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNyZWF0ZWQgYWJvdmUuCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZXRBcmd1bWVudFJlZ2lzdGVyTm9kZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE5vZGUqIGdldEFyZ3VtZW50UmVnaXN0ZXIgPSBnZXRBcmd1bWVu
dFJlZ2lzdGVyTm9kZXNbaV07CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSk7CisgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlU3RydWN0
dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwor
ICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0Zh
aWxlZCgKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKyAgICAgICAgICAg
IE5vZGUqIHNldExvY2FsID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNj
ZXNzRGF0YSksIGdldEFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChpKSA9IHNldExvY2FsOworICAgICAgICAgICAg
Z2V0QXJndW1lbnRSZWdpc3Rlci0+c2V0VmFyaWFibGVBY2Nlc3NEYXRhKHNldExvY2FsLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKSk7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFj
a1tpXSA9IHNldExvY2FsOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNr
aW5nW2ldID0gZ2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZp
bmFsbHkgY3JlYXRlIGFueSBTZXRBcmd1bWVudCBub2Rlcy4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmd1bWVudCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFy
Z3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEoCiAgICAgICAg
ICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKTsKICAgICAgICAg
ICAgIHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCiAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNr
QXJyYXlIb2lzdGluZ0ZhaWxlZCgKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUp
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFja1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsK
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRG
aXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4
MTAsOCArNDg1OCwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHVuYm94
IG91ciBhcmd1bWVudHMgaGVyZSBzaW5jZSB0aGF0IHdvbid0IGJlCiAgICAgICAgICAgICAvLyBk
b25lIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0IGNyZWF0aW9uIG5vZGUgYXMgdGhhdCBub2RlIG1h
eSBub3QgZXhpc3QuCiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAgICAg
ICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0
eSA9IGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGxGb3J3YXJk
VmFyYXJncywgQ2FsbE1vZGU6OlRhaWwpOworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBpbnNl
cnQgZmx1c2ggbm9kZXMgZm9yIG91ciBhcmd1bWVudHMgYWZ0ZXIgdGhlIFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3MKKyAgICAgICAgICAgIC8vIG5vZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgZmx1c2hl
ZCB0byB0aGUgc3RhY2sgYW5kIGtlcHQgYWxpdmUuCisgICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlv
biA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhh
dmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAg
ICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyB0ZXJtaW5hbCB0aGVuIHdlIHNob3VsZCBub3Qg
cGFyc2UgYW55IGZ1cnRoZXIgYnl0ZWNvZGVzIGFzIHRoZSBUYWlsQ2FsbCB3aWxsIGV4aXQgdGhl
IGZ1bmN0aW9uLgogICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgbm90IHRlcm1pbmFsLCBo
b3dldmVyLCB0aGVuIHdlIHdhbnQgdGhlIHN1YnNlcXVlbnQgb3BfcmV0L29wX2p1bXAgdG8gdXBk
YXRlIG1ldGFkYXRhIGFuZCBjbGVhbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTksMTQgKzI5OSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gVGhlIHJ1bGVzIGZvciB0aHJlYWRlZCBDUFMgZm9ybToKICAgICAgICAgICAgIC8vIAogICAg
ICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZTogZGVzY3JpYmVzIHdoYXQgaXMgbGl2ZSBhdCB0aGUg
aGVhZCBvZiB0aGUgYmFzaWMgYmxvY2suCi0gICAgICAgICAgICAvLyBIZWFkIHZhcmlhYmxlIGxp
bmtzIG1heSByZWZlciB0byBGbHVzaCwgUGhhbnRvbUxvY2FsLCBQaGksIG9yIFNldEFyZ3VtZW50
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLgorICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBHZXRBcmd1bWVudFJlZ2lzdGVyCisgICAgICAgICAg
ICAvLyBvciBTZXRBcmd1bWVudC4KKyAgICAgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIg
YW5kIFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUYWlsIHZhcmlhYmxlOiB0aGUgbGFzdCB0aGluZyB0
aGF0IGhhcHBlbmVkIHRvIHRoZSB2YXJpYWJsZSBpbiB0aGUgYmxvY2suCi0gICAgICAgICAgICAv
LyBJdCBtYXkgYmUgYSBGbHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwgU2V0TG9jYWwsIFNl
dEFyZ3VtZW50LCBvciBQaGkuCi0gICAgICAgICAgICAvLyBTZXRBcmd1bWVudCBtYXkgb25seSBh
cHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suIE5vdGUgdGhhdCBpZiB0aGVyZSBldmVyCi0gICAgICAg
ICAgICAvLyB3YXMgYSBHZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsIGFuZCBpdCB3YXMgZm9sbG93
ZWQgYnkgUGhhbnRvbUxvY2FscyBhbmQKLSAgICAgICAgICAgIC8vIEZsdXNoZXMgYnV0IG5vdCBT
ZXRMb2NhbHMsIHRoZW4gdGhlIHRhaWwgdmFyaWFibGUgd2lsbCBiZSB0aGUgR2V0TG9jYWwuCisg
ICAgICAgICAgICAvLyBJdCBtYXkgYmUgYSBGbHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwg
U2V0TG9jYWwsIEdldEFyZ3VtZW50UmVnaXN0ZXIsCisgICAgICAgICAgICAvLyBTZXRBcmd1bWVu
dCwgb3IgUGhpLiBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBtYXkgb25seSBh
cHBlYXIKKyAgICAgICAgICAgIC8vIGluIHRoZSByb290IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhl
cmUgZXZlciB3YXMgYSBHZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsCisgICAgICAgICAgICAvLyBh
bmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2NhbHMgYW5kIEZsdXNoZXMgYnV0IG5vdCBT
ZXRMb2NhbHMsIHRoZW4KKyAgICAgICAgICAgIC8vIHRoZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUg
dGhlIEdldExvY2FsLgogICAgICAgICAgICAgLy8gVGhpcyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0
IHlvdSBvbmx5IGNhcmUgdGhhdCB0aGUgdGFpbCB2YXJpYWJsZSBpcyBhCiAgICAgICAgICAgICAv
LyBGbHVzaCBvciBQaGFudG9tTG9jYWwgaWYgbm90aGluZyBlbHNlIGludGVyZXN0aW5nIGhhcHBl
bmVkLiBMaWtld2lzZSwgaWYKICAgICAgICAgICAgIC8vIHRoZXJlIGV2ZXIgd2FzIGEgU2V0TG9j
YWwgYW5kIGl0IHdhcyBmb2xsb3dlZCBieSBGbHVzaGVzLCB0aGVuIHRoZSB0YWlsCkBAIC0zNjcs
MTIgKzM2OSwxMyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY2lhbENhc2VBcmd1bWVu
dHMoKQogICAgIHsKLSAgICAgICAgLy8gTm9ybWFsbHksIGEgU2V0QXJndW1lbnQgZGVub3RlcyB0
aGUgc3RhcnQgb2YgYSBsaXZlIHJhbmdlIGZvciBhIGxvY2FsJ3MgdmFsdWUgb24gdGhlIHN0YWNr
LgotICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwg
YXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKLSAgICAgICAgLy8gc3BlY2lh
bC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5
cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCi0gICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBj
YXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtl
IElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1l
bnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxl
c0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsK
KyAgICAgICAgLy8gTm9ybWFsbHksIGEgU2V0QXJndW1lbnQgb3IgU2V0TG9jYWwgZGVub3RlcyB0
aGUgc3RhcnQgb2YgYSBsaXZlIHJhbmdlIGZvcgorICAgICAgICAvLyBhIGxvY2FsJ3MgdmFsdWUg
b24gdGhlIHN0YWNrLiBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIGFuZCBTZXRMb2NhbHMgdXNlZAor
ICAgICAgICAvLyBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJs
b2NrIGdldCBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlCisgICAgICAgIC8vIGluc3RlYWQg
dXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMgYXQg
dGhlIHByb2xvZ3VlIGNhc2UsCisgICAgICAgIC8vIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIg
dXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tpXSk7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpAQCAtNDgwLDYgKzQ4Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNh
c2UgU2V0TG9jYWw6CiAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA2
LDYgKzQwNiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAg
ICBjYXNlIFBoaToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICBjYXNlIFNldEFyZ3VtZW50
OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2Fz
ZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgLy8gREZHIGJhY2tlbmQgcmVxdWlyZXMgdGhhdCB0aGUgbG9jYWxz
IHRoYXQgdGhpcyByZWFkcyBhcmUgZmx1c2hlZC4gRlRMIGJhY2tlbmQgY2FuIGhhbmRsZSB0aG9z
ZQogICAgICAgICAvLyBsb2NhbHMgYmVpbmcgcHJvbW90ZWQuCi0gICAgICAgIGlmICghaXNGVEwo
Z3JhcGgubV9wbGFuLm1vZGUpKQorICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSAmJiAhbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAg
IHJlYWQoU3RhY2spOwogICAgICAgICAKICAgICAgICAgLy8gRXZlbiB0aG91Z2ggaXQncyBwaGFu
dG9tLCBpdCBzdGlsbCBoYXMgdGhlIHByb3BlcnR5IHRoYXQgb25lIGNhbid0IGJlIHJlcGxhY2Vk
IHdpdGggYW5vdGhlci4KQEAgLTU1OSwxMSArNTYwLDE4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CiAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgY2FzZSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgogICAgICAgICByZWFkKFdvcmxkKTsKICAgICAgICAgd3JpdGUoU2lkZVN0
YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3M6CisgICAgICAgIC8vIFdlIHJlYWQgYWxsIGFyZ3VtZW50cyBhZnRlciAidGhpcyIu
CisgICAgICAgIGZvciAodW5zaWduZWQgYXJnID0gMTsgYXJnIDwgZ3JhcGgubV9hcmd1bWVudHNP
blN0YWNrLnNpemUoKTsgYXJnKyspCisgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFj
aywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJnKSkpOworICAgICAgICByZWFkKFdvcmxk
KTsKKyAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fz
ZSBHZXRHZXR0ZXI6CiAgICAgICAgIHJlYWQoR2V0dGVyU2V0dGVyX2dldHRlcik7CiAgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oR2V0dGVyTG9jLCBHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw4IEBAIGVudW0gU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHsgU3RydWMKIAogZW51bSBPcHRpbWl6YXRpb25GaXhw
b2ludFN0YXRlIHsgQmVmb3JlRml4cG9pbnQsIEZpeHBvaW50Tm90Q29udmVyZ2VkLCBGaXhwb2lu
dENvbnZlcmdlZCB9OwogCitlbnVtIFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzIHsgRG9u
dE9wdGltaXplQXJndW1lbnRGbHVzaGVzLCBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlcyB9OworCiAv
LyBEZXNjcmliZXMgdGhlIGZvcm0geW91IGNhbiBleHBlY3QgdGhlIGVudGlyZSBncmFwaCB0byBi
ZSBpbi4KIGVudW0gR3JhcGhGb3JtIHsKICAgICAvLyBMb2FkU3RvcmUgZm9ybSBtZWFucyB0aGF0
IGJhc2ljIGJsb2NrcyBtYXkgZnJlZWx5IHVzZSBHZXRMb2NhbCwgU2V0TG9jYWwsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJs
b2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9h
cmd1bWVudHMpOworICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzT25T
dGFjayk7CisgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZyk7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4t
dXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9j
a3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAg
Y2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CisgICAgY2Fz
ZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBM
b2dTaGFkb3dDaGlja2VuUHJvbG9ndWU6CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuVGFpbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsOCArOTAsOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGls
ZUltcGwoCiAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9l
cyBmaW5hbGl6YXRpb24gb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZtLmdldENUSVN0dWIob3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcik7Ci0gICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWND
YWxsVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlu
a0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgCiAgICAgaWYgKHZt
LnR5cGVQcm9maWxlcigpKQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xv
Z0VudHJpZXMoQVNDSUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3ODYsNiArMTc4Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAg
IGNhc2UgR2V0Q2FsbGVlOgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgIGNhc2UgR2V0
UmVzdExlbmd0aDoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChmb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIs
IGZvcm1hdCk7CiAgICAgfQorCisgICAgdm9pZCBpbml0QXJndW1lbnRSZWdpc3RlclZhbHVlKE5v
ZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IHJlZ2lz
dGVyRm9ybWF0ID0gIERhdGFGb3JtYXRKUykKKyAgICB7CisgICAgICAgIG1fbm9kZSA9IG5vZGU7
CisgICAgICAgIG1fdXNlQ291bnQgPSB1c2VDb3VudDsKKyAgICAgICAgbV9yZWdpc3RlckZvcm1h
dCA9IHJlZ2lzdGVyRm9ybWF0OworICAgICAgICBtX3NwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdE5v
bmU7CisgICAgICAgIG1fY2FuRmlsbCA9IGZhbHNlOworICAgICAgICB1LmdwciA9IGdwcjsKKyAg
ICAgICAgbV9ib3JuRm9yT1NSID0gZmFsc2U7CisgICAgICAgIG1faXNDb25zdGFudCA9IGZhbHNl
OworICAgICAgICBBU1NFUlQobV91c2VDb3VudCk7CisgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICB2b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50
LCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQgPSBE
YXRhRm9ybWF0SlMpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDYgQEAgdm9pZCBHcmFwaDo6
ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAg
QVNTRVJUKG5vZGUtPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNz
ZXNTdGFjaygqdGhpcykpOwogICAgIGlmIChub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRo
aXMpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0g
bm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFj
Y2Vzc0RhdGEpIHsKQEAgLTM3Myw2ICszNzIsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChk
YXRhLT5jYXNlc1tpXS52YWx1ZSwgY29udGV4dCksICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0
KTsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3Vn
aCk7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigi
LCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4
KCkpLCAiKSIpOwogICAgIENsb2JiZXJTZXQgcmVhZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7
CiAgICAgYWRkUmVhZHNBbmRXcml0ZXMoKnRoaXMsIG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAt
Mzk2LDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV2FzSG9pc3RlZCIpOwogICAgIG91dC5wcmludCgi
KSIpOwogCi0gICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpICYmIG5vZGUtPnRyeUdl
dFZhcmlhYmxlQWNjZXNzRGF0YSgpKQorICAgIGlmICgobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhp
cykgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSAmJiBub2RlLT50cnlHZXRW
YXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwg
U3BlY3VsYXRpb25EdW1wKG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
aW9uKCkpKTsKICAgICBlbHNlIGlmIChub2RlLT5oYXNIZWFwUHJlZGljdGlvbigpKQogICAgICAg
ICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVh
cFByZWRpY3Rpb24oKSkpOwpAQCAtNTA2LDggKzUwNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAi
LCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3Rh
dGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNv
dW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJp
bnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAi
XG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3RE
dW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIG91dC5wcmludCgi
ICBBcmd1bWVudHMgZm9yIGNoZWNraW5nOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50c0ZvckNoZWNr
aW5nKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgb24gc3RhY2s6ICIs
IGxpc3REdW1wKG1fYXJndW1lbnRzT25TdGFjayksICJcbiIpOworICAgIH0KICAgICBvdXQucHJp
bnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtMTYyMCwx
MyArMTYyMywxMyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAg
ICAgICAgIGlmICghY3VycmVudE5vZGUgfHwgbm9kZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5v
cmlnaW4pIHsKICAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgICAgIGlmIChu
b2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vz
c2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikgewog
ICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJv
ZmlsZSogewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVu
dF07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRd
OworICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2Rl
LT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9y
aWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwog
ICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNE
ZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5l
ZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsg
fQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdn
ZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsK
ICAgICBQbGFuJiBtX3BsYW47CkBAIC04NzgsOSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAg
IEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAv
LyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFy
Z3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBE
Q0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVj
YXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBub2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMg
YWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3Ig
dGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2
aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERD
RSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBGbHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIElu
IFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdldFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRz
IGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3Bl
Y3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBn
ZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMsMTEgKzkwMywxMiBAQCBwdWJsaWM6CiAgICAgLy8K
ICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVj
ayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAg
IFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2Fy
Z3VtZW50c09uU3RhY2s7CisgICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50c0ZvckNoZWNr
aW5nOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0
aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAg
ICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2Vn
bWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRh
OwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9z
aXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVy
ZVNldDsKQEAgLTk1NCw2ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsK
ICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2Ug
bV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6OkluaXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFy
Z3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVj
ZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGltaXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVm
Q291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxl
ZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwx
MSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYg
KG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9n
cmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3Ao
KSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6
bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRy
eSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJ
biB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5lZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRy
ZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUgcHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0
YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSdsbCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmlu
ZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZpY2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2sp
IHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBh
Y2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8gYm90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdo
ZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1
cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0y
NzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQgPSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxM
aW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJl
Y29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1
bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVu
dHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2Fs
bExvY2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBA
IC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVjb3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMp
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBs
aW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGwsIGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQu
c2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJlY29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0
SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5
Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24oKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAg
ICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bCgpLAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCks
CkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVu
dHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsK
KyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlz
KTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxT
cGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZp
Y2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwy
MCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOwogCisjaWYgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0g
bGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgLy8gTG9hZCBhcmd1
bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsK
KyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJn
dW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25l
ZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQg
KyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKyAgICAKKyAgICBqdW1w
KGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4K
ICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0o
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVm
YXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYsMjQgKzQxNiw4NyBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRl
U2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKLSAgICAKKworICAgIEpJ
VEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7
CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVp
cmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7Cisj
ZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorCiAg
ICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6
ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3Zl
KGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2Rl
KSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogewogICAgIHNldFN0YXJ0T2ZDb2RlKCk7Ci0gICAgY29t
cGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgIEp1bXBMaXN0IGNvbnRpbnVl
UmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKyAxXTsKKworICAgIGlmIChu
dW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykg
eworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0
byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBleHRyYVJl
Z2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgLSAxOworICAgICAgICAgICAgZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXggPj0gbnVt
UGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgtLSkgeworICAgICAgICAgICAg
cmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCAr
IDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVm
b3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdp
c3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsK
KworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRyeS5hcHBlbmQoanVtcCgpKTsKKworICAgIG1fcmVn
aXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIo
dGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICBMYWJlbCByZWdpc3RlckFyZ3NDaGVja0Fy
aXR5KHRoaXMpOworCisgICAgSnVtcCByZWdpc3RlckNoZWNrQXJpdHk7CisKKyAgICBpZiAobnVt
UGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisg
ICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBhcmdDb3VudFJl
ZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVn
aXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIoQmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1t
MzIobnVtUGFyYW1ldGVycykpOworICAgICAgICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4
dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQorICAgIAorICAgIExhYmVsIHJlZ2lzdGVyRW50cnlO
b0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRy
eXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJlZ2lzdGVyRW50cnlOb0FyaXR5OworCisgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkpOworCisgICAgY29udGludWVS
ZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKworICAgIExhYmVsIG1haW5FbnRyeSh0
aGlzKTsKKworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICAvLyA9PT0gRnVuY3Rp
b24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlvbiA9PT0KICAgICAvLyBUaGlzIGlzIHRoZSBtYWluIGVu
dHJ5IHBvaW50LCB3aXRob3V0IHBlcmZvcm1pbmcgYW4gYXJpdHkgY2hlY2suCiAgICAgLy8gSWYg
d2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4gYXJpdHkgY2hlY2sgd2Ugd2lsbCBhbHJlYWR5IGhhdmUg
bW92ZWQgdGhlIHJldHVybiBhZGRyZXNzLAogICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAg
ICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhpcyk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgc3RvcmVQdHIoYXJndW1lbnRSZWdpc3RlckZvckNh
bGxlZSgpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworICAgIHN0b3JlMzIo
YXJnQ291bnRSZWcsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwor
CisgICAgTGFiZWwgZnJvbVN0YWNrRW50cnkodGhpcyk7CisjZW5kaWYKKyAgICAKKyAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayk7CisKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFp
bGFibGUgaW4gdGhlIEpTU3RhY2suCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFu
ZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgSnVtcCBzdGFja092ZXJmbG93ID0g
YnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0YWNr
TGltaXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0
aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIEp1bXAgc3RhY2tP
dmVyZmxvdyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NP
ZlNvZnRTdGFja0xpbWl0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKIAogICAgIC8vIE1vdmUg
dGhlIHN0YWNrIHBvaW50ZXIgZG93biB0byBhY2NvbW1vZGF0ZSBsb2NhbHMKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0
ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
QEAgLTQ1MiwyOCArNTI1LDEwNSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24o
KQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworCisgICAgSnVtcExpc3QgYXJpdHlPSzsK
ICAgICAKLSAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBu
b3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgIC8vIGhhdmUgYmVl
biBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdo
ZXJlIHdlIGNhbiBzdGF0aWNhbGx5Ci0gICAgLy8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG51bWJl
ciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2ZSBhbHJlYWR5IGNoZWNrZWQp
LgotICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNrIGlzIG5lY2Vzc2FyeSwgd2Ug
ZW50ZXIgaGVyZS4KLSAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMgZnJvbSBhIGN0aSBjYWxsIHRv
IGEgREZHIHN0eWxlIG9wZXJhdGlvbiAobm9ybWFsIEMgY2FsbGluZyBjb252ZW50aW9ucykuCi0g
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyNpZiBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAganVtcChyZWdpc3RlckFy
Z3NDaGVja0FyaXR5KTsKKworICAgIEp1bXBMaXN0IHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwOwor
ICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUykgeworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkubGluayh0aGlzKTsKKyAgICAg
ICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAuYXBwZW5kKGJyYW5jaDMyKEJlbG93LCBhcmdDb3Vu
dFJlZywgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAg
ICAgICAgLy8gV2UgaGF2ZSBleHRyYSByZWdpc3RlciBhcmd1bWVudHMuCisKKyAgICAgICAgLy8g
VGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAvLyBoYXZlIGJlZW4gcGFz
c2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3
ZSBjYW4gc3RhdGljYWxseQorICAgICAgICAvLyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVy
IG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBoYXZlIGFscmVhZHkgY2hlY2tlZCku
CisgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNrIGlzIG5lY2Vzc2FyeSwg
d2UgZW50ZXIgaGVyZS4KKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFy
Z3MgPSBsYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0Fy
Z3NFeHRyYSk7CisKKyAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNzZWQgdG8gZnVuY3Rp
b24KKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICBi
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpLmxpbmtUbyhtYWluRW50cnksIHRoaXMp
OworICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsK
KyAgICAgICAgfQorICAgICAgICBqdW1wKG1haW5FbnRyeSk7CisgICAgfQorCisgICAgLy8gRmFs
bCB0aHJvdWdoCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgIC8vIFRoZXJl
IHNob3VsZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICB1bnNpZ25lZCBy
ZWdpc3RlckFyZ3VtZW50Rml4dXBDb3VudCA9IHN0ZDo6bWluKG51bVBhcmFtZXRlcnMgLSAxLCBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKKyAgICAgICAgTGFiZWwg
cmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cCA9IGxhYmVsKCk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDw9IHJlZ2lzdGVyQXJndW1lbnRGaXh1
cENvdW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBv
aW50c1thcmdJbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwOworICAgIH0K
KworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICBy
ZWdpc3RlckFyaXR5TmVlZHNGaXh1cC5saW5rKHRoaXMpOworCisgICAgaWYgKG51bVBhcmFtZXRl
cnMgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAg
cmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7CisKKyAgICBzcGlsbEFyZ3VtZW50UmVnaXN0
ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgSnVtcCBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwID0ganVtcCgpOworI2VuZGlmCisjZW5k
aWYKKworICAgIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9D
T1VOVEVSUykKKyAgICBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwLmxpbmsodGhpcyk7CisjZW5k
aWYKKworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICBsb2FkMzIoQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAgYXJpdHlPSy5hcHBlbmQoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpB
cml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgZW1pdFN0b3JlQ29kZU9yaWdpbihDb2RlT3JpZ2lu
KDApKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8g
b3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKKyAgICBhcml0
eU9LLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsK
KwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7CiAgICAgbW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBtX2NhbGxB
cml0eUZpeHVwID0gY2FsbCgpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIEp1bXAgdG9GaWxsUmVnaXN0ZXJzID0ganVtcCgpOworCisgICAgbV9z
dGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0
aGlzLCBWTTo6U3RhY2tBcmdzTm9Bcml0eSk7CisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsK
KworICAgIGFyaXR5T0subGluayh0aGlzKTsKKyAgICB0b0ZpbGxSZWdpc3RlcnMubGluayh0aGlz
KTsKKworICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVnaXN0ZXJz
CisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAg
ICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgp
KTsKKworICAgIGp1bXAoZnJvbVN0YWNrRW50cnkpOworI2Vsc2UKKyAgICBhcml0eU9LLmxpbmtU
byhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAganVtcChmcm9tQXJpdHlDaGVjayk7CisjZW5k
aWYKICAgICAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0
aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwpA
QCAtNTAyLDEwICs2NTIsMzUgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkK
ICAgICAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlD
aGVjayk7CisgICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHM7CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0ciA9IGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YocmVnaXN0ZXJFbnRyeU5vQXJpdHkpOworI2Vsc2UKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0ciA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobWFpbkVu
dHJ5KTsKKyNlbmRpZgorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0Fy
aXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFpbkVudHJ5Q29kZVB0cik7CisgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3MpKTsKKyAgICBlbnRy
eXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZl
ci0+bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKSk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQor
ICAgICAgICAgICAgZW50cnkgPSBtYWluRW50cnlDb2RlUHRyOworICAgICAgICBlbHNlIGlmIChy
ZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAg
ICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlw
b2ludHNbYXJnQ291bnRdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnkgPSBsaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAg
ICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5
cGVGb3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgIH0KKyAgICBlbnRyeXBv
aW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NBcml0eU9LRW50cnkpKTsKKyNlbHNlCisgICAgZW50
cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRyeSkpOworI2VuZGlmCisgICAgZW50cnlwb2ludHMu
c2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxpbmtCdWZmZXItPmxvY2F0aW9u
T2YobV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjaykpOwogCiAgICAgbV9ncmFwaC5tX3BsYW4uZmlu
YWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBo
Lm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJp
dHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdU
Rk1vdmUobGlua0J1ZmZlciksIGVudHJ5cG9pbnRzKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6
ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDYgKzIxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fanNEaXJlY3RDYWxscy5hcHBlbmQo
SlNEaXJlY3RDYWxsUmVjb3JkKGNhbGwsIHNsb3dQYXRoLCBpbmZvKSk7CiAgICAgfQogICAgIAor
ICAgIHZvaWQgYWRkSlNEaXJlY3RDYWxsKENhbGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwg
c2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIG1fanNEaXJlY3RD
YWxscy5hcHBlbmQoSlNEaXJlY3RDYWxsUmVjb3JkKGNhbGwsIHNsb3dDYWxsLCBzbG93UGF0aCwg
aW5mbykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGFkZEpTRGlyZWN0VGFpbENhbGwoUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVKdW1wLCBDYWxsIGNhbGwsIExhYmVsIHNsb3dQYXRoLCBDYWxsTGlu
a0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzRGlyZWN0VGFpbENhbGxzLmFwcGVuZChK
U0RpcmVjdFRhaWxDYWxsUmVjb3JkKHBhdGNoYWJsZUp1bXAsIGNhbGwsIHNsb3dQYXRoLCBpbmZv
KSk7CkBAIC0yNjcsNyArMjcyLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhp
dEp1bXBQbGFjZWhvbGRlcjsKICAgICAKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB0
byBjb21waWxlLgotICAgIHZvaWQgY29tcGlsZUVudHJ5KCk7CiAgICAgdm9pZCBjb21waWxlU2V0
dXBSZWdpc3RlcnNGb3JFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxh
ZygpOwogICAgIHZvaWQgY29tcGlsZUJvZHkoKTsKQEAgLTMxOCw3ICszMjIsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBKU0RpcmVjdENhbGxS
ZWNvcmQoQ2FsbCBjYWxsLCBDYWxsIHNsb3dDYWxsLCBMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJ
bmZvKiBpbmZvKQorICAgICAgICAgICAgOiBjYWxsKGNhbGwpCisgICAgICAgICAgICAsIHNsb3dD
YWxsKHNsb3dDYWxsKQorICAgICAgICAgICAgLCBzbG93UGF0aChzbG93UGF0aCkKKyAgICAgICAg
ICAgICwgaW5mbyhpbmZvKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGhh
c1Nsb3dDYWxsKCkgeyByZXR1cm4gc2xvd0NhbGwubV9sYWJlbC5pc1NldCgpOyB9CisKICAgICAg
ICAgQ2FsbCBjYWxsOworICAgICAgICBDYWxsIHNsb3dDYWxsOwogICAgICAgICBMYWJlbCBzbG93
UGF0aDsKICAgICAgICAgQ2FsbExpbmtJbmZvKiBpbmZvOwogICAgIH07CkBAIC0zMzEsNyArMzQ2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaW5mbyhpbmZvKQogICAgICAgICB7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wOwog
ICAgICAgICBDYWxsIGNhbGw7CiAgICAgICAgIExhYmVsIHNsb3dQYXRoOwpAQCAtMzU1LDcgKzM3
MCwxMiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJbmZv
PiBtX2V4Y2VwdGlvbkhhbmRsZXJPU1JFeGl0Q2FsbFNpdGVzOwogICAgIAogICAgIENhbGwgbV9j
YWxsQXJpdHlGaXh1cDsKLSAgICBMYWJlbCBtX2FyaXR5Q2hlY2s7CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIExhYmVsIG1fcmVnaXN0ZXJBcmdzV2l0
aFBvc3NpYmxlRXh0cmFBcmdzOworICAgIExhYmVsIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hl
Y2s7CisgICAgTGFiZWwgbV9zdGFja0FyZ3NBcml0eU9LRW50cnk7CisjZW5kaWYKKyAgICBMYWJl
bCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVjdWxh
dGl2ZUpJVD4gbV9zcGVjdWxhdGl2ZTsKICAgICBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIgbV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxMSArMzcsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1K
SVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcihQbGFuJiBwbGFuLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGppdENvZGUsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCitKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXpl
cihQbGFuJiBwbGFuLCBQYXNzUmVmUHRyPEpJVENvZGU+IGppdENvZGUsCisgICAgc3RkOjp1bmlx
dWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIEpJVEVudHJ5UG9pbnRzJiBlbnRyeXBvaW50
cykKICAgICA6IEZpbmFsaXplcihwbGFuKQogICAgICwgbV9qaXRDb2RlKGppdENvZGUpCiAgICAg
LCBtX2xpbmtCdWZmZXIoV1RGTW92ZShsaW5rQnVmZmVyKSkKLSAgICAsIG1fd2l0aEFyaXR5Q2hl
Y2sod2l0aEFyaXR5Q2hlY2spCisgICAgLCBtX2VudHJ5cG9pbnRzKGVudHJ5cG9pbnRzKQogewog
fQogCkBAIC01Niw5ICs1Nyw4IEBAIHNpemVfdCBKSVRGaW5hbGl6ZXI6OmNvZGVTaXplKCkKIAog
Ym9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIHsKLSAgICBtX2ppdENvZGUtPmluaXRpYWxp
emVDb2RlUmVmKAotICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRG
RyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFu
LmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiA9IEZJ
TkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRv
Q1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpE
RkdKSVQpKS5kYXRhKCkpKTsKKyAgICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRyeVBvaW50cyhK
SVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwogICAgIAogICAg
IG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAKQEAgLTY5LDEw
ICs2OSwxMSBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogCiBib29sIEpJVEZpbmFs
aXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1fd2l0aEFy
aXR5Q2hlY2suaXNFbXB0eVZhbHVlKCkpOwotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVS
ZWYoCi0gICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBj
b2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJs
b2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKLSAgICAgICAgbV93aXRoQXJpdHlDaGVj
ayk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZW50cnlwb2ludHMuZW50cnlGb3IoU3RhY2tBcmdz
TXVzdENoZWNrQXJpdHkpLmlzRW1wdHlWYWx1ZSgpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY29kZVJlZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBj
b2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJs
b2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKTsKKworICAgIG1faml0Q29kZS0+aW5pdGlh
bGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBtX2VudHJ5cG9p
bnRzKSk7CisKICAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSk7CiAg
ICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklURmluYWxpemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVEZpbmFs
aXplciA6IHB1YmxpYyBGaW5hbGl6ZXIgewogcHVibGljOgotICAgIEpJVEZpbmFsaXplcihQbGFu
JiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpFbXB0eVZhbHVlKSk7CisgICAgSklURmluYWxpemVyKFBs
YW4mLCBQYXNzUmVmUHRyPEpJVENvZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4sIEpJ
VEVudHJ5UG9pbnRzJik7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAgCiAgICAg
c2l6ZV90IGNvZGVTaXplKCkgb3ZlcnJpZGU7CkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemVDb21tb24oKTsKLSAgICAKKwogICAgIFJlZlB0
cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IG1f
bGlua0J1ZmZlcjsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV93aXRoQXJpdHlDaGVjazsK
KyAgICBKSVRFbnRyeVBvaW50cyBtX2VudHJ5cG9pbnRzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRj
aFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFy
Z3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJn
dW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0Fy
Z3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
ICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbbm9kZS0+bG9jYWwoKS50b0Fy
Z3VtZW50KCldOwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5l
Q2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1l
bnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1l
bnQoKV07Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewor
ICAgICAgICAgICAgICAgIGlmICgobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCB8fCBub2RlLT5v
cCgpID09IFNldExvY2FsKQorICAgICAgICAgICAgICAgICAgICAmJiAoIW5vZGUtPmxvY2FsKCku
aXNBcmd1bWVudCgpIHx8IG5vZGUgIT0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldKSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5v
cGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZsdXNoQWNjZXNzRGF0
YSkKQEAgLTExNyw3ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaW5pdGlhbEFj
Y2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5vcCgpICE9IFNldExv
Y2FsKTsgLy8gV2Ugc2hvdWxkIGhhdmUgaW5zZXJ0ZWQgYSBGbHVzaCBiZWZvcmUgdGhpcyEKICAg
ICAgICAgICAgIGluaXRpYWxBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgIGluaXRpYWxBY2Nlc3NOb2Rlcy5vcGVyYW5k
KG9wZXJhbmQpID0gbm9kZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBA
IEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIEdldFN0
YWNrOgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0UmVz
dExlbmd0aDoKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsOCBAQCBNaW5pZmllZE5vZGUgTWlu
aWZpZWROb2RlOjpmcm9tTm9kZShOb2RlCiAgICAgcmVzdWx0Lm1fb3AgPSBub2RlLT5vcCgpOwog
ICAgIGlmIChoYXNDb25zdGFudChub2RlLT5vcCgpKSkKICAgICAgICAgcmVzdWx0Lm1faW5mbyA9
IEpTVmFsdWU6OmVuY29kZShub2RlLT5hc0pTVmFsdWUoKSk7CisgICAgZWxzZSBpZiAobm9kZS0+
b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICByZXN1bHQubV9pbmZvID0gMDsK
ICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gUGhhbnRvbURpcmVjdEFy
Z3VtZW50cyB8fCBub2RlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMpOwogICAgICAg
ICByZXN1bHQubV9pbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01pbmlmaWVkTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWluaWZpZWROb2RlLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNC0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDMsNiArNDMsNyBAQCBpbmxpbmUgYm9vbCBiZWxvbmdzSW5NaW5pZmllZEdyYXBoKE5v
ZGVUCiAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1
bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJn
dW1lbnRSZWdpc3RlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIGJvb2wgTm9kZTo6aGFzVmFyaWFi
bGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9j
YWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
CiAgICAgY2FzZSBGbHVzaDoKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjA5
NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyOCw2ICs4MjgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNWYXJpYWJsZUFjY2Vz
c0RhdGEoR3JhcGgmKTsKICAgICBib29sIGFjY2Vzc2VzU3RhY2soR3JhcGgmIGdyYXBoKQogICAg
IHsKKyAgICAgICAgaWYgKG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgICAgICByZXR1cm4gaGFzVmFyaWFibGVBY2Nlc3NEYXRhKGdy
YXBoKTsKICAgICB9CiAgICAgCkBAIC04NDYsNiArODQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPFZhcmlhYmxlQWNjZXNzRGF0YSo+KCktPmZpbmQoKTsKICAgICB9
CiAgICAgCisgICAgdm9pZCBzZXRWYXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSkKKyAgICB7CisgICAgICAgIG1fb3BJbmZvID0gdmFyaWFibGU7CisgICAgfQor
ICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmxvY2FsKCk7CkBAIC0xMjE0LDYgKzEyMjIsMTcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkp
OwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpCisgICAg
eworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyOworICAgIH0KKyAg
ICAKKyAgICB1bnNpZ25lZCBhcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJ
bmZvMi5hczx1bnNpZ25lZD4oKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNSZXN1bHQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICEhcmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMs
IE5vZGVSZXN1bHRKUykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2Un
cmUgcmV0dXJuaW5nIGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVS
ZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldEFyZ3VtZW50UmVnaXN0ZXIsIE5vZGVSZXN1bHRK
UyAvKiB8IE5vZGVNdXN0R2VuZXJhdGUgKi8pIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGxv
Y2FsIHZhcmlhYmxlIGFjY2Vzcy4gVGhlc2Ugbm9kZXMgYXJlIGxpbmtlZCB0b2dldGhlciB1c2lu
ZyBQaGkgbm9kZXMuICovXAogICAgIC8qIEFueSB0d28gbm9kZXMgdGhhdCBhcmUgcGFydCBvZiB0
aGUgc2FtZSBQaGkgZ3JhcGggd2lsbCBzaGFyZSB0aGUgc2FtZSAqL1wKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDYgKzE0NCwxMSBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRv
cjo6ZXhlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjogeworICAgICAgICBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKG5vZGUtPmxv
Y2FsKCkpLnNldE5vZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
TW92SGludDogewogICAgICAgICBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKG5vZGUt
PnVubGlua2VkTG9jYWwoKSkuc2V0Tm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE2ICsxMTIsMzIgQEAgcHVibGljOgogICAgICAg
ICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDAp
LT5vcmlnaW47CiAgICAgICAgIAotICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3Vt
ZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAg
IE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVu
dCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBKdXN0
IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBu
ZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJn
dW1lbnRdOworICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YW4gYXJndW1lbnQgbm9kZSBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KKyAgICAgICAgICAgICAg
ICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ3VtZW50XTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2Rl
KAotICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2lu
LAotICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkp
OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAg
ICAgICAgICAgTm9kZSogbm9kZTsKKyAgICAgICAgICAgIE5vZGUqIHN0YWNrTm9kZTsKKyAgICAg
ICAgICAgIGlmIChhcmd1bWVudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEdldEFyZ3VtZW50UmVnaXN0ZXIs
IG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGFyZ3VtZW50UmVnaXN0ZXJJ
bmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudChhcmd1bWVudCkpKTsKKyAgICAgICAgICAgICAgICBz
dGFja05vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBTcGVjTm9uZSwgU2V0TG9jYWwsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
RWRnZShub2RlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5vZGUg
PSBuZXdSb290LT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVj
Tm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG9s
ZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2Rl
ID0gbm9kZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
c0ZvckNoZWNraW5nW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzT25TdGFja1thcmd1bWVudF0gPSBzdGFja05vZGU7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxz
OyArK2xvY2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsOSBAQCBQbGFuOjpDb21waWxhdGlvblBhdGgg
UGxhbjo6Y29tcGlsZUluVGhyCiAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgIHBlcmZvcm1Db25z
dGFudEZvbGRpbmcoZGZnKTsKICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBkZmcubV9z
dHJlbmd0aFJlZHVjZUFyZ3VtZW50cyA9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzOwogICAgIGNo
YW5nZWQgfD0gcGVyZm9ybUNGR1NpbXBsaWZpY2F0aW9uKGRmZyk7CisgICAgY2hhbmdlZCB8PSBw
ZXJmb3JtU3RyZW5ndGhSZWR1Y3Rpb24oZGZnKTsKICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Mb2Nh
bENTRShkZmcpOwogICAgIAogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAg
ICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IGFyZ3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSBk
ZWZpbml0ZWx5IHJlYWQuCisgICAgICAgICAgICAvLyBBbGwgb2YgdGhlIG91dGVybW9zdCBzdGFj
ayBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVseSByZWFkLgogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
OyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSkpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
bG9ja2VyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc0LDcgKzc0LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+dmFyaWFibGVzQXRIZWFk
Lm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YWNjZXNz
ZXNTdGFjayhtX2dyYXBoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAg
ICAgICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV9ncmFwaC5tX3BsYW4ubXVzdEhh
bmRsZVZhbHVlc1tpXSkpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjogeworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBpZiAoIXZhcmlhYmxlLT5jb3VsZFJlcHJlc2VudEludDUyKCkgJiYgKHByZWRpY3Rp
b24gJiBTcGVjSW50NTJPbmx5KSkKKyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRp
Y3Rpb24gfCBTcGVjQW55SW50QXNEb3VibGUpICYgflNwZWNJbnQ1Mk9ubHk7CisgICAgICAgICAg
ICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC05NjgsNiArOTc4LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIFNldExvY2FsOgor
ICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgICAgIGNhc2UgVUludDMyVG9O
dW1iZXI6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgfSB3aGlsZSAoY2hhbmdl
ZCk7CiAgICAgICAgIAotICAgICAgICAvLyBBbGwgb2YgdGhlIGFyZ3VtZW50cyBzaG91bGQgYmUg
bGl2ZSBhdCBoZWFkIG9mIHJvb3QuIE5vdGUgdGhhdCB3ZSBtYXkgZmluZCB0aGF0IHNvbWUKKyAg
ICAgICAgLy8gQWxsIG9mIHRoZSBzdGFjayBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQgaGVh
ZCBvZiByb290LiBOb3RlIHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCiAgICAgICAgIC8vIGxv
Y2FscyBhcmUgbGl2ZSBhdCBoZWFkIG9mIHJvb3QuIFRoaXMgc2VlbXMgd3JvbmcgYnV0IGlzbid0
LiBUaGlzIHdpbGwgaGFwcGVuIGZvciBleGFtcGxlCiAgICAgICAgIC8vIGlmIHRoZSBmdW5jdGlv
biBhY2Nlc3NlcyBjbG9zdXJlIHZhcmlhYmxlICM0MiBmb3Igc29tZSBvdGhlciBmdW5jdGlvbiBh
bmQgd2UgZWl0aGVyIGRvbid0CiAgICAgICAgIC8vIGhhdmUgdmFyaWFibGUgIzQyIGF0IGFsbCBv
ciB3ZSBoYXZlbid0IHNldCBpdCBhdCByb290LCBmb3Igd2hhdGV2ZXIgcmVhc29uLiBCYXNpY2Fs
bHkgdGhpcwpAQCAtMTU3LDggKzE1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vCiAgICAgICAg
IC8vIEZvciBvdXIgcHVycG9zZXMgaGVyZSwgdGhlIGltcHJlY2lzaW9uIGluIHRoZSBhbGlhc2lu
ZyBpcyBoYXJtbGVzcy4gSXQganVzdCBtZWFucyB0aGF0IHdlCiAgICAgICAgIC8vIG1heSBub3Qg
ZG8gYXMgbXVjaCBQaGkgcHJ1bmluZyBhcyB3ZSB3YW50ZWQuCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSBsaXZlQXRIZWFkLmF0SW5kZXgoMCkubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykKLSAg
ICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4
KDApLmFyZ3VtZW50KGkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxpdmVBdEhlYWQuYXRJ
bmRleCgwKS5udW1iZXJPZkFyZ3VtZW50cygpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoaSA+
PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAg
ICAgICAgLy8gU3RhY2sgYXJndW1lbnRzIGFyZSBsaXZlIGF0IHRoZSBoZWFkIG9mIHJvb3QuCisg
ICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBsaXZlQXRIZWFkLmF0
SW5kZXgoMCkuYXJndW1lbnQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyBOZXh0IGlkZW50aWZ5IHdoZXJlIHdlIHdvdWxkIHdhbnQgdG8gc2luayBQ
dXRTdGFja3MgdG8uIFdlIHNheSB0aGF0IHRoZXJlIGlzIGEgZGVmZXJyZWQKICAgICAgICAgLy8g
Zmx1c2ggaWYgd2UgaGFkIGEgUHV0U3RhY2sgd2l0aCBhIGdpdmVuIEZsdXNoRm9ybWF0IGJ1dCBp
dCBoYXNuJ3QgYmVlbiBtYXRlcmlhbGl6ZWQgeWV0LgpAQCAtMzU4LDcgKzM2Miw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGZvciAoTm9kZSogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6
Ci0gICAgICAgICAgICAgICAgICAgIHB1dFN0YWNrc1RvU2luay5hZGQobm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2suY29udGFpbnMobm9k
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICBzc2FDYWxjdWxhdG9yLm5ld0RlZigKICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhbmRUb1ZhcmlhYmxlLm9wZXJhbmQobm9kZS0+c3RhY2tBY2Nlc3NEYXRh
KCktPmxvY2FsKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBub2RlLT5jaGlsZDEo
KS5ub2RlKCkpOwpAQCAtNDgzLDExICs0ODgsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9IG1h
cHBpbmcub3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNl
IHdlIGRvbid0IGRlbGV0ZSBhcmd1bWVudCBQdXRTdGFja3MsIG5vIG5lZWQgdG8gYWRkIG9uZSBi
YWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9hcmd1bWVudHNPblN0
YWNrLmNvbnRhaW5zKGluY29taW5nKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdvdHRhIGluc2VydCBhIFB1dFN0YWNr
LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQs
ICIgYXQgIiwgbm9kZSwgIlxuIik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlu
Y29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBpbmNvbWluZyk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBA
IC01MzgsNiArNTQ3LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNv
bWluZzsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29uY3JldGUoZGVmZXJyZWQub3BlcmFu
ZChvcGVyYW5kKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nID0gbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKGluY29taW5nKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgcGhpTm9kZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXNzdWUgYSBHZXRTdGFjayB0byBnZXQgdGhl
IHZhbHVlLiBUaGlzIG1pZ2h0IGludHJvZHVjZSBzb21lIHJlZHVuZGFuY3kKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kYXRhW2luZGV4
XS5uYW1lID0gbmFtZTsKICAgICAgICAgbV9kYXRhW2luZGV4XS5zcGlsbE9yZGVyID0gc3BpbGxP
cmRlcjsKICAgICB9CisKICAgICB2b2lkIHJlbGVhc2UoUmVnSUQgcmVnKQogICAgIHsKICAgICAg
ICAgcmVsZWFzZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CkBAIC0xODYsNiArMTg3
LDcgQEAgcHVibGljOgogICAgICAgICArK21fZGF0YVtpbmRleF0ubG9ja0NvdW50OwogICAgICAg
ICBBU1NFUlQobV9kYXRhW2luZGV4XS5sb2NrQ291bnQpOwogICAgIH0KKwogICAgIHZvaWQgdW5s
b2NrKFJlZ0lEIHJlZykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gQmFua0luZm86
OnRvSW5kZXgocmVnKTsKQEAgLTIzNiw2ICsyMzgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG1fYmFuay0+aXNMb2NrZWRBdEluZGV4KG1faW5kZXgpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCB1bmxvY2soKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bV9iYW5rLT51bmxvY2tBdEluZGV4KG1faW5kZXgpOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICB2b2lkIHJlbGVhc2UoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBtX2Jhbmst
PnJlbGVhc2VBdEluZGV4KG1faW5kZXgpOwpAQCAtMjk4LDYgKzMwNSwxMyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gbV9kYXRhW2luZGV4XS5sb2NrQ291bnQ7CiAgICAgfQogCisgICAgdm9p
ZCB1bmxvY2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgTlVNX1JFR1MpOworICAgICAgICBBU1NFUlQobV9kYXRhW2luZGV4XS5sb2NrQ291bnQp
OworICAgICAgICAtLW1fZGF0YVtpbmRleF0ubG9ja0NvdW50OworICAgIH0KKwogICAgIFZpcnR1
YWxSZWdpc3RlciBuYW1lQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpbmRleCA8IE5VTV9SRUdTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIC8vIEZpbmQgYWxsIFNldExvY2FscyBhbmQgY3JlYXRlIERlZnMgZm9y
IHRoZW0uIFdlIGhhbmRsZSBTZXRBcmd1bWVudCBieSBjcmVhdGluZyBhCi0gICAgICAgIC8vIEdl
dExvY2FsLCBhbmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBmb3JtYXQuCisgICAgICAgIC8vIEdldFN0
YWNrLCBhbmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBmb3JtYXQuIFdlIGhhbmRsZSBHZXRBcmd1bWVu
dFJlZ2lzdGVyIGJ5IGRpcmVjdGx5CisgICAgICAgIC8vIGFkZGluZyB0aGUgbm9kZSB0byBtX2Fy
Z3VtZW50TWFwcGluZyBoYXNoIG1hcC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAg
ICBpZiAoIWJsb2NrKQpAQCAtODMsMTQgKzg0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8v
IGFzc2lnbm1lbnQgZm9yIGV2ZXJ5IGxvY2FsLgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewog
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5vcCgpICE9IFNl
dEFyZ3VtZW50KQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsICYm
IG5vZGUtPm9wKCkgIT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+b3AoKSAhPSBHZXRBcmd1bWVudFJl
Z2lzdGVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9k
ZSogY2hpbGROb2RlOworICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG51bGxwdHI7
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCiAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAg
ICAgICAgICAgICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBub2RlKTsKICAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKApAQCAtMTAxLDkgKzEwNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3VtZW50R2V0dGVycy5hZGQoY2hpbGROb2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9hcmd1bWVudE1hcHBpbmcuYWRkKG5vZGUsIGNoaWxkTm9kZSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fY2FsY3Vs
YXRvci5uZXdEZWYoCi0gICAgICAgICAgICAgICAgICAgIG1fc3NhVmFyaWFibGVGb3JWYXJpYWJs
ZS5nZXQodmFyaWFibGUpLCBibG9jaywgY2hpbGROb2RlKTsKKworICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWxjdWxhdG9yLm5ld0RlZigK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3NhVmFyaWFibGVGb3JWYXJpYWJsZS5nZXQodmFy
aWFibGUpLCBibG9jaywgY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxv
Y2spOwpAQCAtMjk0LDcgKzI5OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHZh
bHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IGNoaWxkOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIAorCisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOiB7CisgICAg
ICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9w
ZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazog
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmd1bWVudEdldHRlcnMuY29udGFpbnMo
bm9kZSkpOwogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZChub2Rl
LT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpID0gbm9kZTsKQEAgLTM4MiwxNyArMzkzLDIxIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2lj
QmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9n
cmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsg
aS0tOykgeworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBo
Lm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnNpemUoKTsgaS0tOykgewogICAgICAg
ICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tp
XSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3Jh
cGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG5vZGUpOwotICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCktPmZvcm1hdDsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFy
Z3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgZm9y
bWF0ID0gdmFyaWFibGUtPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9y
bWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29y
ZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4
aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5n
W2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBm
b3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDcsNiArMTQ3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAog
ICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoK
ICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNl
dExvY2FsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MzIsNyArOTMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoZHluYW1pY09yaWdpbiwgbV9z
dHJlYW0tPnNpemUoKSk7CiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29k
ZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGluZm8tPnNldFVwQ2FsbChjYWxsVHlw
ZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXlsb2FkR1BSKTsKKyAgICBpbmZvLT5z
ZXRVcENhbGwoY2FsbFR5cGUsIFN0YWNrQXJncywgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
ZWVQYXlsb2FkR1BSKTsKICAgICAKICAgICBhdXRvIHNldFJlc3VsdEFuZFJlc2V0U3RhY2sgPSBb
Jl0gKCkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMp
OwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAg
IH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyks
IEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsK
QEAgLTU2MTQsNiArNTYxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBj
YXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDk2Mjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94
SW50NTIoR1BSUmVnIHNvdQogICAgIHVubG9jayhmcHIpOwogfQogCi1HUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcgZ3ByVG9Vc2UpCiB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVy
YXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7CiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOwogCiAgICAgICAg
IGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUg
PSBlZGdlLT5hc0pTVmFsdWUoKTsKQEAgLTEyMCw3ICsxMjAsMTIgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAvLyBJZiB0aGUgcmVnaXN0ZXIgaGFz
IGFscmVhZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0YWtlIGEgY29weS4KICAgICAgICAgLy8g
SWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFjZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0
aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdEludDMyLCBub3QgRGF0YUZvcm1hdEpTSW50
MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxs
b2NhdGUoZ3ByVG9Vc2UpOworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdwclRvVXNlICE9IEludmFsaWRHUFJSZWcgJiYgZ3By
ICE9IGdwclRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3By
VG9Vc2UpOwogICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIGdwciwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KQEAgLTEzOCw2ICsxNDMsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1
ZShFZGdlIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGlm
IChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJUb1VzZSkgeworICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KQEAgLTYzMiw2ICs2NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0
cmljdEVxCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewogICAg
IENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7CisgICAgQXJndW1lbnRzTG9jYXRpb24g
YXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAgYm9vbCBpc1ZhcmFyZ3MgPSBmYWxz
ZTsKICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzVGFpbCA9
IGZhbHNlOwpAQCAtNzE0LDcgKzcyNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAg
ICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKLSAgICAKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWVPcGVyYW5kPiB0YWlsQ2FsbGVlOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBjYWxsZWVHUFJUZW1wb3Jhcnk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2pp
dCwgVk06OkRGR0NhbGxlcik7CisKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IG51
bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBudWxs
cHRyOwogICAgIGlmIChpc0RpcmVjdCkgewpAQCAtNzMzLDYgKzc0OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUjsK
ICAgICAgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSBtX2ppdC5ncmFwaCgpLm1fbmV4
dE1hY2hpbmVMb2NhbDsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0
LCBWTTo6Q2FsbFZhcmFyZ3MpOwogICAgICAgICBpZiAoaXNGb3J3YXJkVmFyYXJncykgewogICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMo
KSkKQEAgLTg0MSwxNSArODU3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1RhaWwpIHsKKyAgICAgICAgICAg
IGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6VGFpbENhbGwpOwogICAgICAgICAgICAgRWRn
ZSBjYWxsZWVFZGdlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKTsKLSAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKLSAgICAgICAgICAgIGNh
bGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGdldCB0aGUg
YSBzcGVjaWZpYyByZWdpc3RlciBmb3IgdGhlIGNhbGxlZSwgc2luY2UgdGhhdCB3aWxsIGp1c3Qg
bW92ZQorICAgICAgICAgICAgLy8gZnJvbSBhbnkgY3VycmVudCByZWdpc3Rlci4gIFdoZW4gd2Ug
c2lsZW50IGZpbGwgaW4gdGhlIHNsb3cgcGF0aCB3ZSdsbCBmaWxsCisgICAgICAgICAgICAvLyB0
aGUgb3JpZ2luYWwgcmVnaXN0ZXIgYW5kIHdvbid0IGhhdmUgdGhlIGNhbGxlZSBpbiB0aGUgcmln
aHQgcmVnaXN0ZXIuCisgICAgICAgICAgICAvLyBUaGVyZWZvcmUgd2UgYWxsb2NhdGUgYSB0ZW1w
IHJlZ2lzdGVyIGZvciB0aGUgY2FsbGVlIGFuZCBtb3ZlIG91cnNlbHZlcy4KKyAgICAgICAgICAg
IHRhaWxDYWxsZWUuZW1wbGFjZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyB0YWlsQ2FsbGVlR1BSID0gdGFpbENhbGxlZS0+Z3ByKCk7CisgICAgICAgICAgICBjYWxsZWVH
UFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgICAgICBpZiAodGFpbENh
bGxlZUdQUiAhPSBjYWxsZWVHUFIpCisgICAgICAgICAgICAgICAgY2FsbGVlR1BSVGVtcG9yYXJ5
ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIGNhbGxlZUdQUik7CiAgICAgICAgICAgICBpZiAoIWlzRGly
ZWN0KQotICAgICAgICAgICAgICAgIGNhbGxlZS51c2UoKTsKKyAgICAgICAgICAgICAgICB0YWls
Q2FsbGVlLT51c2UoKTsKIAorICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb24gPSBhcmd1bWVu
dHNMb2NhdGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsKKyAgICAgICAgICAgIHNodWZmbGVEYXRh
LmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gYXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOwog
ICAgICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcjsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IG1faml0
LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCk7Ci0gICAgICAgICAgICBzaHVmZmxlRGF0YS5j
YWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUih0YWls
Q2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5y
ZXNpemUobnVtQWxsb2NhdGVkQXJncyk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpIHsKQEAgLTg2NCw3ICs4OTAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1ZmZs
ZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9qaXQu
Y29kZUJsb2NrKCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
Pm9wKCkgPT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAgIC8vIENhbGxFdmFsIGlzIGhhbmRsZWQg
d2l0aCB0aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxl
cjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7
CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBp
KyspIHsKQEAgLTg3OCwxNSArOTA1LDU3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2Fs
bGVlQXJndW1lbnRTbG90KGkpKTsKKworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9q
aXQsIFZNOjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAwOykgeworICAgICAgICAgICAgICAgIEdQ
UlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50
KGkpOworICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJB
cmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2UsIHBsYXRmb3JtQXJnR1BSKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOworICAgICAgICAgICAgICAgIEFT
U0VSVChhcmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwgcGxhdGZvcm1BcmdHUFIgPT0gSW52YWxp
ZEdQUlJlZyk7CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGZyZWUgdGhlIG5vbi1hcmd1bWVu
dCByZWdpc3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1B
cmdHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYXJnR1BSLCBKSVRDb21waWxl
cjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJndW1lbnQgZWRnZXMgZm9yIGFyZ3VtZW50
cyBwYXNzZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVt
UGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0g
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7CisgICAgICAgICAgICAgICAg
aWYgKGFyZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgICAgIEVkZ2Ug
YXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxk
KCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgICAgIHVzZShhcmdFZGdlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdD
b3VudCh0aGlzLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IGFyZ0NvdW50LmdwcigpOworICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIGFyZ0NvdW50R1BSKTsKKyAgICAg
ICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2Nh
dGVkQXJncyk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7
IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxh
dGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBK
SVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBw
bGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFyYXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAg
ICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0g
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAg
Y2FsbGVlLnVzZSgpOwotICAgICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGls
ZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICAgICAgaWYg
KGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgfQpAQCAtOTEzLDcg
Kzk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICB9
OwogICAgIAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2Nr
KCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxU
eXBlLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CisgICAgY2Fs
bExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CiAKICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBDYWxsRXZhbCkgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNhbGwgb3BlcmF0aW9uQ2Fs
bEV2YWwgYnV0IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBwYXJhbWV0ZXIgYXJlYSBp
bgpAQCAtOTU0LDggKzEwMjMsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZQogICAgICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChub2RlLT5vcCgpID09IERpcmVjdFRhaWxDYWxsKTsKICAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgICAgICAg
ICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIo
KSk7CisKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1
bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6TGFi
ZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgpOworCisgICAgICAgICAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIo
Jm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0
LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAgICAgCkBAIC05NzEs
NiArMTA0Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNhbGxMaW5r
SW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52
YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAg
ICAgICAgaWYgKGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgICAg
ICAgICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5n
cHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKQEAgLTk4MSw2
ICsxMDU4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAg
ICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwo
KTsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0
Q2FsbCk7CisKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7
CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQubmVhckNh
bGwoKTsKQEAgLTk4OCwyMiArMTA2NywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgc2xvd1Bh
dGggPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgIG1f
aml0LnBvcChKSVRDb21waWxlcjo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpKTsKKyAgICAg
ICAgICAgIG1faml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKworICAgICAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZv
LCBjYWxsZWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBt
X2ppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAgICAgICAKICAgICAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0
YWNrKCk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xv
d1BhdGgsIGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgbV9qaXQuYWRkSlNEaXJlY3RDYWxsKGNh
bGwsIHNsb3dDYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZvKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKKworICAgIGlmIChpc1RhaWwgJiYgY2FsbGVlR1BSVGVtcG9yYXJ5ICE9IHN0
ZDo6bnVsbG9wdCkKKyAgICAgICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVl
R1BSVGVtcG9yYXJ5LT5ncHIoKSk7CisKICAgICBtX2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4
KGNhbGxTaXRlKTsKLSAgICAKKwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgdGFyZ2V0
VG9DaGVjazsKICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0
cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9D
aGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCkBAIC0xMDI1LDIzICsx
MTA5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAg
IGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsKSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVy
IGNhbGxGcmFtZVNodWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSk7Ci0gICAgICAgIGNhbGxGcmFt
ZVNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1Qw
KSk7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAg
ICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhh
cmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpKTsKICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIu
cHJlcGFyZUZvclNsb3dQYXRoKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubW92ZShj
YWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1Qw
Ci0KLSAgICAgICAgaWYgKGlzVGFpbCkKLSAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2Fs
bGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVl
R1BSIHRvIHJlZ1QwCi0gICAgfQorICAgIH0gZWxzZSBpZiAoaXNUYWlsKQorICAgICAgICBtX2pp
dC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGlu
ayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8g
TGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsK
IAotICAgIGlmIChpc1RhaWwpCisgICAgaWYgKGlzVGFpbCkgeworICAgICAgICB0YWlsQ2FsbGVl
ID0gc3RkOjpudWxsb3B0OworICAgICAgICBjYWxsZWVHUFJUZW1wb3JhcnkgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENh
bGwpOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgc2V0UmVzdWx0QW5kUmVzZXRTdGFj
aygpOwogCiAgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9D
aGVjaywgY2FsbExpbmtJbmZvKTsKQEAgLTQxNjYsNiArNDI0OSw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAog
ICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewogICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aChu
b2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZlSklUKEpJVENvbXBpbAog
ICAgICwgbV9sYXN0R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5cGUpCiAgICAgLCBtX2luZGV4SW5C
bG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0
ZXJDb3VudCgpKQorICAgICwgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSArIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpCiAgICAgLCBtX3N0
YXRlKG1faml0LmdyYXBoKCkpCiAgICAgLCBtX2ludGVycHJldGVyKG1faml0LmdyYXBoKCksIG1f
c3RhdGUpCiAgICAgLCBtX3N0cmVhbSgmaml0LmppdENvZGUoKS0+dmFyaWFibGVFdmVudFN0cmVh
bSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjbGVhckdlbmVyYXRp
b25JbmZvCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8u
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9baV0gPSBHZW5lcmF0aW9uSW5m
bygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50R2VuZXJhdGlvbklu
Zm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSA9IEdl
bmVyYXRpb25JbmZvKCk7CiAgICAgbV9ncHJzID0gUmVnaXN0ZXJCYW5rPEdQUkluZm8+KCk7CiAg
ICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7CiB9CkBAIC0xMTk5LDYgKzEyMDIs
MjYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJpbmcoRGF0YQogICAgIHJldHVy
biBzdHJpbmdzW2Zvcm1hdF07CiB9CiAKK3N0YXRpYyB2b2lkIGR1bXBSZWdpc3RlckluZm8oR2Vu
ZXJhdGlvbkluZm8mIGluZm8sIHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmZvLmFsaXZl
KCkpCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDolcyVzIiwgaW5kZXgsIGRhdGFGb3JtYXRT
dHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxs
Rm9ybWF0KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19f
XSIsIGluZGV4KTsKKyAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRE
b3VibGUpCisgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOworICAgIGVs
c2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZQorI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgICAgICYmICEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZv
cm1hdEpTKQorI2VuZGlmCisgICAgICAgICkgeworICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVi
dWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0YoIlxuIik7
CisgICAgCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hhciogbGFiZWwp
CiB7CiAgICAgaWYgKGxhYmVsKQpAQCAtMTIwOCwyNSArMTIzMSwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhCiAgICAgbV9ncHJzLmR1bXAoKTsKICAgICBkYXRh
TG9nRigiICBmcHJzOlxuIik7CiAgICAgbV9mcHJzLmR1bXAoKTsKLSAgICBkYXRhTG9nRigiICBW
aXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2Vu
ZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8g
PSBtX2dlbmVyYXRpb25JbmZvW2ldOwotICAgICAgICBpZiAoaW5mby5hbGl2ZSgpKQotICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5zcGlsbEZvcm1hdCgpKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19fXSIs
IGkpOwotICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpCi0gICAgICAgICAgICBkYXRhTG9nRigiOmZwciVkXG4iLCBpbmZvLmZwcigpKTsKLSAgICAg
ICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lCi0jaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICYmICEoaW5mby5yZWdpc3RlckZvcm1hdCgp
ICYgRGF0YUZvcm1hdEpTKQotI2VuZGlmCi0gICAgICAgICAgICApIHsKLSAgICAgICAgICAgIEFT
U0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgZGF0YUxvZ0Yo
Ijolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICB9CisKKyAgICBkYXRhTG9nRigiICBB
cmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgZHVtcFJl
Z2lzdGVySW5mbyhtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm9baV0sIGkpOworCisgICAgZGF0YUxv
Z0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lzdGVyczpcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBkdW1wUmVnaXN0
ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9baV0sIGkpOworCiAgICAgaWYgKGxhYmVsKQogICAgICAg
ICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVsKTsKIH0KQEAgLTE2NzcsNiArMTY5MCw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAKICAgICBtX2ppdC5i
bG9ja0hlYWRzKClbbV9ibG9jay0+aW5kZXhdID0gbV9qaXQubGFiZWwoKTsKIAorICAgIGlmICgh
bV9ibG9jay0+aW5kZXgpCisgICAgICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOworCiAgICAgaWYg
KCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpIHsKICAgICAgICAgLy8gRG9u
J3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2tzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGFj
Y29yZGluZyB0byBDRkEuCiAgICAgICAgIC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQgbm9ib2R5IGhh
cyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRoaXMgYmxvY2ssIGRyb3AgaW4gYQpAQCAtMTY4NywxNSAr
MTcwMywzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAKICAg
ICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwogICAgIAor
ICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIHNldHVwQXJndW1lbnRSZWdpc3RlcnNG
b3JFbnRyeSgpOworICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7
CiAgICAgbV9qaXQuaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsKICAgICBtX2ppdC5qaXRBc3NlcnRB
cmd1bWVudENvdW50U2FuZSgpOwogCiAgICAgbV9zdGF0ZS5yZXNldCgpOwogICAgIG1fc3RhdGUu
YmVnaW5CYXNpY0Jsb2NrKG1fYmxvY2spOwotICAgIAorCiAgICAgZm9yIChzaXplX3QgaSA9IG1f
YmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7IGktLTspIHsKICAgICAgICAgaW50IG9wZXJh
bmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpOworICAgICAg
ICBpZiAoIW1fYmxvY2stPmluZGV4ICYmIG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5h
cmd1bWVudEZvckluZGV4KGkpOworICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9q
aXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ3VtZW50XTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGFyZ3VtZW50Tm9kZSAmJiBhcmd1bWVudE5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2Rl
LT5yZWZDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gTm8gbmVlZCB0
byByZWNvcmQgZGVhZCBHZXRBcmd1bWVudFJlZ2lzdGVycydzLgorICAgICAgICAgICAgICAgIG1f
c3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRXZlbnQ6
Om1vdkhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBNaW5pZmllZElEKGFyZ3VtZW50Tm9k
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudE5vZGUtPmxvY2FsKCkpKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWRbaV07CiAgICAgICAgIGlm
ICghbm9kZSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFk
IFNldExvY2FsJ3MuCkBAIC0xNzY0LDcgKzE3OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBhYnN0cmFj
dCBzdGF0ZSBpcyByZW1hdGVyaWFsaXplZCBmb3IgdGhlIG5leHQgbm9kZS4KICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhtX2luZGV4SW5CbG9jayk7CiAgICAgfQotICAgIAor
CiAgICAgLy8gUGVyZm9ybSB0aGUgbW9zdCBiYXNpYyB2ZXJpZmljYXRpb24gdGhhdCBjaGlsZHJl
biBoYXZlIGJlZW4gdXNlZCBjb3JyZWN0bHkuCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbV9nZW5lcmF0aW9uSW5m
by5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTE3ODIsMTMgKzE4MTYsMTUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAg
IE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2Rl
KiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldOwogICAgICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBk
b24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50Cisg
ICAgICAgICAgICB8fCAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5jaGlsZDEoKS0+
b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgfHwgbm9kZS0+b3AoKSA9
PSBHZXRBcmd1bWVudFJlZ2lzdGVyKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPnNob3VsZEdlbmVy
YXRlKCkpOwogCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CkBAIC0xNzk5LDIzICsxODM1LDQ0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgCiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxv
Y2FsKCk7CiAKLSAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3Vy
Y2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7Ci0gICAgICAgIAor
ICAgICAgICBKU1ZhbHVlU291cmNlIHZhbHVlU291cmNlOworCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXIgPSBJbnZhbGlkR1BSUmVnOworCisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUykgeworICAgICAgICAgICAgYXJndW1lbnRSZWdpc3RlciA9IGFyZ3VtZW50UmVnaXN0
ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBKU1Zh
bHVlU291cmNlKGFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAgICB9IGVsc2UKKyNlbmRpZgorI2Vu
ZGlmCisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSk7CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjogewotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAg
ICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2pp
dC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjog
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoYXJndW1lbnRSZWdpc3RlciwgdGVtcC5ncHIo
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAg
ICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVl
RmFsc2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+
MSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZsdXNo
ZWRDZWxsOiB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50UmVnaXN0ZXIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGFy
Z3VtZW50UmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgpAQCAtMTg0NiwxMCArMTkwMywzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3Vt
ZW50VHlwZXMoCiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKCk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNldHVwQXJndW1lbnRSZWdpc3RlcnNGb3JFbnRyeSgpCit7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIEJhc2ljQmxvY2sqIGZpcnN0
QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKDApOworCisgICAgLy8gICYmJiYgIFJldmlzaXQg
dGhpcyB0byB1c2UgbV9hcmd1bWVudHNGb3JDaGVja2luZworICAgIGZvciAoc2l6ZV90IGluZGV4
SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGZpcnN0QmxvY2stPnNpemUoKTsgKytpbmRleElu
QmxvY2spIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGZpcnN0QmxvY2stPmF0KGluZGV4SW5CbG9j
ayk7CisKKyAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikgewor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1
YWxSZWdpc3RlcigpOworICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IEdQUlJlZyBhcmd1bWVudFJlZyA9IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2RlLT5h
cmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VS
VChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgQVNTRVJUKCFtX2dwcnMuaXNMb2NrZWQoYXJndW1lbnRSZWcpKTsKKyAgICAgICAgICAgIG1f
Z3Bycy5hbGxvY2F0ZVNwZWNpZmljKGFyZ3VtZW50UmVnKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oYXJndW1lbnRSZWcsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAg
ICAgICAgIGluZm8uaW5pdEFyZ3VtZW50UmVnaXN0ZXJWYWx1ZShub2RlLCBub2RlLT5yZWZDb3Vu
dCgpLCBhcmd1bWVudFJlZywgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIGluZm8ubm90aWNl
T1NSQmlydGgoKm1fc3RyZWFtLCBub2RlLCB2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAg
Ly8gRG9uJ3QgbGVhdmUgYXJndW1lbnQgcmVnaXN0ZXJzIGxvY2tlZC4KKyAgICAgICAgICAgIG1f
Z3Bycy51bmxvY2soYXJndW1lbnRSZWcpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisK
IGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoKQogewotICAgIGNoZWNrQXJndW1lbnRUeXBl
cygpOwotICAgIAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgZm9yIChCbG9ja0lu
ZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9qaXQuZ3JhcGgoKS5udW1CbG9ja3Mo
KTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgIG1faml0LnNldEZvckJsb2NrSW5kZXgoYmxvY2tJ
bmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSUmVnIGZpbGxKU1Zh
bHVlKEVkZ2UpOworICAgIEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlLCBHUFJSZWcgZ3ByVG9Vc2Ug
PSBJbnZhbGlkR1BSUmVnKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYm9vbCBmaWxs
SlNWYWx1ZShFZGdlLCBHUFJSZWcmLCBHUFJSZWcmLCBGUFJSZWcmKTsKICNlbmRpZgpAQCAtMjAw
LDYgKzIwMCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05f
VkFMSURBVElPTikKICAgICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQo
bV9qaXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKKyAgICAgICAgaWYgKHNwZWNpZmljID09IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKwogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNwZWNpZmlj
KTsKICAgICAgICAgaWYgKHNwaWxsTWUuaXNWYWxpZCgpKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKQEAgLTMxNSw2ICszMTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQXJndW1lbnRU
eXBlcygpOwogCisgICAgdm9pZCBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKwog
ICAgIHZvaWQgY2xlYXJHZW5lcmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCkBAIC00ODUsNiArNDkwLDkgQEAg
cHVibGljOgogICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lzdGVyIHRvIHRoZSBKU1N0YWNrLgog
ICAgIHZvaWQgc3BpbGwoVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUpCiAgICAgeworICAgICAgICBp
ZiAoc3BpbGxNZS5pc0FyZ3VtZW50KCkgJiYgbV9ibG9jay0+aW5kZXggPiAwKQorICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHNwaWxsTWUpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
QEAgLTI4NzIsNyArMjg4MCwxMCBAQCBwdWJsaWM6CiAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2Vu
ZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVn
aXN0ZXIudG9Mb2NhbCgpXTsKKyAgICAgICAgaWYgKHZpcnR1YWxSZWdpc3Rlci5pc0xvY2FsKCkp
CisgICAgICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIudG9M
b2NhbCgpXTsKKyAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc0FyZ3VtZW50KCkpOwor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci5v
ZmZzZXQoKV07CiAgICAgfQogICAgIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5m
byhOb2RlKiBub2RlKQpAQCAtMjg5NSw2ICsyOTA2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IG1faW5kZXhJbkJsb2NrOwogICAgIC8vIFZpcnR1YWwgYW5kIHBoeXNpY2FsIHJlZ2lzdGVyIG1h
cHMuCiAgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZvLCAzMj4gbV9nZW5lcmF0aW9uSW5mbzsKKyAg
ICBWZWN0b3I8R2VuZXJhdGlvbkluZm8sIDg+IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mbzsKICAg
ICBSZWdpc3RlckJhbms8R1BSSW5mbz4gbV9ncHJzOwogICAgIFJlZ2lzdGVyQmFuazxGUFJJbmZv
PiBtX2ZwcnM7CiAKQEAgLTI5OTMsNiArMzAwNSwyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGV4cGxpY2l0IEpTVmFsdWVPcGVyYW5kKFNwZWN1
bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgR1BSUmVnIHJlZ1RvVXNlKQorICAgICAgICA6IG1f
aml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxp
ZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAg
aWYgKCFlZGdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpIHx8IHJlZ1RvVXNlICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBncHJV
c2VTcGVjaWZpYyhyZWdUb1VzZSk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgfkpTVmFsdWVP
cGVyYW5kKCkKICAgICB7CiAgICAgICAgIGlmICghbV9lZGdlKQpAQCAtMzAyOSw2ICszMDU1LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1Zh
bHVlKG1fZWRnZSk7CiAgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CisgICAg
R1BSUmVnIGdwclVzZVNwZWNpZmljKEdQUlJlZyByZWdUb1VzZSkKKyAgICB7CisgICAgICAgIGlm
IChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPcklu
dmFsaWQgPSBtX2ppdC0+ZmlsbEpTVmFsdWUobV9lZGdlLCByZWdUb1VzZSk7CisgICAgICAgIHJl
dHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3Mo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcigpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3
Niw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChsb2NhbC5pc0FyZ3VtZW50KCkgJiYgbV9ncmFwaC5t
X3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRzICE9IE9wdGltaXplQXJndW1lbnRGbHVzaGVzKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25v
ZGVJbmRleDsgaS0tOykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5h
dChpKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2Rl
LT5sb2NhbCgpID09IGxvY2FsKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwxNSArMTMwLDMwIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBqaXQuc3RvcmUzMihHUFJJ
bmZvOjpyZWdUMywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpICsgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHNpemVvZihpbnQzMl90KSkpKTsKICAgICBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oLXN0YXRpY19jYXN0PGludHB0cl90PihDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycykpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAotICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRP
ZlRhcmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9r
ID0gaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PigxMDAwKSkpKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEw
MDApKSkpOwogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlK
dW1wRGVzdGluYXRpb24pOwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVl
cyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxs
ZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpKTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVy
Rm9yQXJndW1lbnRDb3VudCgpOworICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBhcmdDb3VudFJlZyk7CisgICAg
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVMb2FkaW5nQXJnczsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICBqaXQubG9hZDY0
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2Fs
bEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFy
Z0luZGV4KSk7CisgICAgCisgICAgZG9uZUxvYWRpbmdBcmdzLmxpbmsoJmppdCk7CisjZW5kaWYK
KyAgICAKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKCk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKLSAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0Lmp1bXAoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3Jh
cGgubV9wbGFuLm1vZGUgPT0gREZHTW9kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghT3B0
aW9uczo6dXNlRlRMSklUKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGls
YXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4
LDcgKzQ4OCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFy
Z3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBU
aHJlYWRlZENQUykKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50
KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmFjY2Vzc2VzU3RhY2so
bV9ncmFwaCkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGdldExvY2FsUG9z
aXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAgICAgICAgICAgIHNldExvY2FsUG9z
aXRpb25zLmFyZ3VtZW50KGkpID0gbm90U2V0OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3Bw
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDEzIEBAIHZv
aWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgaWYgKCFpbmRleCkgewog
ICAgICAgICB2YWx1ZVJlY292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZh
bHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFsdWVSZWNvdmVyaWVzLm9wZXJhbmRGb3JJ
bmRleChpKSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJl
Y292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjppbkdQUigKKyAgICAgICAgICAgICAgICAgICAg
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSksIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9
IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRh
Rm9ybWF0SlMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjEsNiArMTY2LDEzIEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25z
dHJ1Y3QoCiAgICAgICAgICAgICBNaW5pZmllZEdlbmVyYXRpb25JbmZvIGluZm87CiAgICAgICAg
ICAgICBpbmZvLnVwZGF0ZShldmVudCk7CiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb3MuYWRk
KGV2ZW50LmlkKCksIGluZm8pOworICAgICAgICAgICAgTWluaWZpZWROb2RlKiBub2RlID0gZ3Jh
cGguYXQoZXZlbnQuaWQoKSk7CisgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5vcCgpID09
IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBncHIgPSBldmVudC5ncHIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudCA9IGpzRnVuY3Rpb25Bcmd1bWVudEZvckFyZ3VtZW50UmVnaXN0ZXIoZ3ByKTsKKyAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRSZWcgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChhcmd1bWVudCk7CisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMu
c2V0T3BlcmFuZChhcmd1bWVudFJlZywgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWxs
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxv
Y2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwzMyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogUGhhc2UoZ3JhcGgsICJ2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24iKQogICAgIHsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXIoU2NvcmVCb2FyZCYgc2Nv
cmVCb2FyZCwgTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0LCBjYWxsIHVzZSBv
biBhbGwgb2YgdGhlIGN1cnJlbnQgbm9kZSdzIGNoaWxkcmVuLCB0aGVuCisgICAgICAgIC8vIGFs
bG9jYXRlIGEgVmlydHVhbFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMK
KyAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0IHVzZSwg
YW5kIGEKKyAgICAgICAgLy8gVmlydHVhbFJlZ2lzdGVyIGlzIGZyZWVkLCB0aGVuIGl0IG1heSBi
ZSByZXVzZWQgZm9yIG5vZGUuCisgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1Zh
ckFyZ3MpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRy
ZW4oKTsgY2hpbGRJZHgrKykKKyAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVz
dWx0KG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gc2Nv
cmVCb2FyZC5hbGxvY2F0ZSgpOworICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVp
ciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCisgICAgICAgIC8vIGNhbGwgdXNlIG5v
dyB0byBhY2NvdW50IGZvciB0aGlzLgorICAgICAgICBpZiAobm9kZS0+bXVzdEdlbmVyYXRlKCkp
CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZShub2RlKTsKKyAgICB9CisKICAgICBib29sIHJ1
bigpCiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgu
bV9mb3JtID09IFRocmVhZGVkQ1BTKTsKQEAgLTU5LDYgKzg1LDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAvLyBGb3JjZSB1c2FnZSBvZiBoaWdoZXN0LW51bWJlcmVkIHZpcnR1YWwgcmVn
aXN0ZXJzLgogICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQuc29ydEZyZWUoKTsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gSGFuZGxlIEdldEFyZ3VtZW50UmVnaXN0ZXIgTm9kZXMg
Zmlyc3QgYXMgdGhlIHJlZ2lzdGVyIGlzIGFsaXZlIG9uIGVudHJ5CisgICAgICAgICAgICAvLyB0
byB0aGUgZnVuY3Rpb24gYW5kIG1heSBuZWVkIHRvIGJlIHNwaWxsZWQgYmVmb3JlIGFueSB1c2Uu
CisgICAgICAgICAgICBpZiAoIWJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2lu
ZGV4SW5CbG9jaykgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdl
dEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lz
dGVyKHNjb3JlQm9hcmQsIG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2Nr
IDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtNzMsMzIgKzEx
MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5jaGlsZDEoKS0+aGFzUmVzdWx0KCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50
IG5vZGUncyBjaGlsZHJlbiwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRlIGEgVmly
dHVhbFJlZ2lzdGVyIGZvciB0aGlzIG5vZGUuIFdlIGRvIHNvIGluIHRoaXMKLSAgICAgICAgICAg
ICAgICAvLyBvcmRlciBzbyB0aGF0IGlmIGEgY2hpbGQgaXMgb24gaXRzIGxhc3QgdXNlLCBhbmQg
YQotICAgICAgICAgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBt
YXkgYmUgcmV1c2VkIGZvciBub2RlLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygp
ICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBj
aGlsZElkeCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxk
KCkgKyBub2RlLT5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgICAg
ICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
Y2hpbGRJZHhdKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQzKCkp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVz
dWx0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgICAgICBub2RlLT5zZXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KTsKLSAgICAgICAgICAgICAgICAvLyAnbXVzdEdlbmVyYXRlJyBub2RlcyBoYXZlIHRoZWlyIHVz
ZUNvdW50IGFydGlmaWNpYWxseSBlbGV2YXRlZCwKLSAgICAgICAgICAgICAgICAvLyBjYWxsIHVz
ZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVz
dEdlbmVyYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG5vZGUpOwor
ICAgICAgICAgICAgICAgIGFsbG9jYXRlUmVnaXN0ZXIoc2NvcmVCb2FyZCwgbm9kZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIEdldENhbGxlZToKKyAgICBjYXNlIEdldEFy
Z3VtZW50UmVnaXN0ZXI6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoK
ICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDcgKzQ1LDggQEAgSklUQ29kZTo6fkpJVENvZGUoKQogICAgICAgICBkYXRhTG9nKCJEZXN0cm95
aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAg
ICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1f
YXJpdHlDaGVja0VudHJ5cG9pbnQpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVy
QXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2ludCk7CisgICAgICAgIGRhdGFMb2coY29tbWEs
IG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQpOwogICAgICAgICBkYXRhTG9nKCJc
biIpOwogICAgIH0KIH0KQEAgLTYwLDMxICs2MSwzMCBAQCB2b2lkIEpJVENvZGU6OmluaXRpYWxp
emVCM0J5cHJvZHVjdHMoc3RkCiAgICAgbV9iM0J5cHJvZHVjdHMgPSBXVEZNb3ZlKGJ5cHJvZHVj
dHMpOwogfQogCi12b2lkIEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRy
IGFkZHJlc3MpCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoQ29kZVJl
ZiBlbnRyeXBvaW50VGh1bmspCiB7Ci0gICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7Cisg
ICAgbV9lbnRyeXBvaW50VGh1bmsgPSBlbnRyeXBvaW50VGh1bms7CiB9CiAKLXZvaWQgSklUQ29k
ZTo6aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkKK3Zv
aWQgSklUQ29kZTo6c2V0RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRy
eSkKIHsKLSAgICBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50ID0gZW50cnlwb2ludDsKKyAgICBtX2Vu
dHJ5cG9pbnRzLnNldEVudHJ5Rm9yKHR5cGUsIGVudHJ5KTsKIH0KLQotSklUQ29kZTo6Q29kZVB0
ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrKQorICAg
IAorSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlw
ZSBlbnRyeVR5cGUpCiB7Ci0gICAgc3dpdGNoIChhcml0eUNoZWNrKSB7Ci0gICAgY2FzZSBBcml0
eUNoZWNrTm90UmVxdWlyZWQ6Ci0gICAgICAgIHJldHVybiBtX2FkZHJlc3NGb3JDYWxsOwotICAg
IGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIHJldHVybiBtX2FyaXR5Q2hlY2tFbnRyeXBv
aW50LmNvZGUoKTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gQ29kZVB0cigpOworICAgIENvZGVQdHIgZW50cnkgPSBtX2VudHJ5cG9pbnRzLmVu
dHJ5Rm9yKGVudHJ5VHlwZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkpOworICAgIHJldHVy
biBlbnRyeTsKIH0KIAogdm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2Fk
ZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYWRkcmVzc0ZvckNhbGwoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVp
cmVkKS5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyNlbHNlCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5Q2hlY2tO
b3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZW5kaWYKIH0KIAog
dm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogICAgIEpJVENvZGUoKTsKICAgICB+SklUQ29kZSgpOwogCi0gICAg
Q29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29k
ZVB0ciBhZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCog
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2
b2lkKiBkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVu
c2lnbmVkIG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkBAIC01Myw5
ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUIzQ29kZShDb2RlUmVmKTsK
ICAgICB2b2lkIGluaXRpYWxpemVCM0J5cHJvZHVjdHMoc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFx
dWVCeXByb2R1Y3RzPik7Ci0gICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0
cik7Ci0gICAgdm9pZCBpbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7Ci0g
ICAgCisgICAgdm9pZCBpbml0aWFsaXplRW50cnlwb2ludFRodW5rKENvZGVSZWYpOworICAgIHZv
aWQgc2V0RW50cnlGb3IoRW50cnlQb2ludFR5cGUsIENvZGVQdHIpOworCiAgICAgdm9pZCB2YWxp
ZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBvdmVycmlkZTsKIAogICAg
IFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0Nh
bGxTaXRlKENvZGVCbG9jayosIENhbGxTaXRlSW5kZXgpIG92ZXJyaWRlOwpAQCAtNzcsNyArNzcs
MTIgQEAgcHJpdmF0ZToKICAgICBDb2RlUHRyIG1fYWRkcmVzc0ZvckNhbGw7CiAgICAgQ29kZVJl
ZiBtX2IzQ29kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IG1f
YjNCeXByb2R1Y3RzOwotICAgIENvZGVSZWYgbV9hcml0eUNoZWNrRW50cnlwb2ludDsKKyAgICBD
b2RlUmVmIG1fZW50cnlwb2ludFRodW5rOworICAgIEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2lu
dHM7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnlQb2lu
dDsKKyAgICBDb2RlUHRyIG1fcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5UG9pbnQ7CisgICAg
Q29kZVB0ciBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeVBvaW50OworICAgIENvZGVQdHIgbV9zdGFj
a0FyZ3NDaGVja0FyaXR5RW50cnlwb2ludDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5j
cHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
RmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEpJVEZp
bmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHks
ICpiM0NvZGVMaW5rQnVmZmVyLAogICAgICAgICAgICAgKCJGVEwgQjMgY29kZSBmb3IgJXMiLCB0
b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6
RlRMSklUKSkuZGF0YSgpKSkpOwogCi0gICAgaml0Q29kZS0+aW5pdGlhbGl6ZUFyaXR5Q2hlY2tF
bnRyeXBvaW50KAorICAgIGppdENvZGUtPmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmsoCiAgICAg
ICAgIEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRy
eXBvaW50TGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9y
ICVzIHdpdGggQjMgZ2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5j
dGlvbikpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNp
b24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcsMTEwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgCiAgICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSkgewogICAgIGNhc2UgRlRMTW9k
ZTogewotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7Ci0gICAg
Ci0gICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0KHNpemVv
ZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5j
aDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJl
Z1QxLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmlsbFJl
Z2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGg7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgdG9NYWluUGF0aDsKKworICAgICAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgdW5z
aWduZWQgbWF4UmVnaXN0ZXJBcmd1bWVudENvdW50ID0gc3RkOjptaW4obnVtUGFyYW1ldGVycywg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7CisKKyAgICAgICAgR1BS
UmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNb
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyArIDFdOworCisgICAgICAg
IGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUykgeworICAgICAgICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lzdGVyIGFyZ3VtZW50
cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UyAtIDE7IGFyZ0luZGV4ID49IG51bVBhcmFtZXRlcnM7IGFyZ0luZGV4LS0pIHsKKyAgICAgICAg
ICAgICAgICByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4ICsgMV0gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVC
ZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRl
eCksIGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OlJlZ0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRoLmFwcGVu
ZChqaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgY29udGludWVUb0FyaXR5Rml4dXA7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
dGFja0FyZ3NDaGVja0FyaXR5RW50cnkgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50
Q291bnRlcigmaml0LCBWTTo6U3RhY2tBcmdzQXJpdHkpOworICAgICAgICBqaXQubG9hZDMyKGZy
YW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGNvbnRpbnVlVG9Bcml0eUZpeHVwLmFw
cGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJlbG93LCBHUFJJ
bmZvOjpyZWdUMSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBh
cmFtZXRlcnMpKSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBjb250aW51ZVRvU3RhY2tBcml0eU9rID0gaml0Lmp1bXAoKTsKKyNlbmRpZgor
CisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gaml0
LmxhYmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6U3RhY2tBcmdz
QXJpdHkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250aW51ZVRvU3Rh
Y2tBcml0eU9rLmxpbmsoJmppdCk7CisjZW5kaWYKKworICAgICAgICAvLyBMb2FkIGFyZ3VtZW50
IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJlZ2lzdGVycworCisgICAgICAgIC8vIEZJWE1FOiBXb3Vs
ZCBsaWtlIHRvIGVsaW1pbmF0ZSB0aGVzZSB0byBsb2FkLCBidXQgd2UgY3VycmVudGx5IGNhbid0
IGp1bXAgaW50bworICAgICAgICAvLyB0aGUgQjMgY29tcGlsZWQgY29kZSBhdCBhbiBhcmJpdHJh
cnkgcG9pbnQgZnJvbSB0aGUgc2xvdyBlbnRyeSB3aGVyZSB0aGUKKyAgICAgICAgLy8gcmVnaXN0
ZXJzIGFyZSBzdG9yZWQgdG8gdGhlIHN0YWNrLgorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50
UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxs
RnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBh
cmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBtYXhSZWdpc3RlckFyZ3VtZW50Q291bnQ7IGFy
Z0luZGV4KyspCisgICAgICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJl
Zm9yZVByb2xvZ3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVu
dChhcmdJbmRleCkpOworCisgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGppdC5qdW1wKCkpOwor
CisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5
ID0gaml0LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0Fy
Z3NBcml0eSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBjb250aW51ZVRvUmVn
aXN0ZXJBcml0eUZpeHVwOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGNoZWNrRm9yRXh0
cmFSZWdpc3RlckFyZ3VtZW50czsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIHRvTWFp
blBhdGguYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1l
dGVycykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlVG9SZWdpc3RlckFyaXR5Rml4dXAuYXBwZW5k
KGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkJlbG93LCBhcmdD
b3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpKTsKKyAg
ICAgICAgICAgIC8vICBGYWxsIHRocm91Z2ggdG8gdGhlICJleHRyYSByZWdpc3RlciBhcml0eSIg
Y2FzZS4KKworICAgICAgICAgICAgY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzID0gaml0
LmxhYmVsKCk7CisgICAgICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0ZXIgYXJndW1l
bnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJnSW5kZXggPSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAg
ICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpCZWxvd09y
RXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkp
KTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQ
cm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFy
Z0luZGV4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigm
aml0LCBWTTo6UmVnQXJnc0V4dHJhKTsKKyAgICAgICAgICAgIHRvTWFpblBhdGguYXBwZW5kKGpp
dC5qdW1wKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRvTWFpblBhdGguYXBwZW5k
KGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVh
bCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMp
KSk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIGNvbnRpbnVlVG9SZWdpc3Rl
ckFyaXR5Rml4dXAuYXBwZW5kKGppdC5qdW1wKCkpOworI2VuZGlmCisKKyAgICAgICAgaWYgKG51
bVBhcmFtZXRlcnMgPiAwKSB7CisgICAgICAgICAgICAvLyAgVGhlcmUgc2hvdWxkIGFsd2F5cyBi
ZSBhICJ0aGlzIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJl
Z2lzdGVyQXJndW1lbnRzTmVlZEFyaXR5Rml4dXAgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDwgbnVtUGFyYW1ldGVycyAm
JiBhcmdJbmRleCA8PSBtYXhSZWdpc3RlckFyZ3VtZW50Q291bnQ7IGFyZ0luZGV4KyspCisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRleF0gPSByZWdp
c3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwOworICAgICAgICB9CisKKyNpZiBFTkFCTEUoVk1f
Q09VTlRFUlMpCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NBcml0
eSk7CisjZW5kaWYKKworICAgICAgICBjb250aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmxpbmso
JmppdCk7CisKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3Jl
UHJvbG9ndWUobWF4UmVnaXN0ZXJBcmd1bWVudENvdW50KTsKKworICAgICAgICBjb250aW51ZVRv
QXJpdHlGaXh1cC5saW5rKCZqaXQpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwg
Vk06OkFyaXR5Rml4dXBSZXF1aXJlZCk7CisKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwpAQCAtMTU1LDExICsyNTEsMjAgQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIAogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hUZXN0
MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
ZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIo
Q0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
QXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAgICAg
ICBmaWxsUmVnaXN0ZXJzQW5kQ29udGludWVNYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisK
KyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGgubGlua1RvKHN0YWNrQXJn
c0FyaXR5T0tFbnRyeSwgJmppdCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgcmVnaXN0ZXJFbnRyeU5vQXJpdHkgPSBqaXQubGFiZWwoKTsK
KyAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6UmVnQXJnc05vQXJpdHkpOworICAg
ICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKyNlbmRpZgogCiAgICAgICAgIGxp
bmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKQEAgLTE2OSw5ICsyNzQsMzUgQEAgdm9pZCBsaW5rKFN0YXRlJiBz
dGF0ZSkKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2Nr
LT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0
aW9uQ2FsbEFyaXR5Q2hlY2spOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwg
RnVuY3Rpb25QdHIoKHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhK
dW1wcywgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0
ZWRGdW5jdGlvbikpKTsKKyAgICAgICAgbGlua0J1ZmZlci0+bGluayh0b01haW5QYXRoLCBDb2Rl
TG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9u
KSkpOworCisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RD
aGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRy
eSkpOworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2Yoc3RhY2tBcmdzQXJpdHlPS0Vu
dHJ5KSk7CiAKLSAgICAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRl
ZEZ1bmN0aW9uKSkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1haW5FbnRyeSA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJF
bnRyeU5vQXJpdHkpOworI2Vsc2UKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5F
bnRyeSA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdl
bmVyYXRlZEZ1bmN0aW9uKSk7CisjZW5kaWYKKyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50
cnlGb3IoUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBtYWluRW50cnkpOworCisg
ICAgICAgIGlmIChjaGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHMuaXNTZXQoKSkKKyAgICAg
ICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3Vt
ZW50cykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRy
eUZvcihSZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywgbWFpbkVudHJ5KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVy
QXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0No
ZWNrQXJpdHlFbnRyeSkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnQ291bnQgPSAxOyBh
cmdDb3VudCA8PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdD
b3VudCsrKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAg
ICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBl
bnRyeSA9IG1haW5FbnRyeTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyQXJndW1lbnRz
RW50cnlwb2ludHNbYXJnQ291bnRdLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgZW50cnkgPSBs
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291
bnRdKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGxpbmtCdWZm
ZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJBcmdzQ2hlY2tBcml0eUVudHJ5KTsKKyAgICAgICAgICAg
IHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5
VHlwZUZvckFyZ3VtZW50Q291bnQoYXJnQ291bnQpLCBlbnRyeSk7CisgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE4MSw3ICszMTIsMjAgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgLy8gcG9pbnQgd2UndmUgZXZlbiBkb25lIHRoZSBzdGFj
ayBjaGVjay4gQmFzaWNhbGx5IHdlIGp1c3QgaGF2ZSB0byBtYWtlIHRoZQogICAgICAgICAvLyBj
YWxsIHRvIHRoZSBCMy1nZW5lcmF0ZWQgY29kZS4KICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzdGFydCA9IGppdC5sYWJlbCgpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOworCisgICAgICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8gYXJndW1lbnQgcmVn
aXN0ZXJzCisKKyAgICAgICAgLy8gRklYTUU6IFdvdWxkIGxpa2UgdG8gZWxpbWluYXRlIHRoZXNl
IHRvIGxvYWQsIGJ1dCB3ZSBjdXJyZW50bHkgY2FuJ3QganVtcCBpbnRvCisgICAgICAgIC8vIHRo
ZSBCMyBjb21waWxlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBwb2ludCBmcm9tIHRoZSBzbG93IGVu
dHJ5IHdoZXJlIHRoZQorICAgICAgICAvLyByZWdpc3RlcnMgYXJlIHN0b3JlZCB0byB0aGUgc3Rh
Y2suCisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAg
ICAgICAgaml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRl
eCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgJiYg
YXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJ
bmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZv
cmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
YXJnSW5kZXgpKTsKKwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhKdW1wID0g
aml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtCdWZmZXI+KHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKQEAgLTE5MSw3ICszMzUsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICB9
CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wLCBDb2RlTG9jYXRpb25MYWJl
bChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwogCi0gICAg
ICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChsaW5rQnVmZmVyLT5s
b2NhdGlvbk9mKHN0YXJ0KSk7CisgICAgICAgIHN0YXRlLmppdENvZGUtPnNldEVudHJ5Rm9yKFJl
Z2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihz
dGFydCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9wcm9jLmFk
ZEZhc3RDb25zdGFudChtX3RhZ1R5cGVOdW1iZXItPmtleSgpKTsKICAgICAgICAgbV9wcm9jLmFk
ZEZhc3RDb25zdGFudChtX3RhZ01hc2stPmtleSgpKTsKICAgICAgICAgCisgICAgICAgIC8vIFN0
b3JlIG91dCBjYWxsZWUgYW5kIGFyZ3VtZW50IGNvdW50IGZvciBwb3NzaWJsZSBPU1IgZXhpdC4K
KyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50UmVn
aXN0ZXJGb3JDYWxsZWUoKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuYXJndW1lbnRSZWdpc3RlckludDMyKGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKTsKKwogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0
cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CiAK
ICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCkBAIC0yNDcsMjAgKzI1MSwzNCBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIENoZWNrIEFyZ3VtZW50cy4KICAgICAgICAgYXZhaWxhYmlsaXR5
TWFwKCkuY2xlYXIoKTsKICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMgPSBPcGVy
YW5kczxBdmFpbGFiaWxpdHk+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCksIDApOworCisg
ICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnROb2RlczsKKyAgICAgICAgVmVjdG9yPExW
YWx1ZSwgOD4gYXJndW1lbnRWYWx1ZXM7CisKKyAgICAgICAgYXJndW1lbnROb2Rlcy5yZXNpemUo
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgIGFyZ3VtZW50VmFsdWVzLnJl
c2l6ZShjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKKworICAgICAgICBtX2hpZ2hCbG9j
ayA9IG1fZ3JhcGguYmxvY2soMCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJs
b2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgYXZhaWxhYmlsaXR5
TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQotICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0
eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKLSAgICAgICAgbV9vcmln
aW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07
KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV07
CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9
IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIAorICAgICAg
ICAgICAgTFZhbHVlIGpzVmFsdWUgPSBudWxscHRyOworCiAgICAgICAgICAgICBpZiAobm9kZSkg
ewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3BlcmFuZCA9PSBu
b2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bWFjaGluZUxvY2FsKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPSBB
dmFpbGFiaWxpdHkobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWUgPSBtX291dC5h
cmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihub2RlLT5hcmd1bWVu
dFJlZ2lzdGVySW5kZXgoKSkpOworCisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobm9k
ZSwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXZhaWxhYmlsaXR5TWFwKCkubV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAgICAgICAgICAg
ICAgICAgICAgICAgQXZhaWxhYmlsaXR5KEZsdXNoZWRBdChGbHVzaGVkSlNWYWx1ZSwgb3BlcmFu
ZCkpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlID0gbV9vdXQubG9hZDY0KGFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5v
ZGUtPmhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCgpIHx8IG9wZXJhbmQgPT0gbm9kZS0+c3RhY2tB
Y2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBhIGhhY2ssIGJ1dCBpdCdzIGFuIGVmZmVjdGl2ZSBvbmUuIEl0IGFs
bG93cyB1cyB0byBkbyBDU0Ugb24gdGhlCiAgICAgICAgICAgICAgICAgLy8gcHJpbW9yZGlhbCBs
b2FkIG9mIGFyZ3VtZW50cy4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIEdldExvY2FsIHRoYXQgZ290
IHB1dCBpbgpAQCAtMjY4LDcgKzI4NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLy8g
c2hvdWxkIGhvbGQgdHJ1ZS4KICAgICAgICAgICAgICAgICBtX2xvYWRlZEFyZ3VtZW50VmFsdWVz
LmFkZChub2RlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXJndW1l
bnROb2Rlc1tpXSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudFZhbHVlc1tpXSA9IGpzVmFs
dWU7CisgICAgICAgIH0KKworICAgICAgICBtX25vZGUgPSBudWxscHRyOworICAgICAgICBtX29y
aWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGkt
LTspIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudE5vZGVzW2ldOwogICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gYXJndW1lbnRWYWx1ZXNbaV07CisKICAg
ICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSkgewogICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5
cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbm9kZSwgaXNOb3RJbnQzMihqc1ZhbHVlKSk7CkBA
IC04MTAsNiArODQyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0QXJndW1lbnRS
ZWdpc3RlcjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudFJlZ2lzdGVyKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAgICAgIGNvbXBp
bGVHZXRTY29wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDYgKzU0MjksMTYgQEAg
cHJpdmF0ZToKICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxl
R2V0QXJndW1lbnRSZWdpc3RlcigpCisgICAgeworICAgICAgICAvLyBXZSBtaWdodCBoYXZlIGFs
cmVhZHkgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIG5vZGUuCisgICAgICAgIGlmIChMVmFsdWUgdmFs
dWUgPSBtX2xvYWRlZEFyZ3VtZW50VmFsdWVzLmdldChtX25vZGUpKSB7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXIoR1BSSW5mbzo6dG9Bcmd1bWVudFJl
Z2lzdGVyKG1fbm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKSk7CisgICAgfQorICAgIAog
ICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTRnVuY3Rpb25f
c2NvcGUpKTsKQEAgLTU4MDYsOSArNTg1MSwxMCBAQCBwcml2YXRlOgogICAgICAgICAvLyB0aGUg
Y2FsbC4KICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKIAotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBHUFIwIGJlY2F1c2Ug
dGhhdCdzIHdoZXJlIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUKLSAgICAgICAgLy8g
Y2FsbGVlIHRvIGJlLgotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
anNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKSk7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSBjYWxsZWUgZ29lcyBpbnRvIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxs
ZWUoKSBiZWNhdXNlIHRoYXQncyB3aGVyZQorICAgICAgICAvLyB0aGUgc2xvdyBwYXRoIHRodW5r
cyBleHBlY3QgdGhlIGNhbGxlZSB0byBiZS4KKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFy
Z3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKIAogICAg
ICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3Rl
ciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9
CkBAIC01ODE2LDEwICs1ODYyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KG9m
ZnNldEZyb21TUCkpKTsKICAgICAgICAgfTsKIAotICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxl
ZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwotICAgICAgICBh
ZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQotICAgICAgICAgICAgYWRkQXJndW1l
bnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyAgICAgICAgQXJndW1lbnRzTG9jYXRpb24gYXJn
TG9jYXRpb24gPSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BcmdzKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKGNhbGxl
ZVJlZykpKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1fb3V0
LmNvbnN0SW50MzIobnVtQXJncyksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckFy
Z3VtZW50Q291bnQoKSkpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
QXJnczsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSwgMCk7CisgICAgICAgIH0KIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kVmVjdG9yKGFyZ3VtZW50cyk7CkBAIC01ODQ4LDkgKzU5MDAsMTEgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBzbG93UGF0aCA9IGppdC5icmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QwLCB0YXJnZXRU
b0NoZWNrLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxs
ZWVSZWcsIHRhcmdldFRvQ2hlY2ssCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
ZmFzdENhbGwgPSBqaXQubmVhckNhbGwoKTsKQEAgLTU4NTgsMTMgKzU5MTIsMTMgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7CiAKLSAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsK
ICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKICAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBD
b25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6Q2FsbCwK
LSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICAgICAgICAgIGFyZ0xvY2F0aW9uLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAKICAgICAgICAgICAgICAgICBqaXQu
YWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigt
cGFyYW1zLnByb2MoKS5mcmFtZVNpemUoKSksCkBAIC01ODczLDcgKzU5MjcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICAgICAg
Wz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0SklU
Q2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGNhbGxM
aW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRD
YWxsTG9jYXRpb25zKApAQCAtNTkxNywyMCArNTk3MSwzOCBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKICAgICAgICAgCi0g
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVl
IGdvZXMgaW50byBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkgYmVjYXVzZSB0aGF0J3Mgd2hl
cmUKKyAgICAgICAgLy8gdGhlIHNsb3cgcGF0aCB0aHVua3MgZXhwZWN0IHRoZSBjYWxsZWUgdG8g
YmUuCisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVl
KCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwg
VmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAgICAgICAgIGlmICghaXNUYWlsKSB7CiAgICAg
ICAgICAgICBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdp
c3RlciByZWcsIGludCBvZmZzZXQpIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXRG
cm9tU1AgPQogICAgICAgICAgICAgICAgICAgICAocmVnLm9mZnNldCgpIC0gQ2FsbGVyRnJhbWVB
bmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXQ7
CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVl
LCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChvZmZzZXRGcm9tU1ApKSk7CiAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CisjaWYgRU5BQkxF
KENBTExFUl9TUElMTFNfQ0FMTEVFKQogICAgICAgICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUs
IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKKyNlbmRpZgorICAg
ICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1fb3V0LmNvbnN0SW50
MzIobnVtUGFzc2VkQXJncyksIFZhbHVlUmVwOjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckFyZ3Vt
ZW50Q291bnQoKSkpKTsKKyNpZiBFTkFCTEUoQ0FMTEVSX1NQSUxMU19BUkdDT1VOVCkKICAgICAg
ICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50MzIobnVtUGFzc2VkQXJncyksIFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytp
KQotICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2Nh
dGVkQXJnczsgKytpKQotICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSksIDApOworI2VuZGlmCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVu
dFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSkpKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRB
cmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkg
PCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSkpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwg
MCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKQogICAgICAgICAgICAgICAgIGFy
Z3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKQEAgLTU5NzIsNiArNjA0
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2Fs
cyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgICAgIHNodWZmbGVE
YXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9y
bWF0Q2VsbCk7CiAgICAgICAgICAgICAgICAgICAgIHRvU2F2ZS5zZXQoY2FsbGVlR1BSKTsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7
ICsraSkgewpAQCAtNTk5MCw3ICs2MDYzLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlBhdGNoYWJsZUp1bXAgcGF0
Y2hhYmxlSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgbWFpblBhdGggPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6
RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBW
TTo6VGFpbENhbGwpOworICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQs
IFZNOjpEaXJlY3RDYWxsKTsKKwogICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRl
SW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwpAQCAt
NjAxMSw3ICs2MDg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8obWFpblBhdGgsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpE
aXJlY3RUYWlsQ2FsbCwgYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtUGFzc2VkQXJncyksIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKGV4ZWN1dGFibGUpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3NlZEFyZ3Mp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldE1heE51bUFyZ3VtZW50
cyhudW1BbGxvY2F0ZWRBcmdzKTsKQEAgLTYwMzQsNiArNjExMSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0
aCA9IGppdC5sYWJlbCgpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0
LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQs
IFZNOjpEaXJlY3RDYWxsKTsKKwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJp
dHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwpAQCAtNjA0NSw3ICs2MTI1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxs
TGlua0luZm86OkRpcmVjdENvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtUGFzc2VkQXJncyks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oZXhlY3V0YWJsZSk7
CiAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPiBudW1QYXNzZWRBcmdzKQog
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldE1heE51bUFyZ3VtZW50cyhudW1B
bGxvY2F0ZWRBcmdzKTsKQEAgLTYwNTYsMTMgKzYxMzYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzWDg2KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcChDQ2FsbEhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdH
UFIwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5r
IGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayhB
c3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZh
ckp1bXBXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
bWFpblBhdGgsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCkBAIC02MDcxLDYgKzYxNDksOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93
UGF0aExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhjYWxsLCBzbG93UGF0aExvY2F0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxs
VGh1bmtFbnRyeVN0dWIobGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2Fs
bExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2Nh
dGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbCgpLApAQCAtNjEwMiw3ICs2MTgzLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBWZWN0b3I8
Q29uc3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOwogCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMCkp
KTsKKyAgICAgICAgR1BSUmVnIGNhbGxlZVJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUo
KTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBW
YWx1ZVJlcDo6cmVnKGNhbGxlZVJlZykpKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtQXJnczsgKytpKSB7CiAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBjb3VsZCBsZXQg
dGhlIHNodWZmbGVyIGRvIGJveGluZyBmb3IgdXMsIGJ1dCBpdCdzIG5vdCBzdXBlciBjbGVhciB0
aGF0IHRoaXMKQEAgLTYxMzYsOSArNjIxOCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CiAKKyAgICAgICAgICAg
ICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworICAgICAgICAgICAg
ICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICAgICAg
ICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOworICAgICAgICAgICAgICAgIHNo
dWZmbGVEYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBz
aHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0
ZXJDb3VudDsKLSAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292
ZXJ5OjppbkdQUihHUFJJbmZvOjpyZWdUMCwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVSZWcsIERh
dGFGb3JtYXRKUyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtQXJnczsgKytpKQogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzLmFwcGVu
ZChwYXJhbXNbMSArIGldLnJlY292ZXJ5Rm9ySlNWYWx1ZSgpKTsKQEAgLTYxNDksNyArNjIzNSw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0
ciB0YXJnZXRUb0NoZWNrOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzbG93
UGF0aCA9IGppdC5icmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QwLCB0YXJnZXRUb0NoZWNrLAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVSZWcsIHRhcmdldFRv
Q2hlY2ssCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigw
KSk7CiAKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEo
c2h1ZmZsZURhdGEpOwpAQCAtNjE2NywyMCArNjI1MywxOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVmZmxlRGF0YSk7Ci0gICAgICAgICAgICAgICAg
c2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZv
OjpyZWdUMCkpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNs
b3dQYXRoKCk7CiAKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d0NhbGwgPSBqaXQubmVhckNhbGwoKTsKIAogICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhS
ZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKIAotICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIGNvZGVPcmlnaW4sIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OlRhaWxDYWxsLCBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BcmdzKSwgY29k
ZU9yaWdpbiwgY2FsbGVlUmVnKTsKIAogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygK
ICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLnZtKCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpLmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRy
KGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjI3MCw2ICs2MzU1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAg
ICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CisgICAgICAgICAgICAgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRz
TG9jYXRpb24gPSBTdGFja0FyZ3M7CiAKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAg
IHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JK
U0NhbGwoKSk7CkBAIC02NDE5LDcgKzY1MDUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghdXNlZFJlZ2lzdGVycy5nZXQoR1BS
SW5mbzo6cmVnVDIpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpZiAoaXNUYWlsQ2FsbCkKQEAgLTY0MjcsNyArNjUxMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
Y2FsbFR5cGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBhcmd1bWVudHNMb2Nh
dGlvbiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdodCksCkBAIC02NDM2LDcgKzY1MjIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAg
ICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCku
Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9y
KFN0YWNrQXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjUzNywxMSArNjYyMywxNSBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVu
d2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgaW5jcmVtZW50
Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKCZqaXQsIFZNOjpDYWxsVmFyYXJncyk7CisgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgICAgICAgICAgICAg
QXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAgICAg
ICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0gbm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7
CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDE7CkBAIC02NzAyLDcgKzY3
OTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAg
ICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyks
IEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC02
NzEwLDcgKzY4MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dFVwQ2FsbChjYWxsVHlwZSwgYXJndW1lbnRzTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpp
dC5hZGRQdHIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KC1vcmlnaW5hbFN0YWNrSGVpZ2h0KSwKQEAgLTY3MTksNyArNjgwOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRKSVRDYWxs
VGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdz
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVu
Y3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxM
b2NhdGlvbnMoCkBAIC02Nzg4LDEzICs2ODc4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwotICAgICAgICAgICAgICAgIAor
CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpDYWxsRXZhbCk7CisK
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCkpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJ
bmZvKCk7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJ
bmZvOjpDYWxsLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0
YWNrQXJncywgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwog
ICAgICAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCBDYWxsRnJhbWU6OmNhbGxlckZy
YW1lT2Zmc2V0KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsMTEgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRh
dGFMb2coIiAgICBWYWx1ZXMgYXQgZW50cnk6ICIsIHZhbHVlcywgIlxuIik7CiAgICAgCi0gICAg
Zm9yIChpbnQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQt
LTspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gdmFsdWVzLm51bWJlck9mQXJndW1l
bnRzKCk7IGFyZ3VtZW50LS07KSB7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgICAgICBpZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05f
QVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAg
SlNWYWx1ZSB2YWx1ZU9uU3RhY2sgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGFyZ3VtZW50KS5vZmZzZXQoKSkuYXNhblVuc2FmZUpTVmFsdWUoKTsKICAgICAgICAgSlNWYWx1
ZSByZWNvbnN0cnVjdGVkVmFsdWUgPSB2YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAg
ICBpZiAodmFsdWVPblN0YWNrID09IHJlY29uc3RydWN0ZWRWYWx1ZSB8fCAhYXJndW1lbnQpCkBA
IC05OSw4ICsxMDMsMTIgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIH0KICAgICAKICAg
ICBleGVjLT5zZXRDb2RlQmxvY2soZW50cnlDb2RlQmxvY2spOwotICAgIAotICAgIHZvaWQqIHJl
c3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKS5l
eGVjdXRhYmxlQWRkcmVzcygpOworCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIHZvaWQqIHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwo
UmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
I2Vsc2UKKyAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgog
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICBFbnRy
eSB3aWxsIHN1Y2NlZWQsIGdvaW5nIHRvIGFkZHJlc3MiLCBSYXdQb2ludGVyKHJlc3VsdCksICJc
biIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAko
cmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxNiBAQCB2b2lkIE91dHB1dDo6YXBwZW5k
VG8oTEJhc2ljQmxvY2sgYmxvY2spCiAgICAgbV9ibG9jayA9IGJsb2NrOwogfQogCitMVmFsdWUg
T3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVyKFJlZyByZWcpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCByZWcpOworfQor
CitMVmFsdWUgT3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVySW50MzIoUmVnIHJlZykKK3sKKyAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHJlZywgSW50MzIpOworfQorCiBMVmFsdWUgT3V0cHV0OjpmcmFtZVBvaW50ZXIoKQogewog
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFt
ZVBvaW50ZXIsIG9yaWdpbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRPcmlnaW4oREZHOjpOb2RlKiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQogICAgIEIz
OjpPcmlnaW4gb3JpZ2luKCkgeyByZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KIAorICAg
IExWYWx1ZSBhcmd1bWVudFJlZ2lzdGVyKFJlZyByZWcpOworICAgIExWYWx1ZSBhcmd1bWVudFJl
Z2lzdGVySW50MzIoUmVnIHJlZyk7CiAgICAgTFZhbHVlIGZyYW1lUG9pbnRlcigpOwogCiAgICAg
QjM6OlNsb3RCYXNlVmFsdWUqIGxvY2tlZFN0YWNrU2xvdChzaXplX3QgYnl0ZXMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2Vu
LmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTYgKzI4NCwyNCBA
QCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYsIEV4ZWNTdGF0CiAgICAgICAgICAgICBi
b29sIGZvdW5kRnJhbWUgPSBhZHZhbmNlSW5kZXhJbkxvZ1RvKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwogICAgICAgICAgICAgYm9v
bCBpc1RhaWxEZWxldGVkID0gZmFsc2U7CiAgICAgICAgICAgICBKU1Njb3BlKiBzY29wZSA9IG51
bGxwdHI7CisgICAgICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRo
RGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZShjb2RlQmxvY2st
PnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChmb3VuZEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUgPSBtX2xvZ1tpbmRleElu
TG9nXS5zY29wZTsKLSAgICAgICAgICAgICAgICBpZiAoc2NvcGUpCisgICAgICAgICAgICBpZiAo
Y29kZUJsb2NrICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2Rlcygp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgICAgICBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMoSlNTY29wZTo6aW5mbygpKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kRnJhbWUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNjb3BlKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlID0gbV9sb2dbaW5k
ZXhJbkxvZ10uc2NvcGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjpp
bmZvKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICAgICB0aGlzVmFsdWUgPSBtX2xvZ1tp
bmRleEluTG9nXS50aGlzVmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b1B1c2gu
YXBwZW5kKEZyYW1lKHZpc2l0b3ItPmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2Fs
bFNpdGVJbmRleCgpKSk7CisgICAgICAgICAgICB0b1B1c2guYXBwZW5kKEZyYW1lKHZpc2l0b3It
PmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQsIHRoaXNWYWx1ZSwgc2NvcGUsIGNv
ZGVCbG9jaywgY2FsbEZyYW1lLT5jYWxsU2l0ZUluZGV4KCkpKTsKIAogICAgICAgICAgICAgaWYg
KGluZGV4SW5Mb2cgPCBsb2dDdXJzb3JJbmRleAogICAgICAgICAgICAgICAgIC8vIFRoaXMgY29u
ZGl0aW9uIHByb3RlY3RzIHVzIGZyb20gdGhlIGNhc2Ugd2hlcmUgYWR2YW5jZUluZGV4SW5Mb2dU
byBkaWRuJ3QgZmluZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsMTMgKzYxNiwx
MyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6cmVzdG9yZUNhbGxlZVNhdmVzCiAKIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjplbWl0RHVtYlZpcnR1YWxDYWxsKENhbGxMaW5rSW5mbyogaW5mbykKIHsK
LSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIENhbGwgY2Fs
bCA9IG5lYXJDYWxsKCk7CiAgICAgYWRkTGlua1Rhc2soCiAgICAgICAgIFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcigmbGlua0J1ZmZlci52bSgpLCAqaW5mbyk7Ci0gICAg
ICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1
bmssIGxpbmtCdWZmZXIudm0oKSwgbnVsbHB0ciwgdHJ1ZSkpOwotICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsKHZpcnR1YWxUaHVuay5jb2RlKCkpKTsK
KyAgICAgICAgICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0ZvcigmbGlua0J1ZmZlci52bSgpLCAqaW5mbyk7CisgICAgICAgICAg
ICBpbmZvLT5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29k
ZVJlZigpLCBsaW5rQnVmZmVyLnZtKCksIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh2aXJ0dWFsVGh1bmsuZW50cnlG
b3IoU3RhY2tBcmdzKSkpOwogICAgICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MTQsNiArNDE0LDg5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIGVudW0gU3Bp
bGxSZWdpc3RlclR5cGUgeyBTcGlsbEFsbCwgU3BpbGxFeGFjdGx5IH07CisKKyAgICB2b2lkIHNw
aWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUodW5zaWduZWQgbWluaW11
bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxBbGwp
CisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAg
ICAgICAgSnVtcExpc3QgZG9uZVN0b3JpbmdBcmdzOworCisgICAgICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAgICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJnQ291bnRSZWcsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpOworCisgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAgICAgICAgLy8gQWx3
YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5pbXVtQXJnc1RvU3BpbGwgPSBzdGQ6Om1heCht
aW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKworICAgICAgICBmb3IgKDsgYXJnSW5kZXggPCBtaW5p
bXVtQXJnc1RvU3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9D
YWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVu
dChhcmdJbmRleCksIGFyZ0luZGV4KTsKKworICAgICAgICBpZiAoc3BpbGxUeXBlID09IFNwaWxs
QWxsKSB7CisgICAgICAgICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3NlZCB0byBmdW5jdGlv
bgorICAgICAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgICAgIGRvbmVTdG9y
aW5nQXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJn
Q291bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7CisgICAg
ICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShhcmd1
bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvbmVTdG9yaW5nQXJncy5saW5rKHRo
aXMpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9TcGlsbCk7Cisg
ICAgICAgIFVOVVNFRF9QQVJBTShzcGlsbFR5cGUpOworI2VuZGlmCisgICAgfQorCisgICAgdm9p
ZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSh1bnNpZ25lZCBtaW5pbXVtQXJnc1RvU3Bp
bGwgPSAwLCBTcGlsbFJlZ2lzdGVyVHlwZSBzcGlsbFR5cGUgPSBTcGlsbEFsbCkKKyAgICB7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBKdW1w
TGlzdCBkb25lU3RvcmluZ0FyZ3M7CisKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAg
ICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGFyZ0NvdW50UmVnLCBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGFy
Z0luZGV4ID0gMDsKKyAgICAgICAgLy8gQWx3YXlzIHNwaWxsICJ0aGlzIgorICAgICAgICBtaW5p
bXVtQXJnc1RvU3BpbGwgPSBzdGQ6Om1heChtaW5pbXVtQXJnc1RvU3BpbGwsIDFVKTsKKyAgICAg
ICAgCisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IG1pbmltdW1BcmdzVG9TcGlsbCAmJiBhcmdJ
bmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4
KyspCisgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZShhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChzcGlsbFR5cGUgPT0gU3BpbGxBbGwpIHsKKyAgICAgICAgICAgIC8vIFNwaWxs
IGV4dHJhIGFyZ3MgcGFzc2VkIHRvIGZ1bmN0aW9uCisgICAgICAgICAgICBmb3IgKDsgYXJnSW5k
ZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsr
KSB7CisgICAgICAgICAgICAgICAgZG9uZVN0b3JpbmdBcmdzLmFwcGVuZChicmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihhcmdJbmRleCkpKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRU
b0NhbGxGcmFtZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCks
IGFyZ0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
ZG9uZVN0b3JpbmdBcmdzLmxpbmsodGhpcyk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0o
bWluaW11bUFyZ3NUb1NwaWxsKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNwaWxsVHlwZSk7Cisj
ZW5kaWYKKyAgICB9CisgICAgCisgICAgdm9pZCBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJh
bWVCZWZvcmVQcm9sb2d1ZSgpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICAgICAgSnVtcExpc3QgZG9uZUxvYWRpbmdBcmdzOworCisgICAg
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgICAgICBHUFJSZWcg
YXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAgICAg
ICBlbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50LCBhcmdDb3VudFJlZyk7CisgICAgICAgIAorICAgICAgICBm
b3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7CisgICAgICAgICAgICBpZiAoYXJn
SW5kZXgpIC8vIEFsd2F5cyBsb2FkICJ0aGlzIgorICAgICAgICAgICAgICAgIGRvbmVMb2FkaW5n
QXJncy5hcHBlbmQoYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291
bnRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7CisgICAgICAg
ICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgs
IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGRvbmVMb2FkaW5nQXJncy5saW5rKHRoaXMpOworI2VuZGlm
CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICBzdGF0aWMgc2l6ZV90
IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQogICAgIHsKQEAgLTYyNCw2ICs3MDcsMzEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3Rl
cikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgfQorCisgICAgdm9pZCBl
bWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCB1bnNp
Z25lZCBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVu
dCkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpKSk7CisgICAgfQorCisgICAgdm9pZCBlbWl0UHV0QXJndW1lbnRU
b0NhbGxGcmFtZShHUFJSZWcgZnJvbSwgdW5zaWduZWQgYXJndW1lbnQpCisgICAgeworICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoZnJvbSwgQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3Vt
ZW50ICsgYXJndW1lbnQpOworICAgIH0KKworICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJCZWZvcmVQcm9sb2d1ZShjb25zdCBpbnQgZW50cnksIEdQUlJlZyB0bykKKyAgICB7Cisg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpKSwgdG8pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZSh1bnNpZ25lZCBhcmd1bWVudCwgR1BSUmVnIHRvKQor
ICAgIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2Fs
bEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSksIHRv
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFk
ZXJCZWZvcmVQcm9sb2d1ZShjb25zdCBpbnQgZW50cnksIEdQUlJlZyB0bykKKyAgICB7CisgICAg
ICAgIGxvYWQzMihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhKCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSwgdG8pOworICAgIH0KICNlbHNlCiAgICAgdm9pZCBlbWl0UHV0UGF5bG9hZFRvQ2Fs
bEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20sIGludCBlbnRyeSkKICAgICB7
CkBAIC0xNjYwLDcgKzE3NjgsMTQgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
dm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIHZvaWQgaW5j
cmVtZW50Q291bnRlcihWTTo6Vk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNz
T2ZDb3VudGVyKGNvdW50ZXJUeXBlKSkpOworICAgIH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKQEAgLTE2NjksNiArMTc4
NCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0Pj4gbV9kZWNvZGVkQ29kZU1hcHM7CiB9OwogCisjaWYgRU5BQkxF
KFZNX0NPVU5URVJTKQorI2RlZmluZSBpbmNyZW1lbnRDb3VudGVyKGppdCwgY291bnRlclR5cGUp
IChqaXQpLT5pbmNyZW1lbnRDb3VudGVyKGNvdW50ZXJUeXBlKQorI2Vsc2UKKyNkZWZpbmUgaW5j
cmVtZW50Q291bnRlcihqaXQsIGNvdW50ZXJUeXBlKSAoKHZvaWQpMCkKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDI2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit2b2lkIENhY2hl
ZFJlY292ZXJ5OjphZGRUYXJnZXRKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyBqc1ZhbHVlUmVncykK
K3sKKyAgICBBU1NFUlQobV93YW50ZWRGUFIgPT0gSW52YWxpZEZQUlJlZyk7CisgICAgc2l6ZV90
IGV4aXN0aW5nID0gbV9ncHJUYXJnZXRzLmZpbmQoanNWYWx1ZVJlZ3MpOworICAgIGlmIChleGlz
dGluZyA9PSBXVEY6Om5vdEZvdW5kKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYg
KG1fZ3ByVGFyZ2V0cy5zaXplKCkgPiAwICYmIG1fcmVjb3ZlcnkuaXNTZXQoKSAmJiBtX3JlY292
ZXJ5LmlzSW5HUFIoKSkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHJlY292ZXJpbmcgdG8g
dGhlIHNhbWUgR1BSLCBtYWtlIHRoYXQgR1BSIHRoZSBmaXJzdCB0YXJnZXQuCisgICAgICAgICAg
ICBHUFJSZWcgc291cmNlR1BSID0gbV9yZWNvdmVyeS5ncHIoKTsKKyAgICAgICAgICAgIGlmIChq
c1ZhbHVlUmVncy5ncHIoKSA9PSBzb3VyY2VHUFIpIHsKKyAgICAgICAgICAgICAgICAvLyBBcHBl
bmQgdGhlIGN1cnJlbnQgZmlyc3QgR1BSIGJlbG93LgorICAgICAgICAgICAgICAgIGpzVmFsdWVS
ZWdzID0gSlNWYWx1ZVJlZ3MobV9ncHJUYXJnZXRzWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBtX2dwclRhcmdldHNbMF0gPSBKU1ZhbHVlUmVncyhzb3VyY2VHUFIpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgbV9ncHJUYXJnZXRzLmFwcGVuZChqc1ZhbHVl
UmVncyk7CisgICAgfQorfQorCiAvLyBXZSBwcmVmZXIgbG9hZGluZyBkb3VibGVzIGFuZCB1bmRl
dGVybWluZWQgSlNWYWx1ZXMgaW50byBGUFJzCiAvLyBiZWNhdXNlIGl0IHdvdWxkIG90aGVyd2lz
ZSB1c2UgdXAgR1BScy4gIFR3byBpbiBKU1ZBTFVFMzJfNjQuCiBib29sIENhY2hlZFJlY292ZXJ5
Ojpsb2Fkc0ludG9GUFIoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWNoZWRSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FjaGVkUmVjb3ZlcnkuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBDYWNoZWRSZWNvdmVyeSYgb3BlcmF0b3I9KENhY2hlZFJlY292ZXJ5JiYp
ID0gZGVsZXRlOwogCiAgICAgY29uc3QgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMT4mIHRhcmdl
dHMoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldHM7IH0KKyAgICBjb25zdCBWZWN0b3I8SlNWYWx1
ZVJlZ3MsIDE+JiBncHJUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ncHJUYXJnZXRzOyB9CiAK
ICAgICB2b2lkIGFkZFRhcmdldChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKQEAgLTY4LDE1
ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGFyZ2V0cy5jbGVhcigpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0V2FudGVkSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV93YW50ZWRGUFIgPT0gSW52YWxpZEZQUlJlZyk7Ci0gICAg
ICAgIG1fd2FudGVkSlNWYWx1ZVJlZ3MgPSBqc1ZhbHVlUmVnczsKLSAgICB9CisgICAgdm9pZCBh
ZGRUYXJnZXRKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyk7CiAKICAgICB2b2lkIHNldFdhbnRlZEZQ
UihGUFJSZWcgZnByKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3dhbnRlZEpTVmFsdWVSZWdz
KTsKKyAgICAgICAgQVNTRVJUKG1fZ3ByVGFyZ2V0cy5pc0VtcHR5KCkpOwogICAgICAgICBtX3dh
bnRlZEZQUiA9IGZwcjsKICAgICB9CiAKQEAgLTExOSwxNCArMTE2LDIwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0UmVjb3ZlcnkoVmFsdWVSZWNvdmVyeSByZWNvdmVyeSkgeyBtX3JlY292ZXJ5
ID0gcmVjb3Zlcnk7IH0KIAotICAgIEpTVmFsdWVSZWdzIHdhbnRlZEpTVmFsdWVSZWdzKCkgY29u
c3QgeyByZXR1cm4gbV93YW50ZWRKU1ZhbHVlUmVnczsgfQorICAgIEpTVmFsdWVSZWdzIHdhbnRl
ZEpTVmFsdWVSZWdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2dwclRhcmdldHMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKCk7CisKKyAgICAgICAgcmV0
dXJuIG1fZ3ByVGFyZ2V0c1swXTsKKyAgICB9CiAKICAgICBGUFJSZWcgd2FudGVkRlBSKCkgY29u
c3QgeyByZXR1cm4gbV93YW50ZWRGUFI7IH0KIHByaXZhdGU6CiAgICAgVmFsdWVSZWNvdmVyeSBt
X3JlY292ZXJ5OwotICAgIEpTVmFsdWVSZWdzIG1fd2FudGVkSlNWYWx1ZVJlZ3M7CiAgICAgRlBS
UmVnIG1fd2FudGVkRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXIsIDE+IG1fdGFyZ2V0czsKKyAgICBWZWN0b3I8SlNWYWx1ZVJlZ3MsIDE+IG1fZ3ByVGFy
Z2V0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZVJlY292ZXJ5IGNh
bGxlZTsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJnczsKICNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGJvb2wgYXJndW1lbnRzSW5SZWdpc3RlcnMgeyBmYWxzZSB9OwogICAgIFJlZ2lzdGVy
TWFwPFZhbHVlUmVjb3Zlcnk+IHJlZ2lzdGVyczsKICAgICBHUFJSZWcgdGFnVHlwZU51bWJlciB7
IEludmFsaWRHUFJSZWcgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjMsNyArMzIzLDggQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdERpc3BsYWNl
KENhYwogICAgICAgICAgICAgbV9qaXQubW92ZShjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmdw
cigpLCB3YW50ZWRSZWcuZ3ByKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2ppdC5t
b3ZlNjRUb0RvdWJsZShjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmdwcigpLCB3YW50ZWRSZWcu
ZnByKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgp
LmRhdGFGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOworICAgICAgICBEYXRhRm9ybWF0IGZvcm1h
dCA9IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZGF0YUZvcm1hdCgpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEpTIHx8IGZvcm1hdCA9PSBEYXRhRm9ybWF0
Q2VsbCk7CiAgICAgICAgIHVwZGF0ZVJlY292ZXJ5KGNhY2hlZFJlY292ZXJ5LAogICAgICAgICAg
ICAgVmFsdWVSZWNvdmVyeTo6aW5SZWdpc3Rlcih3YW50ZWRSZWcsIERhdGFGb3JtYXRKUykpOwog
ICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVyLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKENDYQogICAgICAgICAr
IHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShqaXQuY29kZUJsb2NrKCktPm51bVBhcmFt
ZXRlcnMoKSkpCiAgICAgLCBtX2FsaWduZWROZXdGcmFtZVNpemUoQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMKICAgICAgICAgKyByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUo
ZGF0YS5hcmdzLnNpemUoKSkpCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAsIG1fYXJndW1lbnRz
SW5SZWdpc3RlcnMoZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycykKKyNlbmRpZgogICAgICwgbV9m
cmFtZURlbHRhKG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZSAtIG1fYWxpZ25lZE9sZEZyYW1lU2l6ZSkK
ICAgICAsIG1fbG9ja2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKSkKIHsK
QEAgLTU0LDExICs1NywyMSBAQCBDYWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIo
Q0NhCiAgICAgbV9sb2NrZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6dm1DYWxsZWVT
YXZlUmVnaXN0ZXJzKCkpOwogCiAgICAgQVNTRVJUKCFkYXRhLmNhbGxlZS5pc0luSlNTdGFjaygp
IHx8IGRhdGEuY2FsbGVlLnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7Ci0gICAgYWRkTmV3
KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7Ci0K
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChkYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzKQor
ICAgICAgICBhZGROZXcoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSwg
ZGF0YS5jYWxsZWUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBhZGROZXcoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGRhdGEuY2FsbGVlKTsKKyAgICAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuYXJncy5zaXplKCk7ICsraSkgewogICAgICAgICBB
U1NFUlQoIWRhdGEuYXJnc1tpXS5pc0luSlNTdGFjaygpIHx8IGRhdGEuYXJnc1tpXS52aXJ0dWFs
UmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgICAgICBhZGROZXcodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSksIGRhdGEuYXJnc1tpXSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
aWYgKGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgJiYgaSA8IE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICBhZGROZXcoSlNWYWx1ZVJlZ3MoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpLCBkYXRhLmFyZ3NbaV0pOworICAg
ICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGFkZE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSwgZGF0YS5hcmdzW2ldKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpA
QCAtMTg1LDggKzE5OCwxMyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpkdW1wKFByaW50U3Ry
ZWFtCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbHNlCi0gICAgICAgIGlmIChuZXdDYWNo
ZWRSZWNvdmVyeSkKKyAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5KSB7CiAgICAgICAgICAg
ICBvdXQucHJpbnQoIiAgICAgICAgICIsIHJlZywgIiA8LSAiLCBuZXdDYWNoZWRSZWNvdmVyeS0+
cmVjb3ZlcnkoKSk7CisgICAgICAgICAgICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnktPmdwclRhcmdl
dHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkg
PCBuZXdDYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMo
KVtpXS5ncHIoKSwgIiA8LSAiLCBuZXdDYWNoZWRSZWNvdmVyeS0+cmVjb3ZlcnkoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQpAQCAtNDk2LDcgKzUxNCw3IEBAIGJvb2wgQ2FsbEZyYW1lU2h1ZmZsZXI6OnRyeVdyaXRl
cyhDYWNoZWQKICAgICBBU1NFUlQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5pc0luUmVnaXN0
ZXJzKCkKICAgICAgICAgfHwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5pc0NvbnN0YW50KCkp
OwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKHZlcmJvc2UgJiYgY2FjaGVkUmVjb3Zlcnku
dGFyZ2V0cygpLnNpemUoKSkKICAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nICIsIGNhY2hl
ZFJlY292ZXJ5LnJlY292ZXJ5KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FjaGVk
UmVjb3ZlcnkudGFyZ2V0cygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB0YXJnZXQgeyBjYWNoZWRSZWNvdmVyeS50YXJnZXRzKClbaV0gfTsKQEAgLTUwNSw5ICs1MjMs
OSBAQCBib29sIENhbGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAgICAgICAg
ICBkYXRhTG9nKCFpID8gIiBpbnRvICIgOiAiLCBhbmQgIiwgIk5FVyAiLCB0YXJnZXQpOwogICAg
ICAgICBlbWl0U3RvcmUoY2FjaGVkUmVjb3ZlcnksIGFkZHJlc3NGb3JOZXcodGFyZ2V0KSk7CiAg
ICAgICAgIHNldE5ldyh0YXJnZXQsIG51bGxwdHIpOworICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQotICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKCJcbiIpOwogICAgIGNhY2hlZFJlY292ZXJ5LmNsZWFyVGFyZ2V0cygpOwogICAg
IGlmICghY2FjaGVkUmVjb3Zlcnkud2FudGVkSlNWYWx1ZVJlZ3MoKSAmJiBjYWNoZWRSZWNvdmVy
eS53YW50ZWRGUFIoKSA9PSBJbnZhbGlkRlBSUmVnKQogICAgICAgICBjbGVhckNhY2hlZFJlY292
ZXJ5KGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkpOwpAQCAtNjA2LDcgKzYyNCw3IEBAIHZvaWQg
Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogewogICAgIEFTU0VSVCghaXNVbmRlY2lk
ZWQoKSk7CiAKLSAgICB1cGRhdGVEYW5nZXJGcm9udGllcigpOworICAgIGluaXREYW5nZXJGcm9u
dGllcigpOwogCiAgICAgLy8gRmlyc3QsIHdlIHRyeSB0byBzdG9yZSBhbnkgdmFsdWUgdGhhdCBn
b2VzIGFib3ZlIHRoZSBkYW5nZXIKICAgICAvLyBmcm9udGllci4gVGhpcyB3aWxsIG5ldmVyIHVz
ZSBtb3JlIHJlZ2lzdGVycyBzaW5jZSB3ZSBhcmUgb25seQpAQCAtNzAyLDEzICs3MjAsOSBAQCB2
b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KCkKICAgICAgICAgQVNTRVJUX1VOVVNF
RCh3cml0ZXNPSywgd3JpdGVzT0spOwogICAgIH0KIAotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aWYgKG1fdGFnVHlwZU51bWJlciAhPSBJbnZhbGlkR1BSUmVnICYmIG1fbmV3UmVnaXN0ZXJzW21f
dGFnVHlwZU51bWJlcl0pCi0gICAgICAgIHJlbGVhc2VHUFIobV90YWdUeXBlTnVtYmVyKTsKLSNl
bmRpZgotCiAgICAgLy8gSGFuZGxlIDIpIGJ5IGxvYWRpbmcgYWxsIHJlZ2lzdGVycy4gV2UgZG9u
J3QgaGF2ZSB0byBkbyBhbnkKICAgICAvLyB3cml0ZXMsIHNpbmNlIHRoZXkgaGF2ZSBiZWVuIHRh
a2VuIGNhcmUgb2YgYWJvdmUuCisgICAgLy8gTm90ZSB0aGF0IHdlIG5lZWQgbV90YWdUeXBlTnVt
YmVyIHRvIHJlbWFpbiBsb2NrZWQgdG8gYm94IHdhbnRlZCByZWdpc3RlcnMuCiAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgTG9hZGluZyB3YW50ZWQgcmVnaXN0ZXJzIGludG8g
cmVnaXN0ZXJzXG4iKTsKICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBS
ZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewpAQCAtNzQyLDEyICs3NTYsMTkgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAKICAgICAvLyBXZSBuZWVkIHRvIGhh
bmRsZSA0KSBmaXJzdCBiZWNhdXNlIGl0IGltcGxpZXMgcmVsZWFzaW5nCiAgICAgLy8gbV9uZXdG
cmFtZUJhc2UsIHdoaWNoIGNvdWxkIGJlIGEgd2FudGVkIHJlZ2lzdGVyLgorICAgIC8vIE5vdGUg
dGhhdCB3ZSBkZWxheSBzZXR0aW5nIHRoZSBhcmd1bWVudCBjb3VudCByZWdpc3RlciBhcyBpdCBu
ZWVkcyB0byBiZSByZWxlYXNlZCBpbiBzdGVwIDMuCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQgaW50byAiLCBWaXJ0dWFs
UmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0sICJcbiIpOwotICAgIG1f
aml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwKLSAgICAgICAgYWRk
cmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7Ci0gICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKGFyZ0NvdW50KCkpLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNl
dChQYXlsb2FkT2Zmc2V0KSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoIW1fYXJndW1l
bnRzSW5SZWdpc3RlcnMpIHsKKyNlbmRpZgorICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCisgICAgICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1
YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChU
YWdPZmZzZXQpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKGFyZ0NvdW50KCkpLAorICAgICAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVn
aXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9h
ZE9mZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgfQorI2VuZGlmCiAKICAgICBpZiAo
IWlzU2xvd1BhdGgoKSkgewogICAgICAgICBBU1NFUlQobV9uZXdGcmFtZUJhc2UgIT0gTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTc2Nyw2ICs3ODgsMjMgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAKICAgICAgICAgZW1pdERpc3BsYWNl
KCpjYWNoZWRSZWNvdmVyeSk7CiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBG
b3IgcmVjb3ZlcmllcyB3aXRoIG11bHRpcGxlIHJlZ2lzdGVyIHRhcmdldHMsIGNvcHkgdGhlIGNv
bnRlbnRzIG9mIHRoZSBmaXJzdCB0YXJnZXQgdG8gdGhlCisgICAgLy8gcmVtYWluaW5nIHRhcmdl
dHMuCisgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7
IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292
ZXJ5IHsgbV9uZXdSZWdpc3RlcnNbcmVnXSB9OworICAgICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5
IHx8IGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpIDwgMikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEdQUlJlZyBzb3VyY2VHUFIgPSBjYWNoZWRSZWNvdmVyeS0+
Z3ByVGFyZ2V0cygpWzBdLmdwcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGNh
Y2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBtX2pp
dC5tb3ZlKHNvdXJjZUdQUiwgY2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKVtpXS5ncHIoKSk7
CisgICAgfQorCisgICAgaWYgKG1fYXJndW1lbnRzSW5SZWdpc3RlcnMpCisgICAgICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwgYXJndW1lbnRS
ZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE3ICs5NiwzNyBAQCBwdWJsaWM6
CiAgICAgLy8gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlCiAgICAgLy8gYXJn
dW1lbnRzL2NhbGxlZS9jYWxsZWUtc2F2ZSByZWdpc3RlcnMgYXJlIGJ5IHRha2luZyBpbnRvCiAg
ICAgLy8gYWNjb3VudCBhbnkgc3BpbGxpbmcgdGhhdCBhY3F1aXJlR1BSKCkgY291bGQgaGF2ZSBk
b25lLgotICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNuYXBzaG90KCkgY29uc3QKKyAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdChBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2Nh
dGlvbikgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VuZGVjaWRlZCgpKTsKIAogICAg
ICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBkYXRhOwogICAgICAgICBkYXRhLm51bUxvY2FscyA9
IG51bUxvY2FscygpOwotICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhWaXJ0dWFsUmVnaXN0
ZXIgeyBDYWxsRnJhbWVTbG90OjpjYWxsZWUgfSktPnJlY292ZXJ5KCk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgZGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IGFyZ3VtZW50c0xvY2F0
aW9uICE9IFN0YWNrQXJnczsKKyNlbmRpZgorICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24g
PT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJl
Z2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIFJlZyByZWcgeyBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkg
fTsKKyAgICAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVn
aXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gY2FjaGVkUmVjb3Zlcnkt
PnJlY292ZXJ5KCk7CisgICAgICAgIH0KICAgICAgICAgZGF0YS5hcmdzLnJlc2l6ZShhcmdDb3Vu
dCgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdDb3VudCgpOyArK2kpCi0g
ICAgICAgICAgICBkYXRhLmFyZ3NbaV0gPSBnZXROZXcodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkpLT5yZWNvdmVyeSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0Nv
dW50KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNr
QXJncyB8fCBpID49IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisg
ICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIFJlZyByZWcgeyBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSB9Owor
ICAgICAgICAgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVn
aXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgICAgICAgICBkYXRhLmFyZ3NbaV0gPSBjYWNoZWRSZWNv
dmVyeS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3Ig
KFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5l
eHQoKSkgeworICAgICAgICAgICAgaWYgKHJlZy5pc0dQUigpICYmIGFyZ3VtZW50c0xvY2F0aW9u
ICE9IFN0YWNrQXJncworICAgICAgICAgICAgICAgICYmIEdQUkluZm86OnRvQXJndW1lbnRJbmRl
eChyZWcuZ3ByKCkpIDwgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50
KGFyZ0NvdW50KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBD
YWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CiAg
ICAgICAgICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5KQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMzc2LDYgKzM5Niw5IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9hbGlnbmVkT2xkRnJh
bWVTaXplOwogICAgIGludCBtX2FsaWduZWROZXdGcmFtZVNpemU7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBib29sIG1fYXJndW1lbnRzSW5SZWdpc3RlcnM7CisjZW5kaWYKIAogICAgIC8vIFRo
aXMgaXMgdGhlIGRpc3RhbmNlLCBpbiBzbG90cywgYmV0d2VlbiB0aGUgYmFzZSBvZiB0aGUgbmV3
CiAgICAgLy8gZnJhbWUgYW5kIHRoZSBiYXNlIG9mIHRoZSBvbGQgZnJhbWUuIEl0IGNvdWxkIGJl
IG5lZ2F0aXZlIHdoZW4KQEAgLTY0MSw5ICs2NjQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNT
RVJUKGpzVmFsdWVSZWdzICYmICFnZXROZXcoanNWYWx1ZVJlZ3MpKTsKICAgICAgICAgQ2FjaGVk
UmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5ID0gYWRkQ2FjaGVkUmVjb3ZlcnkocmVjb3ZlcnkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGlmIChjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNW
YWx1ZVJlZ3MoKSkKLSAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2NhY2hlZFJlY292ZXJ5LT53
YW50ZWRKU1ZhbHVlUmVncygpLmdwcigpXSA9IG51bGxwdHI7Ci0gICAgICAgIG1fbmV3UmVnaXN0
ZXJzW2pzVmFsdWVSZWdzLmdwcigpXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICBpZiAoY2Fj
aGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkpIHsKKyAgICAgICAgICAgIGlmIChyZWNv
dmVyeS5pc0luR1BSKCkgJiYganNWYWx1ZVJlZ3MuZ3ByKCkgPT0gcmVjb3ZlcnkuZ3ByKCkpIHsK
KyAgICAgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNW
YWx1ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fbmV3UmVnaXN0
ZXJzW2pzVmFsdWVSZWdzLmdwcigpXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbmV3UmVnaXN0ZXJzW2pzVmFsdWVSZWdzLmdw
cigpXSA9IGNhY2hlZFJlY292ZXJ5OwogI2Vsc2UKICAgICAgICAgaWYgKEpTVmFsdWVSZWdzIG9s
ZFJlZ3MgeyBjYWNoZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKSB9KSB7CiAgICAgICAg
ICAgICBpZiAob2xkUmVncy5wYXlsb2FkR1BSKCkpCkBAIC02NTYsOCArNjgzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKGpzVmFsdWVSZWdzLnRhZ0dQUigpICE9IEludmFsaWRHUFJSZWcpCiAg
ICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy50YWdHUFIoKV0gPSBjYWNoZWRS
ZWNvdmVyeTsKICNlbmRpZgotICAgICAgICBBU1NFUlQoIWNhY2hlZFJlY292ZXJ5LT53YW50ZWRK
U1ZhbHVlUmVncygpKTsKLSAgICAgICAgY2FjaGVkUmVjb3ZlcnktPnNldFdhbnRlZEpTVmFsdWVS
ZWdzKGpzVmFsdWVSZWdzKTsKKyAgICAgICAgY2FjaGVkUmVjb3ZlcnktPmFkZFRhcmdldEpTVmFs
dWVSZWdzKGpzVmFsdWVSZWdzKTsKICAgICB9CiAKICAgICB2b2lkIGFkZE5ldyhGUFJSZWcgZnBy
LCBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5KQpAQCAtNzU1LDEzICs3ODEsMjMgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHJlZyA8PSBkYW5nZXJGcm9udGllcigpOwogICAgIH0KIAorICAgIHZv
aWQgaW5pdERhbmdlckZyb250aWVyKCkKKyAgICB7CisgICAgICAgIGZpbmREYW5nZXJGcm9udGll
ckZyb20obGFzdE5ldygpKTsKKyAgICB9CisKICAgICB2b2lkIHVwZGF0ZURhbmdlckZyb250aWVy
KCkKICAgICB7CisgICAgICAgIGZpbmREYW5nZXJGcm9udGllckZyb20obV9kYW5nZXJGcm9udGll
ciAtIDEpOworICAgIH0KKworICAgIHZvaWQgZmluZERhbmdlckZyb250aWVyRnJvbShWaXJ0dWFs
UmVnaXN0ZXIgbmV4dFJlZykKKyAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlY2lkZWQoKSk7
CiAKICAgICAgICAgbV9kYW5nZXJGcm9udGllciA9IGZpcnN0TmV3KCkgLSAxOwotICAgICAgICBm
b3IgKFZpcnR1YWxSZWdpc3RlciByZWcgPSBsYXN0TmV3KCk7IHJlZyA+PSBmaXJzdE5ldygpOyBy
ZWcgLT0gMSkgewotICAgICAgICAgICAgaWYgKCFnZXROZXcocmVnKSB8fCAhaXNWYWxpZE9sZChu
ZXdBc09sZChyZWcpKSB8fCAhZ2V0T2xkKG5ld0FzT2xkKHJlZykpKQorICAgICAgICBmb3IgKFZp
cnR1YWxSZWdpc3RlciByZWcgPSBuZXh0UmVnOyByZWcgPj0gZmlyc3ROZXcoKTsgcmVnIC09IDEp
IHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9sZChuZXdBc09sZChyZWcpKSB8fCAhZ2V0T2xk
KG5ld0FzT2xkKHJlZykpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBtX2RhbmdlckZyb250aWVyID0gcmVnOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7IH0KICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgIT0gSW52YWxp
ZEdQUlJlZzsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJl
dHVybiBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVl
UmVncyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IG90aGVyLm1f
Z3ByOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIEdQUlJlZyBncHIoKSBjb25zdCB7
IHJldHVybiBtX2dwcjsgfQogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZh
bGlkR1BSUmVnOyB9CkBAIC0zMzEsNiArMzMxLDcgQEAgcHJpdmF0ZToKIAogI2lmIENQVShYODYp
CiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKKyNkZWZpbmUgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTM1Myw2ICsz
NTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBY
ODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMwogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAorICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWRpOyAvLyByZWdUNQog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVh
eDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4
NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjplY3g7CkBAIC0zNzksNiArMzgxLDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMg
dW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihyZWcpIDwgOCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvckFyZ3Vt
ZW50UmVnaXN0ZXJbOF0gPSB7IDIsIDAsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICByZXR1cm4gaW5kZXhGb3JB
cmd1bWVudFJlZ2lzdGVyW3JlZ107CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKQEAgLTM5OSw5ICs0MDksMTEgQEAgcHVibGljOgogI2lmICFPUyhXSU5ET1dTKQog
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDZ1CiAjZGVmaW5lIE5VTUJFUl9P
Rl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMgKE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkK
ICNlbHNlCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKICNkZWZpbmUg
TlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgN3UKKyNkZWZpbmUgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8g
ewpAQCAtNDY0LDYgKzQ3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFy
Z3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUg
KHJlZ1Q0IG9uIFdpbmRvd3MpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0g
WDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1
cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxIG9y
IHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC01MDgs
NiArNTIxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbcmVn
XTsKICAgICB9CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyBy
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworI2lmICFPUyhXSU5ET1dTKQor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzE2
XSA9IHsgSW52YWxpZEluZGV4LCAzLCAyLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCAxLCAwLCA0LCA1LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisjZWxz
ZQorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVy
WzE2XSA9IHsgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCB9OworI2VuZGlmCisgICAgICAgIHJldHVybiBpbmRleEZvckFyZ3Vt
ZW50UmVnaXN0ZXJbcmVnXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKQEAgLTUzOCw2ICs1NjMsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNKQogI2Rl
ZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CisjZGVmaW5lIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExF
RV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC02MDEsNiArNjI3LDE1
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMg
dW5zaWduZWQgdG9Bcmd1bWVudEluZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihyZWcpIDwgMTYpOworICAgICAgICBpZiAocmVnID4gYXJndW1lbnRHUFIzKQorICAgICAgICAg
ICAgcmV0dXJuIEludmFsaWRJbmRleDsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7Cisg
ICAgfQorICAgIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC02MjEsNiAr
NjU2LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKEFSTTY0KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTIDh1CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgKE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAydSkKIC8vIENhbGxl
ZSBTYXZlcyBpbmNsdWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKICNkZWZp
bmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CiAKQEAgLTY5OCw2ICs3MzQs
NyBAQCBwdWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMyA9PSAx
MywgcTEzX2lzXzEzKTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTE0ID09
IDE0LCBxMTRfaXNfMTQpOwogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTUg
PT0gMTUsIHExNV9pc18xNSk7CisKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKQEAgLTcxNSw2
ICs3NTIsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdG9SZWdpc3RlcihpbmRleCk7CiAg
ICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYg
KHJlZyA+IGFyZ3VtZW50R1BSNykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7Cisg
ICAgICAgIHJldHVybiAodW5zaWduZWQpcmVnOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0g
SW52YWxpZEdQUlJlZyk7CkBAIC03NDYsNiArNzkxLDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1J
UFMpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTc3Myw2
ICs4MTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIg
PSBNSVBTUmVnaXN0ZXJzOjphMjsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
MyA9IE1JUFNSZWdpc3RlcnM6OmEzOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1Owog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CkBAIC04MjUsNiArODcy
LDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKFNINCkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA0dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTIDB1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAK
IGNsYXNzIEdQUkluZm8gewpAQCAtODU1LDYgKzkwMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFNINFJlZ2lzdGVyczo6cjY7IC8vIHJlZ1QyCiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBTSDRSZWdpc3RlcnM6OnI3OyAv
LyByZWdUMwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0OworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CkBAIC04OTEsNiArOTQwLDYxIEBAIHB1YmxpYzoK
IAogI2VuZGlmIC8vIENQVShTSDQpCiAKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdpc3RlckZv
cih1bnNpZ25lZCBhcmd1bWVudEluZGV4KQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMKKyAgICBpZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTKQorICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICByZXR1cm4gR1BSSW5mbzo6
dG9Bcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50SW5kZXgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oYXJndW1lbnRJbmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JDYWxsZWUoKQoreworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMKKyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcigwKTsKKyNlbHNlCisgICAgcmV0dXJu
IEdQUkluZm86OnJlZ1QwOworI2VuZGlmCit9CisKK2lubGluZSBHUFJSZWcgYXJndW1lbnRSZWdp
c3RlckZvckFyZ3VtZW50Q291bnQoKQoreworICAgIHJldHVybiBhcmd1bWVudFJlZ2lzdGVyRm9y
KDEpOworfQorCitpbmxpbmUgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5j
dGlvbkFyZ3VtZW50KHVuc2lnbmVkIGFyZ3VtZW50KQoreworICAgIHJldHVybiBhcmd1bWVudCAr
IDI7Cit9CisKK2lubGluZSB1bnNpZ25lZCBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJl
Z2lzdGVyKEdQUlJlZyBncHIpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUyA+IDAKKyAgICB1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gR1BSSW5mbzo6dG9B
cmd1bWVudEluZGV4KGdwcik7CisgICAgQVNTRVJUKGFyZ3VtZW50SW5kZXggIT0gR1BSSW5mbzo6
SW52YWxpZEluZGV4ICYmIGFyZ3VtZW50SW5kZXggPj0gMik7CisgICAgcmV0dXJuIGFyZ3VtZW50
SW5kZXggLSAyOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2lubGluZSBH
UFJSZWcgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQodW5zaWduZWQgYXJndW1l
bnRJbmRleCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRSZWdpc3RlckZvcihhcmd1bWVudFJlZ2lz
dGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnRJbmRleCkpOworfQorCitpbmxp
bmUgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcih1bnNpZ25lZCBhcmd1bWVu
dENvdW50KQoreworICAgIHJldHVybiBzdGQ6Om1pbihhcmd1bWVudENvdW50LCBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKK30KKwogLy8gVGhlIGJhc2VsaW5lIEpJ
VCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1i
aXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNj
dW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29k
ZSB0byB0aGUgbmV4dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDE0ICs2Niw2IEBAIHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkEKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1KSVQ6OkNv
ZGVSZWYgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmMpCi17Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSk7Ci0gICAg
SklUIGppdCh2bSwgMCk7Ci0gICAgcmV0dXJuIGppdC5wcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNh
bGwodm0sIGZ1bmMpOwotfQotCiBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
KQogICAgIDogSlNJbnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0
ZXIodm0tPmludGVycHJldGVyKQpAQCAtNTc5LDYgKzU3MSwyMCBAQCB2b2lkIEpJVDo6Y29tcGls
ZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVp
bnQzMigpICYgMSkKICAgICAgICAgbm9wKCk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHNw
aWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKKyAgICBpbmNyZW1lbnRDb3Vu
dGVyKHRoaXMsIFZNOjpSZWdBcmdzTm9Bcml0eSk7CisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQor
ICAgIEp1bXAgY29udGludWVTdGFja0VudHJ5ID0ganVtcCgpOworI2VuZGlmCisjZW5kaWYKKyAg
ICBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeSA9IGxhYmVsKCk7CisgICAgaW5jcmVtZW50Q291bnRl
cih0aGlzLCBWTTo6U3RhY2tBcmdzTm9Bcml0eSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiBF
TkFCTEUoVk1fQ09VTlRFUlMpCisgICAgY29udGludWVTdGFja0VudHJ5LmxpbmsodGhpcyk7Cisj
ZW5kaWYKKwogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCkBAIC02
MzUsNyArNjQxLDIxIEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkK
ICAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKIAogICAgIGlmIChtX2Nv
ZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgbV9hcml0eUNo
ZWNrID0gbGFiZWwoKTsKKyAgICAgICAgbV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjayA9IGxh
YmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0FyaXR5
KTsKKworICAgICAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3Vl
KCk7CisKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAgIEp1bXAgY29udGludWVTdGFj
a0FyaXR5RW50cnkgPSBqdW1wKCk7CisjZW5kaWYKKworICAgICAgICBtX3N0YWNrQXJnc1dpdGhB
cml0eUNoZWNrID0gbGFiZWwoKTsKKyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
U3RhY2tBcmdzQXJpdHkpOworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29udGlu
dWVTdGFja0FyaXR5RW50cnkubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICBzdG9yZTgoVHJ1
c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKTsKICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwpAQCAtNjQzLDYg
KzY2Myw4IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAg
ICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1Qx
KTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1f
Y29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAK
KyAgICAgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsK
KwogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAogICAgICAgICBpZiAobWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwpCkBAIC03NzgsOSArODAwLDE0IEBAIENvbXBpbGF0aW9uUmVz
dWx0IEpJVDo6bGluaygpCiAgICAgfQogICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlTWFwKGpp
dENvZGVNYXBFbmNvZGVyLmZpbmlzaCgpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3
aXRoQXJpdHlDaGVjazsKLSAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKQotICAgICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Yo
bV9hcml0eUNoZWNrKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeUFyaXR5
T0tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KTsK
KyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNo
ZWNrUHRyOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5V2l0aEFyaXR5Q2hl
Y2tQdHI7CisgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkg
eworICAgICAgICByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBzdGFja0Vu
dHJ5V2l0aEFyaXR5Q2hlY2tQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fc3RhY2tBcmdz
V2l0aEFyaXR5Q2hlY2spOworICAgIH0KIAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1i
bHkoKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03
OTgsMTQgKzgyNSwyNiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIENvZGVS
ZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAgICAg
ICgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpLmRhdGEoKSkpOwotICAgIAor
CiAgICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklU
LT5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwogICAg
ICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAg
bV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgSklU
RW50cnlQb2ludHMgZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdpdGhB
cml0eUNoZWNrUHRyLCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50cnlB
cml0eU9LUHRyLCBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5zaWduZWQg
bnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0g
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgewor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3Vu
dCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29kZSgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJpdHlD
aGVja1B0cjsKKyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6
OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAg
ICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVK
SVQpKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9pbnRz
V2l0aFJlZihyZXN1bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAK
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29k
ZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVN
ZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMu
aCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlVudXNl
ZFBvaW50ZXIuaCIKIApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8sIHJl
dHVybkFkZHJlc3MsIGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29k
ZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAg
c3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9pbnRz
KFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2ZUNhbGxS
ZWYgPSBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBv
bGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihuYXRp
dmVDYWxsUmVmLCBuYXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gaml0LnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3Io
Q29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENv
ZGVCbG9jayopOwpAQCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGls
ZUNUSU5hdGl2ZUNhbGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAgICAgICBD
b2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsK
KyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50cnlOYXRp
dmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCiAg
ICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0
aW9uIGNoZWNrLgpAQCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dW5zaWduZWQgbV9wdXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwotICAgICAg
ICAKLSAgICAgICAgTGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1fc3RhY2tB
cmdzQXJpdHlPS0VudHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNr
OworICAgICAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVj
dGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0g
ICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNh
bGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJVDo6
Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
aW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
LCByZWdUMSwgcmVnVDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsg
PSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dTdHViKGNy
ZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsK
LSAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3Zt
LCAqaW5mbyk7CisgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmly
dHVhbFRodW5rLmNvZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0TmFr
ZWRDYWxsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dD
YXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxM
aW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlw
ZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsKKyAg
ICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIFN0
YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1fY2Fs
bENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2Nh
bGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJl
c3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxM
aW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcsMTMgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8p
LCByZWdUMik7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxDb21waWxh
dGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQogICAg
ICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbklu
Zm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENhbGwo
bV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgIG1f
Y2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9u
ID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigp
KSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9w
X3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1
cm5Gcm9tVGFpbENhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21waWxlU2V0
dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBD
YWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSkpOwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3JlbWVudENv
dW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRo
aXMsIFZNOjpDYWxsVmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCByZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJl
c3MocmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAgaW5jcmVt
ZW50Q291bnRlcih0aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJh
bWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KCk7CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxF
dmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlu
a0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENhbGxM
aW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBy
ZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0
ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxMiArMTU5LDE0IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FTU0VSVChP
UENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX29wY29k
ZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxs
cHRyOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdz
OworCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1f
Y29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2Fs
bF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdDb3VudCA9
IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBp
bnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNl
dCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICAgICAgaWYgKG9wY29kZUlEID09
IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CkBAIC0xNzEsMTUgKzE3OCwyNSBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIH0KICAg
ICAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihS
ZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24gIT0g
U3RhY2tBcmdzKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgdW5zaWduZWQg
cmVnaXN0ZXJBcmdzID0gc3RkOjptaW4oYXJnQ291bnQsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmcgPSAwOyBh
cmcgPCByZWdpc3RlckFyZ3M7IGFyZysrKQorICAgICAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJn
KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmcpKTsKKyAg
ICAgICAgfQogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsgc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQuCisK
KyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CiAgICAgCiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxT
aXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
Mihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRh
Z09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsg
Ly8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBHUFJS
ZWcgY2FsbGVlUmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnaXN0ZXIpOworICAgIHN0b3Jl
NjQoY2FsbGVlUmVnaXN0ZXIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2
YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTE4NywxNiAr
MjA0LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICB9
CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKLSAgICBK
dW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVz
c09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CisgICAgSnVtcCBzbG93
Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgY2FsbGVlUmVnaXN0ZXIsIGFkZHJl
c3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogICAgIGFkZFNsb3dD
YXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgp
ID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZv
OjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJl
Z1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNv
ZGVJRCksIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBj
YWxsZWVSZWdpc3Rlcik7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChDYWxsQ29t
cGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9J
bmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyA9IGlu
Zm87CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CisgICAgICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgc2h1ZmZsZURhdGEubnVt
TG9jYWxzID0KQEAgLTIwOSw3ICsyMjgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNv
ZGVJRCBvcGNvZGVJCiAgICAgICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgICAg
IH0KICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0KLSAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluR1BSKHJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgVmFsdWVSZWNvdmVy
eTo6aW5HUFIoY2FsbGVlUmVnaXN0ZXIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIHNodWZmbGVE
YXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAgICAgICAgIGluZm8t
PnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlcigqdGhpcywgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAtMjQ2LDkg
KzI2NSwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlECiAgICAg
aWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
dmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyks
IHJlZ1QyKTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihjYWxsTGlua0luZm8pLCBub25BcmdHUFIwKTsKIAotICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2Vk
Q2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7Cisg
ICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9j
YXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0
aW9uKCkpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpIHsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERp
ZFJldHVybkZyb21UYWlsQ2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKSVRDb2Rl
OjpleGVjdXRlKFZNKiB2bSwgUHJvdG9DYQogCiAgICAgaWYgKCFmdW5jdGlvbiB8fCAhcHJvdG9D
YWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpIHsKICAgICAgICAgQVNTRVJUKCFwcm90b0NhbGxG
cmFtZS0+bmVlZEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIGVudHJ5QWRkcmVzcyA9IGV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JDYWxsKFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9IGVs
c2UKLSAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JD
YWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3JpcHQoZW50cnlB
ZGRyZXNzLCB2bSwgcHJvdG9DYWxsRnJhbWUpKTsKICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9u
KCkgPyBqc051bGwoKSA6IHJlc3VsdDsKIH0KQEAgLTE2Miw5ICsxNjIsOSBAQCBEaXJlY3RKSVRD
b2RlOjpEaXJlY3RKSVRDb2RlKEpJVFR5cGUgaml0CiB7CiB9CiAKLURpcmVjdEpJVENvZGU6OkRp
cmVjdEpJVENvZGUoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0aEFy
aXR5Q2hlY2ssIEpJVFR5cGUgaml0VHlwZSkKLSAgICA6IEpJVENvZGVXaXRoQ29kZVJlZihyZWYs
IGppdFR5cGUpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNrKQorRGlyZWN0
SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcywgSklU
VHlwZSBqaXRUeXBlKQorICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKGVudHJpZXMuY29kZVJlZigp
LCBqaXRUeXBlKQorICAgICwgbV9lbnRyeVBvaW50cyhlbnRyaWVzKQogewogfQogCkBAIC0xNzIs
MjUgKzE3MiwxNiBAQCBEaXJlY3RKSVRDb2RlOjp+RGlyZWN0SklUQ29kZSgpCiB7CiB9CiAKLXZv
aWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoSklUQ29kZTo6Q29kZVJlZiByZWYs
IEpJVENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCit2b2lkIERpcmVjdEpJVENvZGU6Omlu
aXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcykKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9yZWYpOwotICAgIG1fcmVmID0gcmVmOwotICAgIG1fd2l0aEFy
aXR5Q2hlY2sgPSB3aXRoQXJpdHlDaGVjazsKKyAgICBtX3JlZiA9IGVudHJpZXMuY29kZVJlZigp
OworICAgIG1fZW50cnlQb2ludHMgPSBlbnRyaWVzOwogfQogCi1KSVRDb2RlOjpDb2RlUHRyIERp
cmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorSklUQ29k
ZTo6Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlwZSB0
eXBlKQogewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1
aXJlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICByZXR1cm4gbV9y
ZWYuY29kZSgpOwotICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlDaGVjazsK
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29k
ZVB0cigpOworICAgIHJldHVybiBtX2VudHJ5UG9pbnRzLmVudHJ5Rm9yKHR5cGUpOwogfQogCiBO
YXRpdmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlwZSkKQEAgLTIxMyw3ICsy
MDQsNyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENvCiAgICAgbV9y
ZWYgPSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0Zv
ckNhbGwoQXJpdHlDaGVja01vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJVENvZGU6OmFk
ZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCEhbV9y
ZWYpOwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgor
I2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0Lmgi
CkBAIC0xNzMsOSArMTczLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaml0Q29kZS0+aml0
VHlwZSgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwo
RW50cnlQb2ludFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
KCkgeyByZXR1cm4gZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKTsgfQogICAgIHZpcnR1YWwg
dm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpID0gMDsKICAgICAKQEAg
LTIyNCwxNSArMjIzLDE1IEBAIHByb3RlY3RlZDoKIGNsYXNzIERpcmVjdEpJVENvZGUgOiBwdWJs
aWMgSklUQ29kZVdpdGhDb2RlUmVmIHsKIHB1YmxpYzoKICAgICBEaXJlY3RKSVRDb2RlKEpJVFR5
cGUpOwotICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVjaywg
SklUVHlwZSk7CisgICAgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYsIEpJVFR5
cGUpOwogICAgIHZpcnR1YWwgfkRpcmVjdEpJVENvZGUoKTsKICAgICAKLSAgICB2b2lkIGluaXRp
YWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOworICAgIHZvaWQg
aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZik7CiAKLSAgICBDb2Rl
UHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAgICBDb2RlUHRy
IGFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRyeVBv
aW50czsKIH07CiAKIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklUQ29kZVdpdGhDb2Rl
UmVmIHsKQEAgLTI0Myw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbml0aWFs
aXplQ29kZVJlZihDb2RlUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlD
aGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2lu
dFR5cGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJHUFJJ
bmZvLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgVk07CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CisKK2VudW0gQXJn
dW1lbnRzTG9jYXRpb24gOiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzID0gMCwKKyNpZiBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICBSZWdpc3RlckFy
Z3MxSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzMkluUmVnaXN0ZXJzLAorICAgIFJlZ2lz
dGVyQXJnczNJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M0SW5SZWdpc3RlcnMsCisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAgUmVnaXN0
ZXJBcmdzNUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczZJblJlZ2lzdGVycywKKyNlbmRp
ZgorICAgIFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2sKKyNlbmRpZgorfTsKKworLy8gVGhp
cyBlbnVtIG5lZWRzIHRvIGhhdmUgdGhlIHNhbWUgZW51bWVyYXRvciBvcmRlcmluZyBhcyBBcmd1
bWVudHNMb2NhdGlvbi4KK2VudW0gVGh1bmtFbnRyeVBvaW50VHlwZSA6IHVuc2lnbmVkIHsKKyAg
ICBTdGFja0FyZ3NFbnRyeSA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUyA+PSA0CisgICAgUmVnaXN0ZXIxQXJnRW50cnksCisgICAgUmVnaXN0ZXIyQXJn
c0VudHJ5LAorICAgIFJlZ2lzdGVyM0FyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjRBcmdzRW50cnks
CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAg
UmVnaXN0ZXI1QXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyNkFyZ3NFbnRyeSwKKyNlbmRpZgorI2Vu
ZGlmCisgICAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50Cit9OworCitlbnVtIEVudHJ5UG9pbnRU
eXBlIHsKKyAgICBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgU3RhY2tBcmdz
TXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBSZWdpc3Rl
ckFyZ3NQb3NzaWJsZUV4dHJhQXJncywKKyAgICBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICBS
ZWdpc3RlckFyZ3MxLAorICAgIFJlZ2lzdGVyQXJnczIsCisgICAgUmVnaXN0ZXJBcmdzMywKKyAg
ICBSZWdpc3RlckFyZ3M0LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyQXJnczUsCisgICAgUmVnaXN0ZXJBcmdzNiwKKyNlbmRp
ZgorI2VuZGlmCisjZW5kaWYKKyAgICBOdW1iZXJPZkVudHJ5UG9pbnRUeXBlcworfTsKKworY2xh
c3MgSklURW50cnlQb2ludHMgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIENvZGVQdHI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mRW50cnlU
eXBlcyA9IEVudHJ5UG9pbnRUeXBlOjpOdW1iZXJPZkVudHJ5UG9pbnRUeXBlczsKKworICAgIEpJ
VEVudHJ5UG9pbnRzKCkKKyAgICB7CisgICAgICAgIGNsZWFyRW50cmllcygpOworICAgIH0KKwor
ICAgIEpJVEVudHJ5UG9pbnRzKENvZGVQdHIgcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVkRW50
cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSwKKyAgICAgICAg
Q29kZVB0ciByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksIENvZGVQdHIgc3RhY2tBcmdzQXJp
dHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hlY2tB
cml0eUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tTdGFja0FyZ3NBcml0eUNo
ZWNrTm90UmVxdWlyZWRdID0gc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnk7Cisg
ICAgICAgIG1fZW50cnlQb2ludHNbU3RhY2tBcmdzTXVzdENoZWNrQXJpdHldID0gc3RhY2tBcmdz
Q2hlY2tBcml0eUVudHJ5OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVx
dWlyZWRdID0gcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVkRW50cnk7CisgICAgICAgIG1fZW50
cnlQb2ludHNbUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NdID0gcmVnaXN0ZXJBcmdzUG9z
c2libGVFeHRyYUFyZ3NFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFyZ3NN
dXN0Q2hlY2tBcml0eV0gPSByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgaSArKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbcmVnaXN0ZXJFbnRyeVR5
cGVGb3JBcmd1bWVudENvdW50KGkpXSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeTsKKyNl
bHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRFbnRy
eSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0Vu
dHJ5KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSk7
CisjZW5kaWYKKworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3IoRW50cnlQb2ludFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VudHJ5UG9pbnRzW3R5cGVdOworICAgIH0K
KworICAgIHZvaWQgc2V0RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRy
eSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlIDwgTnVtYmVyT2ZFbnRyeVBvaW50VHlwZXMp
OworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQorCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gb2Zmc2V0b2YoSklURW50cnlQb2ludHMsIG1fZW50cnlQb2ludHNb
dHlwZV0pOworICAgIH0KKworICAgIHN0YXRpYyBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVudHJ5
VHlwZUZvckFyZ3VtZW50Q291bnQodW5zaWduZWQgYXJnQ291bnQpCisgICAgeworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgQVNTRVJUKGFyZ0Nv
dW50KTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJBcmdDb3VudCA9IG51bWJlck9mUmVnaXN0
ZXJBcmd1bWVudHNGb3IoYXJnQ291bnQpOworICAgICAgICBpZiAoIXJlZ2lzdGVyQXJnQ291bnQg
fHwgcmVnaXN0ZXJBcmdDb3VudCAhPSBhcmdDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBSZWdp
c3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50
cnlQb2ludFR5cGU+KFJlZ2lzdGVyQXJnczEgKyByZWdpc3RlckFyZ0NvdW50IC0gMSk7CisjZWxz
ZQorICAgICAgICBVTlVTRURfUEFSQU0oYXJnQ291bnQpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJFbnRy
eVR5cGVGb3JBcmd1bWVudFR5cGUoQXJndW1lbnRzTG9jYXRpb24gdHlwZSkKKyAgICB7CisjaWYg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBBU1NFUlQo
dHlwZSAhPSBTdGFja0FyZ3MpOworICAgICAgICBpZiAodHlwZSA9PSBSZWdpc3RlckFyZ3NXaXRo
RXh0cmFPblN0YWNrKQorICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0Fy
aXR5OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRUeXBl
PihSZWdpc3RlckFyZ3MxICsgdHlwZSAtIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyk7CisjZWxz
ZQorICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyNl
bmRpZgorICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisKKyAgICBK
SVRFbnRyeVBvaW50cyYgb3BlcmF0b3I9KGNvbnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhlcikKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykK
KyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ldOwor
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBDb2RlUHRy
IG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKK2NsYXNzIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZiA6IHB1YmxpYyBKSVRFbnRyeVBvaW50cyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKworICAgIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb25z
dCBKSVRFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRz
KG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAgeworICAg
IH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIGNvbnN0IEpJ
VEVudHJ5UG9pbnRzJiBvdGhlcikKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhvdGhlcikKKyAg
ICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorICAgIAorICAgIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQdHIgc3RhY2tBcmdzQXJpdHlD
aGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hlY2tBcml0
eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKENvZGVQdHIoKSwgQ29kZVB0cigpLCBD
b2RlUHRyKCksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LCBzdGFja0FyZ3ND
aGVja0FyaXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAg
IH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQdHIg
cmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hlY2tB
cml0eUVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZEVudHJ5LCBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgOiBKSVRF
bnRyeVBvaW50cyhyZWdpc3RlckFyZ3NOb0NoZWNrc1JlcXVpcmVkRW50cnksIHJlZ2lzdGVyQXJn
c1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksCisgICAgICAgICAgICByZWdpc3RlckFyZ3NDaGVja0Fy
aXR5RW50cnksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAgICAg
ICAgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihjb2RlUmVm
KQorICAgIHsKKyAgICB9CisKKyAgICBDb2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBtX2NvZGVS
ZWY7IH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsKK307CisKK2lubGluZSBB
cmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbkZvcih1bnNpZ25lZCBhcmd1bWVudENv
dW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAg
ICBpZiAoIWFyZ3VtZW50Q291bnQpCisgICAgICAgIHJldHVybiBTdGFja0FyZ3M7CisgICAgCisg
ICAgYXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgKyAxLCBhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXJndW1lbnRzTG9jYXRpb24+KEFyZ3VtZW50c0xvY2F0aW9uOjpSZWdpc3RlckFyZ3Mx
SW5SZWdpc3RlcnMgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzOworI2VuZGlmCit9CisKK2lu
bGluZSBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9yKHVuc2lnbmVkIGFy
Z3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgIGlmICghYXJndW1lbnRDb3VudCB8fCBhcmd1bWVudENvdW50ID4gTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVy
QXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBv
aW50VHlwZT4oRW50cnlQb2ludFR5cGU6OlJlZ2lzdGVyQXJnczEgKyBhcmd1bWVudENvdW50IC0g
MSk7CisjZWxzZQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgVU5VU0VE
X1BBUkFNKGFyZ3VtZW50Q291bnQpOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKKyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGVGb3Io
QXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGFyZ3VtZW50TG9jYXRpb24gPT0g
U3RhY2tBcmdzKQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7CisgICAg
CisgICAgaWYgKGFyZ3VtZW50TG9jYXRpb24gPT0gUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFj
aykKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6OlJlZ2lz
dGVyQXJnczEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbiAtIFJlZ2lz
dGVyQXJnczFJblJlZ2lzdGVycykpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRM
b2NhdGlvbik7CisgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2VuZGlmCit9
CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRUeXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3IoQXJn
dW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgYXJndW1lbnRMb2NhdGlvbklu
ZGV4ID0gc3RkOjptaW4oUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjayAtIDEsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihhcmd1bWVudExvY2F0aW9uKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFRodW5rRW50cnlQb2ludFR5cGU+KGFyZ3VtZW50TG9jYXRpb25JbmRleCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShhcmd1bWVudExvY2F0aW9uKTsKKyAgICByZXR1cm4gU3RhY2tBcmdzRW50
cnk7CisjZW5kaWYKK30KKworaW5saW5lIFRodW5rRW50cnlQb2ludFR5cGUgdGh1bmtFbnRyeVBv
aW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBhcmd1bWVudENvdW50ID0gbnVtYmVyT2ZS
ZWdpc3RlckFyZ3VtZW50c0Zvcihhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oVGh1bmtFbnRyeVBvaW50VHlwZTo6UmVnaXN0
ZXIxQXJnRW50cnkgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzRW50cnk7CisjZW5kaWYKK30K
KworY2xhc3MgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgeworcHVibGljOgorICAg
IHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIENvZGVQdHI7CisgICAgdHlwZWRlZiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZFbnRyeVR5cGVzID0gVGh1bmtFbnRyeVBvaW50VHlwZTo6VGh1bmtFbnRyeVBvaW50VHlw
ZUNvdW50OworCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoKQorICAgIHsK
KyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNv
ZGVSZWYpCisgICAgICAgIDogbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKworICAg
IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvbnN0IEpJVEpTQ2FsbFRodW5rRW50
cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAgOiBtX2NvZGVSZWYob3RoZXIubV9jb2Rl
UmVmKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mRW50
cnlUeXBlczsgaSsrKQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IG90aGVyLm1fZW50
cnlQb2ludHNbaV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihUaHVua0VudHJ5UG9p
bnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50c1t0eXBlXTsK
KyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50
c0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5Rm9yKHRodW5rRW50cnlQb2lu
dFR5cGVGb3IoYXJndW1lbnRzTG9jYXRpb24pKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudHJ5
Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKKyAgICB7CisgICAg
ICAgIG1fZW50cnlQb2ludHNbdHlwZV0gPSBlbnRyeTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRW50cnlGb3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVm
LCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50cmllcygp
CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7IGkt
LTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCk7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkgeyByZXR1cm4gbV9jb2RlUmVmOyB9
CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3BlcmF0b3I9KGNvbnN0
IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICB7CisgICAgICAg
IG1fY29kZVJlZiA9IG90aGVyLm1fY29kZVJlZjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9
IG90aGVyLm1fZW50cnlQb2ludHNbaV07CisgICAgICAgIAorICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCitwcml2YXRlOgorICAgIENvZGVSZWYgbV9jb2RlUmVmOworICAgIENvZGVQdHIg
bV9lbnRyeVBvaW50c1tudW1iZXJPZkVudHJ5VHlwZXNdOworfTsKKworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVDo6Q29kZVJlZiBKSVQ6
OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMp
CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZl
Q2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0cy4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5CkBAIC0x
MjksNyArMTI5LDkgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhVTktfSUQp
OwogCiAgICAgcGF0Y2hCdWZmZXIubGluayhuYXRpdmVDYWxsLCBGdW5jdGlvblB0cihmdW5jKSk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiSklUIENUSSBuYXRpdmUg
Y2FsbCIpKTsKKyAgICBKSVQ6OkNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsICgiSklUIENUSSBuYXRpdmUgY2FsbCIpKTsKKyAgICAKKyAgICByZXR1cm4gSklURW50
cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKIAotSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRp
dmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklU
Ojpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9u
KQogewotICAgIHJldHVybiB2bS0+Z2V0Q1RJU3R1YihuYXRpdmVDYWxsR2VuZXJhdG9yKTsKKyAg
ICByZXR1cm4gdm0tPmdldEpJVEVudHJ5U3R1YihuYXRpdmVDYWxsR2VuZXJhdG9yKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MCwxMCArODkwLDE0IEBAIFNsb3dQYXRoUmV0dXJuVHlw
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2Nv
cGVVbmNoZWNrZWQoKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+
ZXhlY3V0YWJsZSgpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIsIGNvZGVQdHJGb3JMaW5raW5nOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rp
b24oKSkgewotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5k
LCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmFy
Z3VtZW50c0luUmVnaXN0ZXJzKCkpCisgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9IGV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkp
OworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKIApAQCAtOTE0LDE3ICs5MTgsNDEgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aQogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtl
ZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxvY2tT
bG90OwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKLSAgICAgICAgaWYgKGV4ZWNDYWxs
ZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygpKQot
ICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAgICBF
bnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CisgICAgICAgIHNpemVfdCBjYWxsZXJBcmd1bWVudENv
dW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICAgICAg
c2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPCBj
YWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpIHsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBpZiAo
Y2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAgICAg
Y29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChjYWxs
ZXJBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlua2lu
ZykKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkpOwor
ICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NN
dXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVu
dHNMb2NhdGlvbigpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUworICAgICAgICB9IGVsc2UgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3Rl
cnMoKSkgeworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVlQXJn
dW1lbnRDb3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzQXJp
dHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtp
bmQsIEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQoY2Fs
bGVyQXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxpbmtp
bmcpCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50cnkg
cG9pbnRzIHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lkKSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3Io
Y2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVudHJ5
VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1
aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZv
cihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9u
Y2UoKSkKICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQotICAgICAg
ICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBj
b2RlUHRyKTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2Rl
QmxvY2ssIGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2luZyA6IGNv
ZGVQdHIpOwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2Rl
KCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9
CkBAIC05NTksNyArOTg3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rRGly
ZWN0Q2EKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9u
KCkpCi0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11
c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGNh
bGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2RlUHRyID0g
ZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7
CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KTsKIApAQCAtOTcxLDEzICsxMDAzLDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rRGlyZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUs
IGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBBcml0eUNo
ZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3Vt
ZW50cygpOwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9IE11
c3RDaGVja0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNpZiBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlu
a0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgbG9n
aWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChhcmd1bWVu
dFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAgICAgICBl
bnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0
aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIGlm
IChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVyQXJn
c1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0ZXJFbnRy
eVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2UgaWYgKGFy
Z3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UKKyAgICAg
ICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vu
ZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0g
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
YXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RGb3IoZXhl
YywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCArMTA2OCwx
NyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0K
ICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAg
IGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgLy8g
UHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkgaWYgdGhl
IGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdpbGwgYmUg
dXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2b2lkKSBl
eGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5
KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQ
b2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICB9
CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAor
ICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9k
ZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVua3MoKQog
ewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVDYWxsKFZN
KiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ2Fs
bChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVfY2Fs
bF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVyYXRv
cikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAgICAgICBy
ZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIsIG5hdGl2
ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0aXZlQ2Fs
bEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0aU5h
dGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklU
KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVybiBjdGlT
dHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAoIXZtLT5j
YW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZlQ29uc3Ry
dWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRyeVBv
aW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2ZUNvbnN0
cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVDb25z
dHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpj
dGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlTdHVi
KFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBt
X2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWYoKSk7
CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24gdGhy
ZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0g
Z2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsK
K30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRDYWxs
VGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5lcmF0
b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlTdHViTWFw
LmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkpOworICAg
IGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRocmVhZCBj
YW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQoIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9IGdlbmVy
YXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9CisK
IHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKikK
IHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUq
PihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZlRXhlY3V0
YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rpb25TdHVi
KHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBudWxscHRy
LCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25T
dHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05h
dGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2
ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlH
ZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFp
c0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsK
QEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1
bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5lcmF0b3Ip
IHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsK
LSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBlbnRy
eS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShK
SVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJ
VDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRDb2RlOjpI
b3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9
IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpIb3N0
Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklUQ29kZTo6
SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwg
Zm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwog
ICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0
aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhl
Y3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCi1OYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklURW50
cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIs
IG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgog
I2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgogICAgIEpJ
VFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGppdEVu
dHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRFbnRyeU5h
dGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVU
YWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlVGFp
bENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2ludHNXaXRo
UmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRKU0NhbGxU
aHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBKSVRDYWxs
VGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rp
b25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5r
R2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwg
TmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2
ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0b3Is
IEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5j
dGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3MywxMCBA
QCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9jdGlTdHVi
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50cnlQb2lu
dHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1faml0RW50
cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRv
ciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0VudHJ5U3R1
Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtFbnRyeVN0
dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RK
U0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihSZWdpc3Rl
cklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQpOworICAg
ICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAgICAgIHZv
aWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgog
CkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQogICAgIAor
ICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJ
Zk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBi
cmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICB6ZXJv
RXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9h
ZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0
KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50MzIoZHN0
KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VK
SVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lz
dGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsx
NTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJlZ2lz
dGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8IE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAgICBHUFJS
ZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgpOworCisg
ICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmVz
dWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7
CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAgIHN0YXRp
YyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywg
cmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIHN0
YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdXNlZCB0
byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBSZWdpc3Rl
clNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHRo
YXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGljIFJlZ2lz
dGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBz
YXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBE
RkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDAsMjEgKzU0MCwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtT
bG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1bmtFbnRy
eVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJlZi5jb2Rl
KCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBvaW50cy5l
bnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAotc3RhdGlj
IHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgVGh1
bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0b3IgZ2Vu
ZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRDVElT
dHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxp
bmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2Fs
bExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0dWFs
VGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dG
b3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0
U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51bGxwdHIs
IHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRp
bmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKIHN0
YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUp
CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBsaW5rU2xvd0ZvcigKICAgICBsaW5rU2xvd0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0sIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZikK
K3N0YXRpYyB2b2lkIHJldmVydENhbGwoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY29kZVJlZikKIHsKICAgICBpZiAo
Y2FsbExpbmtJbmZvLmlzRGlyZWN0KCkpIHsKICAgICAgICAgY2FsbExpbmtJbmZvLmNsZWFyQ29k
ZUJsb2NrKCk7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0mIHZtLCBDYWxs
TGlua0luZm8mIGNhbAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkKICAgICAg
ICAgZGF0YUxvZygiVW5saW5raW5nIGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhl
cigpLCAiXG4iKTsKICAgICAKLSAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2bS5n
ZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKTsKKyAgICByZXZlcnRDYWxsKCZ2bSwg
Y2FsbExpbmtJbmZvLCB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikpOwogfQogCiB2b2lkIGxpbmtWaXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8pCkBAIC02ODMsOSArNjgzLDkgQEAgdm9pZCBsaW5rVmly
dHVhbEZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbAogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1i
bHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAgZGF0YUxvZygiTGlua2luZyB2aXJ0dWFs
IGNhbGwgYXQgIiwgKmNhbGxlckNvZGVCbG9jaywgIiAiLCBjYWxsZXJGcmFtZS0+Y29kZU9yaWdp
bigpLCAiXG4iKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2
aXJ0dWFsVGh1bmtGb3IoJnZtLCBjYWxsTGlua0luZm8pOworICAgIEpJVEpTQ2FsbFRodW5rRW50
cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcigmdm0sIGNhbGxM
aW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5r
KTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmly
dHVhbFRodW5rLCB2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93
U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29kZVJlZigpLCB2bSwgbnVs
bHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNzQwLDYgKzc0MCw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExpbmtJbmZvLnNldEhhc1NlZW5DbG9z
dXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsK
KyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUu
CiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtNzUxLDcgKzc1Miw3
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgp
OwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0aGVyIGJl
Y2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1pc21hdGNo
LAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hvbGUg
dGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8
fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJncygp
KSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENvdW50IDwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExp
bmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC03NzUsNyArNzc2LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICB9CiAg
ICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2FsbExpbmtJ
bmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRz
SW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoJnZtLCBjYWxsZXJD
b2RlQmxvY2spOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd1BhdGg7CkBA
IC03OTcsNiArODAxLDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUjsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgICAgICBz
Y3JhdGNoR1BSID0gZnJhbWVTaHVmZmxlci0+YWNxdWlyZUdQUigpOworICAgICAgICBlbHNlIGlm
IChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgICAgIHNjcmF0
Y2hHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIwOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
Y3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUik7
CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBmdW5jdGlvbiBhbmQgc3Rhc2ggdGhl
IGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KQEAgLTg2MiwxMyArODY4LDIzIEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICBHUFJSZWcgZmFzdENvdW50c0Jhc2VHUFI7CiAgICAgaWYg
KGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0gZnJhbWVTaHVmZmxl
ci0+YWNxdWlyZUdQUigpOworICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJblJl
Z2lzdGVycygpKQorI2lmIENQVShBUk02NCkKKyAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPSBH
UFJJbmZvOjpub25BcmdHUFIxOworI2Vsc2UKKyAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIgPSBH
UFJJbmZvOjpyZWdUMDsKKyNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBmYXN0Q291bnRzQmFz
ZUdQUiA9CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoY2Fs
bGVlR1BSLCBjb21wYXJpc29uVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QzKTsKICAgICB9Ci0gICAg
c3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihmYXN0Q291bnRzLmdldCgp
KSwgZmFzdENvdW50c0Jhc2VHUFIpOworICAgIGlmIChmYXN0Q291bnRzKQorICAgICAgICBzdHVi
Sml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkpLCBm
YXN0Q291bnRzQmFzZUdQUik7CiAgICAgaWYgKCFmcmFtZVNodWZmbGVyICYmIGNhbGxMaW5rSW5m
by5pc1RhaWxDYWxsKCkpCiAgICAgICAgIHN0dWJKaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygp
OworCisgICAgaW5jcmVtZW50Q291bnRlcigmc3R1YkppdCwgVk06OlBvbHltb3JwaGljQ2FsbCk7
CisKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25WYWx1ZUdQUiwgY2Fz
ZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKQEAg
LTg3Nyw4ICs4OTMsMzIgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBDYWxs
VmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFudCgpOwogICAgICAg
ICAKICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2Fs
bCgpKTsKKworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWQ7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkp
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbENhc2VzW2Nhc2VJbmRl
eF0uY29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAgICAg
ICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlQXJn
dW1lbnRDb3VudCA9PSBjYWxsZXJBcmd1bWVudENvdW50IHx8IGNhbGxlZUFyZ3VtZW50Q291bnQg
Pj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50VHlw
ZSBlbnRyeUZvckFyZ0NvdW50ID0gSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9y
QXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPQorICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NG
b3JDYWxsKGVudHJ5Rm9yQXJnQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29kZVB0
cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVudHJ5Rm9yQXJnQ291bnQ7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5
VHlwZSA9IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVy
QXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9Ci0gICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVj
a05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChlbnRyeVR5cGUpOworICAgICAgICBB
U1NFUlQoY29kZVB0cik7CiAgICAgICAgIAogICAgICAgICBpZiAoZmFzdENvdW50cykgewogICAg
ICAgICAgICAgc3R1YkppdC5hZGQzMigKQEAgLTg4Niw3ICs5MjYsNyBAQCB2b2lkIGxpbmtQb2x5
bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGZhc3RD
b3VudHNCYXNlR1BSLCBjYXNlSW5kZXggKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKLSAgICAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90KCkpLnByZXBhcmVGb3JUYWlsQ2Fs
bCgpOworICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxl
ci0+c25hcHNob3QoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKS5wcmVwYXJlRm9y
VGFpbENhbGwoKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQu
bmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENh
bGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7CkBA
IC05MDcsMTkgKzk0NywxOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2FsbGVlSlNWYWx1ZVJlZ3Mo
SlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKSk7CiAjZWxzZQotICAg
ICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJ
bmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9u
KCkgPT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2FsbGVlSlNW
YWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7CiAjZW5k
aWYKICAgICAgICAgZnJhbWVTaHVmZmxlci0+cHJlcGFyZUZvclNsb3dQYXRoKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOwogI2VuZGlm
CiAgICAgfQotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNh
bGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVj
dXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOwotICAgIAotICAgIHN0dWJKaXQucmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6cmVnVDQpOworICAgIHN0dWJK
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsK
KyAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5v
bkFyZ0dQUjEpOworCisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpKdW1wIHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcih2bSwgc3R1YkppdCwgb3duZXIsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7
CkBAIC05NDAsNyArOTgwLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5s
YWJlbEF0T2Zmc2V0KDApKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9u
ZSwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpLmxhYmVsQXRPZmZzZXQoMCkpOwotICAgIHBh
dGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNoQnVmZmVy
Lmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHVi
KGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZv
LmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9IGFk
b3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpF
X0NPREVfRk9SKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRo
dW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFs
aXplZFRodW5rSklULmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVEVu
dHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJm
YWNlSklULmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJ
bnRlcmZhY2VKSVQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlz
QXJndW1lbnQgPSAtMTsKLSAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBl
eHBlY3RlZEFyZ0NvdW50KQorICAgICAgICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywgSW5S
ZWdpc3RlcnMgfTsKKworICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4
cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3BpbGxU
eXBlID0gQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xvY2F0
aW9uID0gT25TdGFjaykKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBlbWl0
U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAg
ICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAx
KSkpOworI2lmICFOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
ICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShhcmdMb2NhdGlvbik7CisjZWxzZQorICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09IElu
UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0gbGFi
ZWwoKTsKKyAgICAgICAgICAgICAgICBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVCZWZv
cmVQcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRyeSA9
IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAg
ICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAgICAg
ICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFy
Z3VtZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVx
dWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIoZXhw
ZWN0ZWRBcmdDb3VudCArIDEpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0ZWRB
cmdDb3VudCArIDEsIHNwaWxsVHlwZSk7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50
c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CisgICAgICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVj
dGVkIG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVu
a0pJVChWTSogdm0pCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNU
b0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNFbnRy
eSA9IExhYmVsKCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAg
ICAgICB9CkBAIC05NCwxMSArMTIwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bG9hZEludDMyQXJndW1lbnQoYXJndW1lbnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAgfQor
CisgICAgICAgIHZvaWQgY2hlY2tKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJRCBh
cmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1pdEp1
bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQo
YnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJndW1l
bnQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0uc3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQg
YXBwZW5kRmFpbHVyZShjb25zdCBKdW1wJiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZvaWQg
bGlua0ZhaWx1cmVIZXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5saW5r
KHRoaXMpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJRCBz
cmMpCiAgICAgICAgIHsKQEAgLTE2NCwxMyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0
IGNoYXIqIHRodW5rS2luZCkKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFsaXpl
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQog
ICAgICAgICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhp
cywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWls
dXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBh
dGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwotICAg
ICAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQg
dGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBzdGFja0VudHJ5OworICAgICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNFbnRy
eS5pc1NldCgpKQorICAgICAgICAgICAgICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mKG1fc3RhY2tBcmd1bWVudHNFbnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsKKyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJndW1l
bnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0Y2hC
dWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAgICAg
ICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJlZ2lz
dGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNvZGUo
KSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVm
KGVudHJ5LCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIwIGFz
IHRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9m
YWlsdXJlczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1bWVu
dHNFbnRyeTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVudHNF
bnRyeTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1fY2Fs
bHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3IuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNz
IEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmOwogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJhdG9y
KShWTSopOwordHlwZWRlZiBKSVRFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVyYXRv
cikoVk0qKTsKK3R5cGVkZWYgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRD
YWxsVGh1bmtFbnRyeUdlbmVyYXRvcikoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjMgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwog
fQogCitzdGF0aWMgdm9pZCBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0NhbGxI
ZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnRdKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVudHJ5
UG9pbnRzW3RodW5rRW50cnlQb2ludFR5cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFiZWwo
KTsKKyAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUo
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7
CisgICAgfQorCisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKKyAg
ICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdp
c3RlckZvckFyZ3VtZW50Q291bnQoKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShqaXQpOworICAgIFVOVVNFRF9QQVJBTShlbnRyeVBvaW50
cyk7CisjZW5kaWYKKyAgICBlbnRyeVBvaW50c1tTdGFja0FyZ3NdID0gaml0LmxhYmVsKCk7Cit9
CisKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIENDYWxsSGVscGVycyYgaml0LCBWTSog
dm0sIFNwcnRfSklUT3BlcmF0aW9uX0VDbGkgc2xvd1BhdGhGdW5jdGlvbikKIHsKQEAgLTg4LDcg
KzEwNSw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIC8vIE1vdmluZyB0aGUgc3Rh
Y2sgZG93biBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCBieXRlcyBnaXZlcyB1cyByb29t
IGZvciBvdXIgMyBhcmd1bWVudHMKICAgICAvLyBhbmQgc3BhY2UgZm9yIHRoZSAxNiBieXRlIHJl
dHVybiBhcmVhLgogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMyKSwg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0
d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwpAQCAtMTAwLDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogI2Vsc2UKICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1bmN0
aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihq
aXQsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQ
UjApOwpAQCAtMTI3LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIGpp
dC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxsVGh1bmtFbnRyeVBv
aW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgLy8gVGhl
IHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0aGUgbGluayByZWdpc3Rlci4g
V2Ugd2lsbCBoZW5jZQogICAgIC8vIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRoZSBjYWxs
IGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbApAQCAtMTM1LDQ1ICsxNTIs
MTUzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXIKICAgICAvLyB0
byBiZSBpbiByZWdUMC9yZWdUMSAocGF5bG9hZC90YWcpLCB0aGUgQ2FsbEZyYW1lIHRvIGhhdmUg
YWxyZWFkeQogICAgIC8vIGJlZW4gYWRqdXN0ZWQsIGFuZCBhbGwgb3RoZXIgcmVnaXN0ZXJzIHRv
IGJlIGF2YWlsYWJsZSBmb3IgdXNlLgogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwotICAgIAor
CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2ludFR5
cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0LCBl
bnRyeVBvaW50cyk7CiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0NhbGwp
OwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVO
S19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBjYWxs
IHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7
CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY2FsbEVudHJ5UG9pbnRzID0g
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZik7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRyeVBv
aW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9pbnRzLnNl
dEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgpLAor
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRyeUluZGV4
XSkpOworICAgIH0KKworICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7Cit9CisKK0pJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQoreworICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sgb3IgaW4g
dGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKKyAgICAvLyBzYXZlIHRoZSByZXR1cm4g
YWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9uIGNh
bGwKKyAgICAvLyB0byBwZXJmb3JtIGxpbmtpbmcgYW5kIGxhenkgY29tcGlsYXRpb24gaWYgbmVj
ZXNzYXJ5LiBXZSBleHBlY3QgdGhlIENhbGxMaW5rSW5mbworICAgIC8vIHRvIGJlIGluIEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHRoZSBjYWxsZWUgdG8gYmUgaW4gYXJndW1lbnRSZWdpc3RlckZvckNh
bGxlZSgpLAorICAgIC8vIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gYWRqdXN0
ZWQsIGFuZCBhcmd1bWVudHMgaW4gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgLy8gYW5kL29yIGlu
IHRoZSBzdGFjayBhcyBhcHByb3ByaWF0ZS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKKyAg
ICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50
VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQs
IGVudHJ5UG9pbnRzKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpub25BcmdHUFIxKTsgLy8gU2F2ZSBjYWxsZWUncyBmcmFtZSBwb2ludGVyCisg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CisKKyAgICBpZiAobWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnNldHVwQXJndW1lbnRzKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaWYgKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgIEdQUlJlZyBh
cmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgaml0
LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKworICAgIC8vIGxvYWQgInRoaXMi
CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZSgwLCBh
cmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKSk7CisKKyAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZmlsbFVuZGVmaW5lZFtOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTXTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXgg
PCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7
CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdID0gaml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKGFyZ0luZGV4KSk7CisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFyZ3Vt
ZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFy
Z3VtZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVG
aWxsaW5nID0gaml0Lmp1bXAoKTsKKworICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBh
cmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0lu
ZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVmaW5lZFthcmdJbmRleF0ubGluaygmaml0KTsKKyAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJn
SW5kZXgpKTsKKyAgICB9CisKKyAgICBkb25lRmlsbGluZy5saW5rKCZqaXQpOworI2VuZGlmCisK
KworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQs
IEdMT0JBTF9USFVOS19JRCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGRpcmVjdCBjYWxsIHRodW5rIikpOworICAg
IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5UG9p
bnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMuc2V0
RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCksCisg
ICAgICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5kZXhd
KSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8vIEZv
ciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYg
eW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgogLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlv
dSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxsVGh1
bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKICAgICAKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKworICAg
IGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsKKwog
ICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwpOwog
ICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19J
RCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBwb2x5bW9y
cGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Y29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMgY2Fs
bCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhS
ZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29k
ZVJlZik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdzOyBl
bnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7Cisg
ICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5
UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNh
bGxFbnRyeVBvaW50czsKIH0KIAogLy8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3
ZWVuIGEgbWVnYW1vcnBoaWMgdmlydHVhbCBjYWxsIHZzLiBhIHNsb3cKIC8vIHBhdGggdmlydHVh
bCBjYWxsIHNvIHRoYXQgd2UgY2FuIGVuYWJsZSBmYXN0IHRhaWwgY2FsbHMgZm9yIG1lZ2Ftb3Jw
aGljCiAvLyB2aXJ0dWFsIGNhbGxzIGJ5IHVzaW5nIHRoZSBzaHVmZmxlci4KIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MzEKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykK
K0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSogdm0s
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAgIC8vIFRoZSBjYWxsZWUgaXMgaW4g
cmVnVDAgKGZvciBKU1ZBTFVFMzJfNjQsIHRoZSB0YWcgaXMgaW4gcmVnVDEpLgotICAgIC8vIFRo
ZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2ssIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVy
LiBXZSB3aWxsIGhlbmNlCi0gICAgLy8ganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSBy
ZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZQotICAgIC8vIG1ha2UgYSBD
KysgZnVuY3Rpb24gY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KKyAgICAv
LyBUaGUgY2FsbGVlIGlzIGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSAoZm9yIEpTVkFM
VUUzMl82NCwgaXQgaXMgaW4gcmVnVDE6cmVnVDApLgorICAgIC8vIFRoZSBDYWxsTGlua0luZm8g
aXMgaW4gR1BSSW5mbzo6bm9uQXJnR1BSMC4KKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMg
b24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayByZWdpc3Rlci4KKyAgICAvLy8gV2Ugd2lsbCBo
ZW5jZSBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRo
ZSBjYWxsCisgICAgLy8gZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsIHRv
IHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgogCiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2
bSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAKLSAg
ICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4ZWN1dGlvbiwgYW5kIHJlZ1QyIGNvbnRhaW5zIHRo
ZSBDYWxsTGlua0luZm8uIENvdW50IHRoZQotICAgIC8vIHNsb3cgcGF0aCBleGVjdXRpb24gZm9y
IHRoZSBwcm9maWxlci4KKworICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJSZWcgY2FsbGVlVGFn
UmVnID0gR1BSSW5mbzo6cmVnVDE7CisjZW5kaWYKKyAgICBHUFJSZWcgdGFyZ2V0UmVnID0gR1BS
SW5mbzo6bm9uQXJnR1BSMTsKKyAgICAvLyBUaGlzIGlzIHRoZSBDYWxsTGlua0luZm8qIG9uIGVu
dHJ5IGFuZCB1c2VkIGxhdGVyIGFzIGEgdGVtcC4KKyAgICBHUFJSZWcgY2FsbExpbmtJbmZvQW5k
VGVtcFJlZyA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisKKyAgICBqaXQuZmlsbEFyZ3VtZW50UmVn
aXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcmVnaXN0
ZXJFbnRyeSA9IGppdC5sYWJlbCgpOworI2VuZGlmCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZq
aXQsIFZNOjpWaXJ0dWFsQ2FsbCk7CisKKyAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4ZWN1
dGlvbi4gQ291bnQgdGhlIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxlci4KICAg
ICBqaXQuYWRkMzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5rSW5mbzo6
b2Zmc2V0T2ZTbG93UGF0aENvdW50KCkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aENv
dW50KCkpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZvciBlbGlt
aW5hdGluZyB0aGVzZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERGRyBrbm93
cyB0aGF0IHRoZSB2YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVseSBhIGZ1
bmN0aW9uLgpAQCAtMTgxLDU0ICszMDYsNjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxUaHVua0ZvcihWTQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc2xvd0Nhc2UuYXBwZW5kKAog
ICAgICAgICBqaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25a
ZXJvLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZVJlZywgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7CiAjZWxzZQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJyYW5j
aDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEs
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVUYWdSZWcsCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwog
I2VuZGlmCi0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6
cmVnVDAsIEpTRnVuY3Rpb25UeXBlKSk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdFR5cGUoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uVHlwZSkpOwogICAgIAogICAgIC8vIE5vdyB3
ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogICAgIAogICAgIGppdC5sb2FkUHRyKAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSksCisgICAgICAgIHRhcmdldFJlZyk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCBFeGVj
dXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCi0gICAgICAgIEdQUklu
Zm86OnJlZ1Q0KTsKLSAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOworICAgICAgICAgICAgdGFyZ2V0UmVnLCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZvcigKKyAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksCisgICAgICAgICAgICAgICAgZW50cnlQb2ludFR5
cGVGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSksCisgICAgICAgIHRhcmdl
dFJlZyk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVy
czo6WmVybywgdGFyZ2V0UmVnKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBo
YXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAg
ICAvLyBjYWxsLgogICAgIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1
cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJ
bmZvOjpyZWdUNCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgdGFyZ2V0UmVnKTsK
ICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewotICAgICAgICBqaXQucHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnBy
ZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQuc3BpbGxB
cmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICBqaXQucHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcpOworICAg
ICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyh0YXJnZXRSZWcpOwogICAgIH0KLSAgICBq
aXQuanVtcChHUFJJbmZvOjpyZWdUNCk7Ci0KKyAgICBqaXQuanVtcCh0YXJnZXRSZWcpOwogICAg
IHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQs
IFZNOjpWaXJ0dWFsU2xvd0NhbGwpOworCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93IGFueXRo
aW5nLCBzbyByZXZlcnQgdG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgorICAgIGppdC5zcGlsbEFyZ3Vt
ZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCiAgICAgc2xvd1BhdGhG
b3Ioaml0LCB2bSwgb3BlcmF0aW9uVmlydHVhbENhbGwpOwogICAgIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUoCi0gICAgICAgIHBhdGNoQnVmZmVyLAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsCiAgICAgICAgICgiVmlydHVhbCAl
cyBzbG93IHBhdGggdGh1bmsiLAogICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBD
YWxsTW9kZTo6UmVndWxhciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENh
bGxNb2RlOjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0IikpOworICAgIEpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAgY2FsbEVudHJ5UG9pbnRzLnNldEVu
dHJ5Rm9yKFN0YWNrQXJnc0VudHJ5LCBjb2RlUmVmLmNvZGUoKSk7CisKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IHJlZ2lzdGVyRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50cnkp
OworCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gUmVnaXN0ZXIxQXJnRW50cnk7IGVu
dHJ5SW5kZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspCisgICAg
ICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5UG9p
bnRUeXBlPihlbnRyeUluZGV4KSwgcmVnaXN0ZXJFbnRyeVB0cik7CisjZW5kaWYKKworICAgIHJl
dHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRlclZp
YUNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZl
ZFRhZ3MgfTsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZW5lcmF0
b3IoVk0qIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBlIGVu
dHJ5VHlwZSA9IEVudGVyVmlhQ2FsbCkKK3N0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0
aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBUaHVu
a0VudHJ5VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0cy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5CkBA
IC0yMzcsOCArMzc3LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9y
R2UKICAgICAKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogCisgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHN0YWNrQXJnc0VudHJ5OworCiAgICAgc3dpdGNoIChlbnRyeVR5cGUpIHsKICAg
ICBjYXNlIEVudGVyVmlhQ2FsbDoKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNU
b0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworICAgICAgICBzdGFja0FyZ3NFbnRyeSA9IGppdC5s
YWJlbCgpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3M6CkBAIC0zNzksMjUgKzUy
NSwzMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgaml0
Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
KnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsICgibmF0aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBFbnRlclZp
YUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRhaWwgV2l0aCBTYXZlZCBUYWdzICIgOiBlbnRyeVR5cGUg
PT0gRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2ZWQgVGFn
cyAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRy
YW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWls
IFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZl
ZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCku
ZGF0YSgpKSk7CisgICAgaWYgKGVudHJ5VHlwZSA9PSBFbnRlclZpYUNhbGwpIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mKHN0YWNrQXJnc0VudHJ5KTsKKworICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRo
UmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2Rl
KCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQdHIpOworICAgIH0KKworICAgIHJldHVybiBK
SVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYuY29k
ZSgpKTsKKwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihW
TSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSogdm0p
CiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qIHZtKQog
ewotICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRlclZp
YUp1bXBXaXRoU2F2ZWRUYWdzKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBD
b2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncykuY29kZVJlZigpOwogfQogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJh
dG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2RlRm9y
Q2FsbCwgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2ZUZv
ckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3Mp
LmNvZGVSZWYoKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdl
bmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0R2Vu
ZXJhdG9yKFZNKiB2bSkKIHsKICAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2Rl
Rm9yQ29uc3RydWN0KTsKIH0KQEAgLTUzNiw2ICs2OTAsNDMgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHVucmVhY2hhYmxlR2VuZXJhdAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoInVucmVhY2hhYmxlIHRodW5rIikpOwogfQogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUworc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWRSZWdDYWxs
KFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtKQoreworICAgIC8vIGxvYWQgc3RyaW5n
CisgICAgR1BSUmVnIHRoaXNSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVu
dCgwKTsKKyAgICBHUFJSZWcgaW5kZXhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudCgyKTsKKyAgICBHUFJSZWcgbGVuZ3RoUmVnID0gYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoMyk7CisgICAgR1BSUmVnIHRlbXBSZWcgPSBTcGVjaWFsaXplZFRodW5r
SklUOjpub25BcmdHUFIwOworCisgICAgaml0LmNoZWNrSlNTdHJpbmdBcmd1bWVudCgqdm0sIHRo
aXNSZWcpOworCisgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQg
dGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKKyAgICBq
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVyczo6
anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIGxlbmd0aFJlZyk7CisgICAgaml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVl
T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wUmVnKSk7CisKKyAgICAvLyBsb2FkIGluZGV4
CisgICAgaml0Lm1vdmUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSksIGlu
ZGV4UmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdEludDMyKGlu
ZGV4UmVnKSk7CisKKyAgICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVsdGFuZW91
c2x5IGZpbHRlciBuZWdhdGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0IGFyZSB0
b28gbGFyZ2UKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIGxlbmd0aFJlZykpOworCisgICAgLy8gTG9hZCB0
aGUgY2hhcmFjdGVyCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgaXMxNkJpdDsK
KyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlzdCBjb250OEJpdDsKKyAgICAvLyBMb2Fk
IHRoZSBzdHJpbmcgZmxhZ3MKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wUmVnLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwgbGVuZ3RoUmVnKTsKKyAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wUmVnLCBTdHJpbmdJbXBsOjpk
YXRhT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBsZW5ndGhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSkpOworICAgIGppdC5sb2FkOChNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KHRlbXBSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNPbmUsIDApLCB0ZW1wUmVnKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1bXAoKSk7
CisgICAgaXMxNkJpdC5saW5rKCZqaXQpOworICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAw
KSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQubGluaygmaml0KTsKK30KKyNlbHNlCiBzdGF0aWMg
dm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKIHsK
ICAgICAvLyBsb2FkIHN0cmluZwpAQCAtNTY1LDYgKzc1Niw3IEBAIHN0YXRpYyB2b2lkIHN0cmlu
Z0NoYXJMb2FkKFNwZWNpYWxpemVkVGgKICAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CiAgICAgY29udDhCaXQubGluaygmaml0KTsKIH0KKyNlbmRpZgogCiBzdGF0aWMg
dm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0sIE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEIHNyYywgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZHN0
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzY3JhdGNoKQogewpAQCAtNTc0LDM0ICs3NjYs
NjkgQEAgc3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bgogICAgIGppdC5h
cHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBkc3Qp
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihW
TSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxF
eGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5nQ2hh
ckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7CisgICAgaml0
LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxF
eGFjdGx5KTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4g
aml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNv
ZGVBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAg
c3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNvZGVBdCIpOworI2VuZGlmCiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0LCB2bSk7
CisgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQ
UjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lzdGVy
Rm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOwor
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6
OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwg
ImNoYXJBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAg
ICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbmRpZgogfQogCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50
cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAg
ICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
LCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SW5S
ZWdpc3RlcnMpOworICAgIC8vIGxvYWQgY2hhciBjb2RlCisgICAgaml0Lm1vdmUoYXJndW1lbnRS
ZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFy
Z0dQUjApOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50MzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCkpOworCisgICAgY2hhclRvU3RyaW5nKGppdCwg
dm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7
CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVn
aXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxsKTsKKyAgICBqaXQuYXBw
ZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZWxzZQorICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxs
KTsKICAgICAvLyBsb2FkIGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKKyNlbmRpZgogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbklu
dEFyZ0p1bXA7CkBAIC02MjIsMTEgKzg0OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6
MzJUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0
aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNsejMyIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHNxcnRU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKLSAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0
dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVu
dCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CiAgICAgaml0LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CkBAIC03ODIsMTIgKzEwMDksMTIgQEAgZGVm
aW5lVW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIGhh
bGZDb25zdGFudCA9IDAuNTsKICAgICAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BX
cmFwcGVyKGZsb29yKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1
YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJu
SW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIG5vbkludEp1bXAubGluaygm
aml0KTsKQEAgLTgyNSwxMSArMTA1MiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JU
aHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZVRhaWxDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
ZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNlaWxUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEp
OwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoY2VpbCkgfHwgIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwor
ICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3Vt
ZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQu
cmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtODQ4LDExICsxMDc1
LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IKICAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2Vp
bCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSog
dm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7
CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3Vi
bGVPcFdyYXBwZXIodHJ1bmMpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAg
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
Zih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZtLT5q
aXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg3MSwxMSArMTA5OCwxMSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRz
V2l0aFJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihqc1JvdW5k
KSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5
TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAg
ICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5v
bkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCk7CkBAIC05MDUsMzcgKzExMzIsMzcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1
bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVUYWlsQ2FsbCh2bSksICJyb3VuZCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhw
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKIHsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZERvdWJsZUFy
Z3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihV
bmFyeURvdWJsZU9wV3JhcHBlcihleHApKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJleHAiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBs
b2dUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBl
cihsb2cpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAg
IHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQ
b2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAg
IHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0Lmxv
YWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZp
bmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSk7CiAgICAgaml0LnJldHVybkRvdWJs
ZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAibG9nIik7CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50
c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMo
KSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1
cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICB1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCA9IENhbGxGcmFtZTo6YXJn
dW1lbnRPZmZzZXQoMCk7CkBAIC05ODgsNyArMTIxNSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBhYnNUaHVua0dlbmVyYXRvcigKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiYWJzIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGlt
dWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQo
dm0sIDIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZzBKdW1wOwpAQCAtMTAx
OSwxMSArMTI0NiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9y
CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImltdWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDApOwogICAgIGlm
ICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0
aXZlQ2FsbCh2bSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5lbWl0UmFuZG9tVGh1
bmsoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qx
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtMTAzMSwxNiArMTI1OCwyMiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0CiAKICAgICByZXR1cm4gaml0
LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicmFuZG9tIik7
CiAjZWxzZQotICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICByZXR1cm4g
dm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogI2VuZGlmCiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0q
IHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdl
bmVyYXRvcihWTSogdm0pCiB7Ci0gICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAgSlNJbnRl
cmZhY2VKSVQgaml0KHZtKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJl
czsKKworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3Vl
KCk7CiAgICAgCi0gICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6TGFiZWwgc3RhY2tBcmdzRW50cnkoJmppdCk7CiAgICAgCisgICAgaml0LmVt
aXRGdW5jdGlvblByb2xvZ3VlKCk7CisKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCiAg
ICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0Nh
bGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogICAgIGpp
dC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0xMTEwLDIwICsxMzQzLDIz
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW4KICAgICAgICAgR1BS
SW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNl
dE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCisgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoQ29kZUZvckNh
bGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KSksCiAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
LSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5i
cmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApKTsKICAgICAK
ICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwogICAgIGppdC5yZXQoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgbGlua0J1ZmZlci5saW5rKG5vQ29kZSwgQ29k
ZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZl
ZFRhZ3Modm0pKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCi0gICAgICAgIGxpbmtCdWZm
ZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGggbm8g
YXJndW1lbnRzIikpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVzLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncyh2
bSkpKTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxz
IHdpdGggbm8gYXJndW1lbnRzIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFja0Vu
dHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAgICBy
ZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2Rl
UmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQdHIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
ci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM2LDM0ICszNywzNSBAQCBjbGFzcyBDYWxsTGlu
a0luZm87CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQ
YXRoR2VuZXJhdG9yKFZNKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5r
KFZNKiwgQ2FsbExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklUSlNDYWxs
VGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRv
cihWTSopOworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3JwaGlj
Q2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFs
VGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSosIENhbGxMaW5rSW5mbyYpOwogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVm
IG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRpdmVD
b25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVUYWls
Q2FsbEdlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxDYWxs
V2l0aG91dFNhdmVkVGFnc0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFy
aXR5Rml4dXBHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJlYWNoYWJs
ZUdlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0
b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZNKik7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JU
aHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5rR2VuZXJh
dG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSop
OwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
dHJ1bmNUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJDb2Rl
QXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRodW5r
R2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVyYXRv
cihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
KFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVm
IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBsb2dUaHVu
a0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtHZW5lcmF0
b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNX
aXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0pOworSklURW50cnlQ
b2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSopOwog
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsMTIgKzQ2LDI2IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChW
TSYgdm0KICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKICAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOworICAgICAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAg
ICAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRvciku
Y29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
clN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
ICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cisg
ICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBK
SVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKQEAgLTU5LDEyICs3MywyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoVk0mIHZtCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAg
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLAor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9w
dFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrKQpAQCAtNzIsMTQgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlw
b2ludChWTSYgdm0sIENvCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkp
IHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwor
ICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAg
SklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0
b3IpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAg
ICAgIHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2
YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAg
ICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVM
TEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZh
bF9wcm9sb2d1ZSkuY29kZSgpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSksCisgICAg
ICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtODcs
MTQgKzEyOSwyOCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sCiAj
aWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
dm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNX
aXRoUmVmKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRo
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dy
YW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxs
aW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZN
JiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMDIsMTQgKzE1OCwyOCBAQCBzdGF0aWMg
dm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWCiAjaWYgRU5BQkxFKEpJVCkKICAgICBp
ZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAg
ICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENU
SVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENU
SVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAgICAg
ICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAor
ICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50
Q29kZVB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxlX3By
b2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
KSk7CiB9CiAKIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOSArMzczLDkgQEAgc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIENPREVCTE9DS19MT0dfRVZF
TlQoY29kZUJsb2NrLCAiT1NSIGVudHJ5IiwgKCJpbiBwcm9sb2d1ZSIpKTsKICAgICAKICAgICBp
ZiAoa2luZCA9PSBQcm9sb2d1ZSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2st
PmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0FyaXR5
Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAgQVNTRVJUKGtp
bmQgPT0gQXJpdHlDaGVjayk7Ci0gICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENv
ZGUoKS0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCks
IDApOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NG
b3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsK
IH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5
T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgY2hhciosIEVudHJ5S2luZCkKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApAQCAt
MTMwNiwxMiArMTMwNiwxMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjCiAgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGVycm9yKTsKICAgICAgICAg
Y29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwot
ICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50
cnlUeXBlOwogICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQot
ICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgIGVudHJ5VHlw
ZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
cml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9u
RXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAgICBlbnRy
eVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQdHIg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsKICAg
ICB9CiAKICAgICBBU1NFUlQoISFjb2RlUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTAgKzUxLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnkKIAog
bmFtZXNwYWNlIExMSW50IHsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRo
dW5rS2luZCkKK2VudW0gU2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSB7IENyZWF0ZVJlZ2lzdGVy
RW50cnksIERvbnRDcmVhdGVSZWdpc3RlckVudHJ5IH07CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgp
LCBjb25zdCBjaGFyICp0aHVua0tpbmQsIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgc2hvdWxk
Q3JlYXRlUmVnaXN0ZXJFbnRyeSA9IERvbnRDcmVhdGVSZWdpc3RlckVudHJ5KQogewogICAgIEpT
SW50ZXJmYWNlSklUIGppdCh2bSk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlm
IChzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5ID09IENyZWF0ZVJlZ2lzdGVyRW50cnkpCisgICAg
ICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5KTsKKyNlbmRp
ZgorCiAgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0
IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwpA
QCAtNjMsMjQgKzcyLDQ0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVU
aHUKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMTEludCAlcyBwcm9s
b2d1ZSB0aHVuayIsIHRodW5rS2luZCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rpb24g
Zm9yIHJlZ2lzdGVyIGFyZ3MgY2FsbCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAi
ZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY2FsbCIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENv
ZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1
bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkp
OworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0cnVjdCIp
OworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY2FsbCIpOworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIgYXJn
cyBjYWxsIHdpdGggYXJpdHkgY2hlY2siLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRv
cihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9yIHN0
YWNrIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVuY3Rp
b24gZm9yIHJlZ2lzdGVyIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siLCBDcmVhdGVS
ZWdpc3RlckVudHJ5KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIo
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3Ig
c3RhY2sgYXJncyBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MiwxMCArNDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1F
bnRyeQogCiBuYW1lc3BhY2UgTExJbnQgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSop
OwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdp
c3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNo
ZWNrTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogZW51bSBBcml0eUNoZWNrTW9kZSB7CisgICAgUmVnaXN0ZXJFbnRyeSwKICAgICBBcml0
eUNoZWNrTm90UmVxdWlyZWQsCiAgICAgTXVzdENoZWNrQXJpdHkKIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgdm9pZCBFeGVjdXRhYmxlQmFz
ZTo6Y2xlYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKQogICAgIG1faml0Q29kZUZvckNhbGwgPSBu
dWxscHRyOwogICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IG51bGxwdHI7Ci0gICAgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAg
bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOworICAgIG1faml0
RW50cmllc0ZvckNvbnN0cnVjdC5jbGVhckVudHJpZXMoKTsKICNlbmRpZgogICAgIG1fbnVtUGFy
YW1ldGVyc0ZvckNhbGwgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAgICAgbV9udW1Q
YXJhbWV0ZXJzRm9yQ29uc3RydWN0ID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRGF0YS5oIgog
I2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNs
dWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJ
VEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJT
b3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVHlwZVNldC5oIgpAQCAtMTQ1LDQ3ICsxNDUsNDIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpOwog
ICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgaWYg
d2UgaGF2ZSBhIGNhY2hlZCByZXN1bHQuIFdlIG9ubHkgaGF2ZSBpdCBmb3IgYXJpdHkgY2hlY2sg
YmVjYXVzZSB3ZSB1c2UgdGhlCiAgICAgICAgIC8vIG5vLWFyaXR5IGVudHJ5cG9pbnQgaW4gbm9u
LXZpcnR1YWwgY2FsbHMsIHdoaWNoIHdpbGwgImNhY2hlIiB0aGlzIHZhbHVlIGRpcmVjdGx5IGlu
CiAgICAgICAgIC8vIG1hY2hpbmUgY29kZS4KLSAgICAgICAgaWYgKGFyaXR5ID09IE11c3RDaGVj
a0FyaXR5KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2Ug
Q29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBy
ZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29k
ZUZvckNhbGw6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9
IG1faml0RW50cmllc0ZvckNhbGwuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29kZUZv
ckNvbnN0cnVjdDoKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0
ID0gbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPQotICAgICAgICAgICAgZ2VuZXJh
dGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkpOwotICAgICAgICBpZiAo
YXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAgICAgICAgIC8vIENhY2hlIHRoZSByZXN1
bHQ7IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXph
dGlvbnMuCi0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgQ29k
ZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
ID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDb2Rl
Rm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwo
ZW50cnlUeXBlKTsKKyAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBuZWNlc3Nh
cnkgZm9yIHRoZSBKSVQncyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgc3dp
dGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBtX2pp
dEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVzdWx0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBt
X2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Quc2V0RW50cnlGb3IoZW50cnlUeXBlLCByZXN1bHQpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNr
Rm9yKAotICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRW50
cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQp
IHsKICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2pp
dEVudHJpZXNGb3JDYWxsKSArIEpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9yKGVudHJ5
UG9pbnRUeXBlKTsKICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihF
eGVjdXRhYmxlQmFzZSwgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0KSArIEpJVEVudHJ5UG9pbnRz
OjpvZmZzZXRPZkVudHJ5Rm9yKGVudHJ5UG9pbnRUeXBlKTsKICAgICAgICAgfQogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMyw4
ICsyMjgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50cmluc2ljIG1faW50cmluc2ljOwogICAgIFJl
ZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDYWxsOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2pp
dENvZGVGb3JDb25zdHJ1Y3Q7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjazsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRFbnRy
aWVzRm9yQ2FsbDsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Q7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
dW5kVGhpc05vCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlv
bi0+ZXhlY3V0YWJsZSgpOwogICAgIGlmIChleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yQ2FsbCgp
KSB7CiAgICAgICAgIC8vIEZvcmNlIHRoZSBleGVjdXRhYmxlIHRvIGNhY2hlIGl0cyBhcml0eSBl
bnRyeXBvaW50LgotICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxs
LCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29k
ZUZvckNhbGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKICAgICB9CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXRGdW5j
dGlvbiwgY2FsbERhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw4ICs2Myw4IEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24o
Vk0KICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9
IGNhbGxUaHVuazsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RUaHVuazsK
LSAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDYWxsLT5h
ZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7Ci0gICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JDYWxsKE11
c3RDaGVja0FyaXR5KTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKFN0YWNr
QXJnc011c3RDaGVja0FyaXR5LCBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2FsbChTdGFj
a0FyZ3NNdXN0Q2hlY2tBcml0eSkpOworICAgIG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5zZXRF
bnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LT5h
ZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOwogICAgIG1fbmFtZSA9IG5h
bWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1
dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDEyICsxMzksMTIgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdgog
ICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CiAgICAgICAgIG1faml0
Q29kZUZvckNhbGwgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29k
ZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmllc0ZvckNhbGwuY2xl
YXJFbnRyaWVzKCk7CiAgICAgICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBnZW5lcmljQ29k
ZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFNRVRF
UlNfTk9UX0NPTVBJTEVEOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVGb3JDb25zdHJ1
Y3Q6CiAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBn
ZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRyOwotICAgICAgICBtX2ppdENvZGVG
b3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAg
ICAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAgICAgICAgIG1f
bnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4Miw2ICsyODIsNyBAQCBDb2RlQmxvY2sqIFNjcmlw
dEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtCiAKIHN0YXRpYyB2b2lkIHNldHVwTExJbnQoVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKKyAgICBjb2RlQmxvY2stPnNldFByZWZlcnNTdGFj
a0FyZ3VtZW50cygpOwogICAgIExMSW50OjpzZXRFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwog
fQogCkBAIC0yODksNiArMjkwLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBKSVQoVk0mIHZtLCBDb2Rl
QmxvY2sqIAogewogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0
ID0gSklUOjpjb21waWxlKCZ2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVk
KTsKKyAgICBjb2RlQmxvY2stPnNldFByZWZlcnNTdGFja0FyZ3VtZW50cygpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0odm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
cmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiArMjEwLDEwIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRp
b25zOjpzb2Z0UmVzZXJ2ZWRab25lU2l6ZSgpKTsKICAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2su
b3JpZ2luKCkpOwogCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNsZWFyQ291bnRlcnMo
KTsKKyNlbmRpZgorCiAgICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGlu
ZyBjb25zaXN0ZW50IGhlcmUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKICAgICBBdG9t
aWNTdHJpbmdUYWJsZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsK
QEAgLTQ3Niw3ICs0ODAsNyBAQCBTYW1wbGluZ1Byb2ZpbGVyJiBWTTo6ZW5zdXJlU2FtcGxpbmdQ
cm9mCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCiAjaWYgRU5BQkxFKEpJ
VCkKLXN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRy
aW5zaWMgaW50cmluc2ljKQorc3RhdGljIEpJVEVudHJ5R2VuZXJhdG9yIHRodW5rR2VuZXJhdG9y
Rm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgc3dpdGNoIChpbnRyaW5z
aWMpIHsKICAgICBjYXNlIENoYXJDb2RlQXRJbnRyaW5zaWM6CkBAIC05MjMsNCArOTI3LDM1IEBA
IHZvaWQgVk06OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXMKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQordm9pZCBWTTo6Y2xlYXJDb3VudGVycygpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlclZNQ291bnRlcjsgaSsrKQorICAgICAgICBt
X2NvdW50ZXJzW2ldID0gMDsKK30KKwordm9pZCBWTTo6ZHVtcENvdW50ZXJzKCkKK3sKKyAgICBz
aXplX3QgdG90YWxDYWxscyA9IGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpICsgY291bnRlckZv
cihERkdDYWxsZXIpICsgY291bnRlckZvcihGVExDYWxsZXIpOworICAgIGRhdGFMb2coIiMjIyMg
Vk0gQ2FsbCBjb3VudGVycyAjIyMjXG4iKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVG90YWwgY2Fs
bHNcbiIsIHRvdGFsQ2FsbHMpOworICAgIGRhdGFMb2dGKCIlMTB6dSBCYXNlbGluZSBjYWxsc1xu
IiwgY291bnRlckZvcihCYXNlbGluZUNhbGxlcikpOworICAgIGRhdGFMb2dGKCIlMTB6dSBERkcg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoREZHQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEZU
TCBjYWxsc1xuIiwgY291bnRlckZvcihGVExDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEwenUg
VmFyYXJnIGNhbGxzXG4iLCBjb3VudGVyRm9yKENhbGxWYXJhcmdzKSk7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFRhaWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoVGFpbENhbGwpKTsKKyAgICBkYXRhTG9n
RigiJTEwenUgRXZhbCBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsRXZhbCkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBEaXJlY3QgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRGlyZWN0Q2FsbCkpOworICAg
IGRhdGFMb2dGKCIlMTB6dSBQb2x5bW9ycGhpYyBjYWxsc1xuIiwgY291bnRlckZvcihQb2x5bW9y
cGhpY0NhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBjYWxsc1xuIiwgY291bnRl
ckZvcihWaXJ0dWFsQ2FsbCkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBWaXJ0dWFsIHNsb3cgY2Fs
bHNcbiIsIGNvdW50ZXJGb3IoVmlydHVhbFNsb3dDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1
IFJlZ2lzdGVyIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50ZXJGb3IoUmVnQXJnc05vQXJpdHkpKTsK
KyAgICBkYXRhTG9nRigiJTEwenUgU3RhY2sgYXJncyBubyBhcml0eVxuIiwgY291bnRlckZvcihT
dGFja0FyZ3NOb0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFJlZ2lzdGVyIGFyZ3MgZXh0
cmEgYXJpdHlcbiIsIGNvdW50ZXJGb3IoUmVnQXJnc0V4dHJhKSk7CisgICAgZGF0YUxvZ0YoIiUx
MHp1IFJlZ2lzdGVyIGFyZ3MgYXJpdHkgY2hlY2tcbiIsIGNvdW50ZXJGb3IoUmVnQXJnc0FyaXR5
KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3MgYXJpdHkgY2hlY2tcbiIsIGNvdW50
ZXJGb3IoU3RhY2tBcmdzQXJpdHkpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQXJpdHkgZml4dXBz
IHJlcXVpcmVkXG4iLCBjb3VudGVyRm9yKEFyaXR5Rml4dXBSZXF1aXJlZCkpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MzAsNiArNDMwLDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgIH0KKwor
ICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBnZXRKSVRFbnRyeVN0dWIoSklURW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5qaXRFbnRyeVN0
dWIodGhpcywgZ2VuZXJhdG9yKTsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZiBnZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoSklUQ2FsbFRodW5rRW50cnlHZW5l
cmF0b3IgZ2VuZXJhdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5qaXRDYWxs
VGh1bmtFbnRyeVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKKyAgICB9CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZz
ZXRzOwogICAgIApAQCAtNTcyLDYgKzU4Miw1MCBAQCBwdWJsaWM6CiAgICAgQnVtcFBvaW50ZXJB
bGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CiAgICAgQ29uY3VycmVudEpTTG9jayBtX3JlZ0V4
cEFsbG9jYXRvckxvY2s7CiAKKyAgICBlbnVtIFZNQ291bnRlclR5cGUgeworICAgICAgICBCYXNl
bGluZUNhbGxlciwKKyAgICAgICAgREZHQ2FsbGVyLAorICAgICAgICBGVExDYWxsZXIsCisgICAg
ICAgIENhbGxWYXJhcmdzLAorICAgICAgICBUYWlsQ2FsbCwKKyAgICAgICAgQ2FsbEV2YWwsCisg
ICAgICAgIERpcmVjdENhbGwsCisgICAgICAgIFBvbHltb3JwaGljQ2FsbCwKKyAgICAgICAgVmly
dHVhbENhbGwsCisgICAgICAgIFZpcnR1YWxTbG93Q2FsbCwKKyAgICAgICAgUmVnQXJnc05vQXJp
dHksCisgICAgICAgIFN0YWNrQXJnc05vQXJpdHksCisgICAgICAgIFJlZ0FyZ3NFeHRyYSwKKyAg
ICAgICAgUmVnQXJnc0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NBcml0eSwKKyAgICAgICAgQXJp
dHlGaXh1cFJlcXVpcmVkLAorICAgICAgICBOdW1iZXJWTUNvdW50ZXIKKyAgICB9OworCisjaWYg
RU5BQkxFKFZNX0NPVU5URVJTKQorICAgIHNpemVfdCBtX2NvdW50ZXJzW051bWJlclZNQ291bnRl
cl07CisKKyAgICB2b2lkIGNsZWFyQ291bnRlcnMoKTsKKworICAgIHNpemVfdCogYWRkcmVzc09m
Q291bnRlcihWTUNvdW50ZXJUeXBlIGNvdW50ZXJUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKGNv
dW50ZXJUeXBlID49IE51bWJlclZNQ291bnRlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIHJldHVybiAmbV9jb3VudGVyc1tjb3VudGVyVHlwZV07CisgICAgfQorCisg
ICAgc2l6ZV90IGNvdW50ZXJGb3IoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7Cisg
ICAgICAgIGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBtX2NvdW50ZXJzW2NvdW50ZXJUeXBl
XTsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBDb3VudGVycygpOwor
I2VuZGlmCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzT3duUHJvcGVydHlDYWNoZT4gbV9oYXNP
d25Qcm9wZXJ0eUNhY2hlOwogICAgIEFMV0FZU19JTkxJTkUgSGFzT3duUHJvcGVydHlDYWNoZSog
aGFzT3duUHJvcGVydHlDYWNoZSgpIHsgcmV0dXJuIG1faGFzT3duUHJvcGVydHlDYWNoZS5nZXQo
KTsgfQogICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIFdhc21Ub0pTU3R1YiBpbXBv
cnRTdHViR2VuZXJhdG9yKFZNKiB2bSwKICAgICAgICAgfQogICAgIH0KIAotICAgIEdQUlJlZyBp
bXBvcnRKU0NlbGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJl
IGluIHJlZ1QwIGZvciBzbG93IHBhdGggYmVsb3cuCisgICAgR1BSUmVnIGltcG9ydEpTQ2VsbEdQ
UlJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKTsKICAgICBBU1NFUlQoIXdhc21DQy5t
X2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KGltcG9ydEpTQ2VsbEdQUlJlZykpOwogCiAgICAgLy8g
RWFjaCBKUyAtPiB3YXNtIGVudHJ5IHNldHMgdGhlIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHdob3Nl
IGV4cG9ydCBpcyBiZWluZyBjYWxsZWQuIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRoaXMgSW5zdGFu
Y2UsIGFuZCBjYW4gdGhlcmVmb3JlIGZpZ3VyZSBvdXQgdGhlIGltcG9ydCBiZWluZyBjYWxsZWQu
CkBAIC0xNDgsMTUgKzE0OCwxNCBAQCBXYXNtVG9KU1N0dWIgaW1wb3J0U3R1YkdlbmVyYXRvcihW
TSogdm0sCiAgICAgLy8gRklYTUUgVGFpbCBjYWxsIGlmIHRoZSB3YXNtIHJldHVybiB0eXBlIGlz
IHZvaWQgYW5kIG5vIHJlZ2lzdGVycyB3ZXJlIHNwaWxsZWQuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0ODgKIAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gY2FsbExpbmtJbmZvcy5hZGQoKTsKLSAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChD
YWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4oKSwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIFN0YWNrQXJncywg
Q29kZU9yaWdpbigpLCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogICAgIEpJVDo6RGF0YUxhYmVsUHRy
IHRhcmdldFRvQ2hlY2s7CiAgICAgSklUOjpUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVl
KDApOwogICAgIEpJVDo6SnVtcCBzbG93UGF0aCA9IGppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBpbXBvcnRKU0NlbGxHUFJSZWcsIHRhcmdldFRvQ2hlY2ss
IGluaXRpYWxSaWdodFZhbHVlKTsKICAgICBKSVQ6OkNhbGwgZmFzdENhbGwgPSBqaXQubmVhckNh
bGwoKTsKICAgICBKSVQ6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAgICAgc2xvd1BhdGgubGlu
aygmaml0KTsKLSAgICAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAgaGVyZS4KLSAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJ
bmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMi4KKyAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKICAg
ICBKSVQ6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICBkb25lLmxpbmsoJmpp
dCk7CiAKQEAgLTIyNCw3ICsyMjMsNyBAQCBXYXNtVG9KU1N0dWIgaW1wb3J0U3R1YkdlbmVyYXRv
cihWTSogdm0sCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxs
LCBGdW5jdGlvblB0cih2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0NhbGws
IEZ1bmN0aW9uUHRyKHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuZW50cnlGb3IoU3RhY2tBcmdzKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAg
Q29kZUxvY2F0aW9uTGFiZWwgY2FsbFJldHVybkxvY2F0aW9uKHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2ZOZWFyQ2FsbChzbG93Q2FsbCkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdp
bihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHRhcmdldFRvQ2hlY2spKTsKICAgICBDb2RlTG9jYXRp
b25OZWFyQ2FsbCBob3RQYXRoT3RoZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwo
ZmFzdENhbGwpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgSlNWQUxVRTY0OiBQYXNzIGFy
Z3VtZW50cyBpbiBwbGF0Zm9ybSBhcmd1bWVudCByZWdpc3RlcnMgd2hlbiBtYWtpbmcgSmF2YVNj
cmlwdCBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgYSBuZXcgYnVpbGQgb3B0aW9uIEVOQUJMRV9WTV9DT1VOVEVSUyB0byBlbmFibGUg
SklUJ2FibGUgY291bnRlcnMuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIGZvciB0aGUgb3B0aW9u
IHRvIGJlIG9mZi4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICBBZGRlZCBF
TkFCTEVfVk1fQ09VTlRFUlMKKwogMjAxNi0xMi0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFRleHRQb3NpdGlvbiBhbmQgT3JkaW5hbE51bWJlciBzaG91
bGQgYmUgbW9yZSBsaWtlIGlkaW9tYXRpYyBudW1iZXJzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9E
YXRhTG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLSNk
ZWZpbmUgREFUQV9MT0dfVE9fRklMRSAwCisjZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMQogCiAv
LyBTZXQgdG8gMSB0byB1c2UgdGhlIHRlbXAgZGlyZWN0b3J5IGZyb20gY29uZnN0ciBpbnN0ZWFk
IG9mIGhhcmRjb2RlZCBkaXJlY3RvcnkuCiAvLyBUaGUgbGFzdCBjb21wb25lbnQgb2YgREFUQV9M
T0dfRklMRU5BTUUgd2lsbCBzdGlsbCBiZSB1c2VkLgotI2RlZmluZSBEQVRBX0xPR19UT19EQVJX
SU5fVEVNUF9ESVIgMAorI2RlZmluZSBEQVRBX0xPR19UT19EQVJXSU5fVEVNUF9ESVIgMQogCiAv
LyBVbmNvbW1lbnQgdG8gZm9yY2UgbG9nZ2luZyB0byB0aGUgZ2l2ZW4gZmlsZSByZWdhcmRsZXNz
IG9mIHdoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNheXMuCiAvLyBOb3RlIHRoYXQgd2Ug
d2lsbCBhcHBlbmQgIi48cGlkPi50eHQiIHdoZXJlIDxwaWQ+IGlzIHRoZSBQSUQuCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOSBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEK
ICNlbmRpZgogCisvKiBUaGlzIGVuYWJsZXMgcGVyIFZNIGNvdW50ZXJzIGF2YWlsYWJsZSBmb3Ig
dXNlIGJ5IEpJVCdlZCBjb2RlLiAqLworI2RlZmluZSBFTkFCTEVfVk1fQ09VTlRFUlMgMAorCiAv
KiBUaGUgRlRMICpkb2VzIG5vdCogd29yayBvbiAzMi1iaXQgcGxhdGZvcm1zLiBEaXNhYmxlIGl0
IGV2ZW4gaWYgc29tZW9uZSBhc2tlZCB1cyB0byBlbmFibGUgaXQuICovCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKICN1bmRlZiBFTkFCTEVfRlRMX0pJVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296745</attachid>
            <date>2016-12-09 16:55:10 -0800</date>
            <delta_ts>2016-12-09 22:34:48 -0800</delta_ts>
            <desc>Updated patch.  Rebased, addressed Saam&apos;s comment and removed superfluous white space changes</desc>
            <filename>160355-2.patch</filename>
            <type>text/plain</type>
            <size>353253</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDk2MzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI0IEBACisyMDE2LTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIEpTVkFMVUU2NDogUGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0g
YXJndW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFraW5nIEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBtaWNyb2JlbmNobWFy
a3MgdG8gbWVhc3VyZSBjYWxsIHR5cGUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2FsbGluZy1jb21wdXRlZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNhbGxlZXMuanM6IEFkZGVkLgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktY2FsbGVlcy5qczogQWRkZWQuCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctcG9seS1leHRyYS1hcml0eS1jYWxsZWVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1m
aXh1cC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGlu
Zy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMuanM6
IEFkZGVkLgorCiAyMDE2LTEyLTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGltcG9ydGluZyBhbmQgZGVm
aW5pbmcgTWVtb3J5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNvbXB1
dGVkLWFyZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGlu
Zy1jb21wdXRlZC1hcmdzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2NhbGxpbmctY29tcHV0ZWQtYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACitmdW5jdGlvbiBzdW0yKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lu
bGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMmIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTJiKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAg
IHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBzdW0z
YihhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTNi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IG8xID0geworICAgICAgICBvbmU6IDEs
CisgICAgICAgIHR3bzogMgorICAgIH0KKyAgICBsZXQgbzIgPSB7CisgICAgICAgIHRocmVlOiAz
LAorICAgICAgICBmaXZlOiA1CisgICAgfTsKKyAgICBsZXQgbzMgPSB7CisgICAgICAgIGZvdXI6
IDQsCisgICAgICAgIHNpeDogNgorICAgIH07CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bTIobzEu
b25lLCBvMi5maXZlKSArIHN1bTJiKG8xLnR3bywgbzEub25lICsgbzIuZml2ZSkKKyAgICAgICAg
ICAgICsgc3VtMyhvMi50aHJlZSwgbzMuZm91ciwgbzIuZml2ZSkgKyBzdW0zYihvMS50d28sIG8y
LnRocmVlICsgbzIuZml2ZSwgbzMuc2l4KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xl
dCByZXN1bHQgPSB0ZXN0KCk7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVj
dGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctbWFueS1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2NhbGxpbmctbWFueS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NhbGxpbmctbWFueS1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDAgQEAKK2Z1bmN0aW9uIHN1bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9
CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0yYihhLCBiKQoreworICAgIHJldHVy
biBhICsgYiArIGI7Cit9CisKK25vSW5saW5lKHN1bTJiKTsKKworZnVuY3Rpb24gc3VtMyhhLCBi
LCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitm
dW5jdGlvbiBzdW0zYihhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGIgKyBjOworfQor
Citub0lubGluZShzdW0zYik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByZXN1bHQg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgaSsrKQorICAgICAgICByZXN1
bHQgPSBzdW0yKDEsIDIpICsgc3VtMmIoMiwgMykgKyBzdW0zKDUsIDUsIDUpICsgc3VtM2IoMiwg
NCwgNik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4
ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUt
Y2FsbGVlLWZpeGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
IEBACitmdW5jdGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQor
Citub0lubGluZShzdW0pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0
ID0gc3VtKDEsIDIsIDMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9
IHRlc3QoKTsKK2lmIChyZXN1bHQgIT0gNikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6
ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1j
YWxsZWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1v
bmUtY2FsbGVlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctb25lLWNhbGxlZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5j
dGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGlu
ZShzdW0pOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9
IHN1bShhLCBiLCBjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0
ZXN0KDEsIDIsIDMpOworaWYgKHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmct
cG9seS1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctcG9seS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2NhbGxpbmctcG9seS1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzUgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOwor
fQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJl
dHVybiBiICsgYSArIGM7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEs
IGIsIGMpCit7CisgICAgcmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisK
K2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMgXTsKKworZnVuY3Rpb24gdGVzdChh
LCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
NDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDNdKGEsIGIsIGMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMw
KTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsg
cmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWV4dHJh
LWFyaXR5LWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2FsbGluZy1wb2x5LWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1wb2x5LWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rpb24gc3VtMShhLCBiKQorewor
ICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIo
YSwgYikKK3sKKyAgICByZXR1cm4gYiArIGE7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5j
dGlvbiBzdW0zKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW0z
KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMyBdOworCitmdW5jdGlvbiB0
ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgM10oYSwg
YiwgYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgyLCA0
MCwgIlRlc3QiKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVz
dWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10
YWlsY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5n
LXRhaWxjYWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Nh
bGxpbmctdGFpbGNhbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorInVzZSBz
dHJpY3QiOworCitmdW5jdGlvbiBzdW0oYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBj
OworfQorCitub0lubGluZShzdW0pOworCitmdW5jdGlvbiB0YWlsQ2FsbGVyKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIHN1bShiLCBhLCBjKTsKK30KKworbm9JbmxpbmUodGFpbENhbGxlcik7CisK
K2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gdGFpbENhbGxl
cihhLCBiLCBjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0
KDEsIDIsIDMpOworaWYgKHJlc3VsdCAhPSA2KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3Vs
dDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmly
dHVhbC1hcml0eS1maXh1cC1jYWxsZWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1maXh1cC1jYWxsZWVzLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1m
aXh1cC1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9u
IHN1bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyAoYyB8IDApOworfQorCitub0lu
bGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJldHVybiBiICsg
YSArIChjIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7
CisKK2Z1bmN0aW9uIHN1bTQoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gKGMgfCAwKSArIGEgKyBi
OworfQorCitub0lubGluZShzdW00KTsKKworZnVuY3Rpb24gc3VtNShhLCBiLCBjKQoreworICAg
IHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlv
biBzdW02KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9J
bmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMsIHN1bTQs
IHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiKQoreworICAgIGxldCByZXN1bHQg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1
bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bGV0IHJlc3VsdCA9IHRlc3QoMiwgNDApOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAi
VW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtc3RhY2thcmdzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1maXh1cC1z
dGFja2FyZ3MuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIGEg
KyBiICsgYyArIChkIHwgMCk7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0y
KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIGIgKyBhICsgYyArIChkIHwgMCk7Cit9CisKK25v
SW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJu
IChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBz
dW00KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisK
K25vSW5saW5lKHN1bTQpOworCitmdW5jdGlvbiBzdW01KGEsIGIsIGMsIGQpCit7CisgICAgcmV0
dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlv
biBzdW02KGEsIGIsIGMsIGQpCit7CisgICAgcmV0dXJuIChkIHwgMCkgKyBhICsgYiArIGM7Cit9
CisKK25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0z
LCBzdW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBs
ZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpz
CShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVh
bC1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIHN1
bTEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGluZShzdW0x
KTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjKQoreworICAgIHJldHVybiBiICsgYSArIGM7Cit9
CisKK25vSW5saW5lKHN1bTIpOworCitmdW5jdGlvbiBzdW0zKGEsIGIsIGMpCit7CisgICAgcmV0
dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0aW9uIHN1bTQoYSwg
YiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW00KTsKKwor
ZnVuY3Rpb24gc3VtNShhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7Cit9CisKK25v
SW5saW5lKHN1bTUpOworCitmdW5jdGlvbiBzdW02KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGMg
KyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEs
IHN1bTIsIHN1bTMsIHN1bTQsIHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBj
KQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAw
MDsgaSsrKQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMiwgMTAsIDMwKTsKK2lm
IChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFy
aXR5LWNhbGxlZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2Fs
bGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gc3VtMShhLCBiKQor
eworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9uIHN1
bTIoYSwgYikKK3sKKyAgICByZXR1cm4gYiArIGE7Cit9CisKK25vSW5saW5lKHN1bTIpOworCitm
dW5jdGlvbiBzdW0zKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShz
dW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKwor
bm9JbmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYikKK3sKKyAgICByZXR1cm4gYSAr
IGI7Cit9CisKK25vSW5saW5lKHN1bTUpOworCitmdW5jdGlvbiBzdW02KGEsIGIpCit7CisgICAg
cmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShzdW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsg
c3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwgc3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEs
IGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0
MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCg0MCwgMiwgIlRl
c3QiKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2Mjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzk5IEBACisyMDE2LTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgorCisgICAgICAgIEpTVkFMVUU2NDogUGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0gYXJn
dW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFraW5nIEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyBwYXNzaW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gYXJndW1lbnRzIGluIHJlZ2lzdGVycyBmb3Ig
NjQgYml0IHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgaW1wbGVtZW50ZWQgY29udmVudGlvbiBm
b2xsb3dzIHRoZSBBQkkgY29udmVudGlvbnMgZm9yIHRoZSBhc3NvY2lhdGVkIHBsYXRmb3JtLgor
ICAgICAgICBUaGUgZmlyc3QgdHdvIGFyZ3VtZW50cyBhcmUgdGhlIGNhbGxlZSBhbmQgYXJndW1l
bnQgY291bnQsIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAgICAgY29u
dGFpbiAidGhpcyIgYW5kIGZvbGxvd2luZyBhcmd1bWVudCB1bnRpbCBhbGwgcGxhdGZvcm0gYXJn
dW1lbnQgcmVnaXN0ZXJzIGFyZSBleGhhdXN0ZWQuCisgICAgICAgIEFyZ3VtZW50cyBiZXlvbmQg
d2hhdCBmaXQgaW4gcmVnaXN0ZXJzIGFyZSBwbGFjZWQgb24gdGhlIHN0YWNrIGluIHRoZSBzYW1l
IGxvY2F0aW9uIGFzCisgICAgICAgIGJlZm9yZSB0aGlzIHBhdGNoLgorCisgICAgICAgIEZvciBY
ODYtNjQgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCB0aGVyZSBhcmUgNiBhcmd1bWVudCByZWdpc3Rl
cnMgc3BlY2lmaWVkIGluIHRoZSByZWxhdGVkIEFCSS4KKyAgICAgICAgQVJNNjQgaGFzIGhhZCBh
cmd1bWVudCByZWdpc3RlcnMuICBUaGlzIGFsbG93cyBmb3IgNCBvciA2IHBhcmFtZXRlciB2YWx1
ZXMgdG8gYmUgcGxhY2VkIGluCisgICAgICAgIHJlZ2lzdGVycyBvbiB0aGVzZSByZXNwZWN0aXZl
IHBsYXRmb3Jtcy4gIFRoaXMgcGF0Y2ggZG9lc24ndCBpbXBsZW1lbnQgcGFzc2luZyBhcmd1bWVu
dHMgaW4KKyAgICAgICAgcmVnaXN0ZXJzIGZvciAzMiBiaXQgcGxhdGZvcm0sIHNpbmNlIG1vc3Qg
cGxhdGZvcm1zIGhhdmUgYXQgbW9zdCA0IGFyZ3VtZW50IHJlZ2lzdGVycworICAgICAgICBzcGVj
aWZpZWQgYW5kIDMyIGJpdCBwbGF0Zm9ybXMgdXNlIHR3byAzMiBiaXQgcmVnaXN0ZXJzL21lbW9y
eSBsb2NhdGlvbnMgdG8gc3RvcmUgb25lIEpTVmFsdWUuCisKKyAgICAgICAgVGhlIGNhbGwgZnJh
bWUgb24gdGhlIHN0YWNrIGluIHVuY2hhbmdlZCBpbiBmb3JtYXQgYW5kIHRoZSBhcmd1bWVudHMg
dGhhdCBhcmUgcGFzc2VkIGluCisgICAgICAgIHJlZ2lzdGVycyB1c2UgdGhlIGNvcnJlc3BvbmRp
bmcgY2FsbCBmcmFtZSBsb2NhdGlvbiBhcyBhIHNwaWxsIGxvY2F0aW9uLiBBcmd1bWVudHMgY2Fu
CisgICAgICAgIGFsc28gYmUgcGFzc2VkIG9uIHRoZSBzdGFjay4gVGhlIExMSW50LCBiYXNlbGlu
ZSBKSVQnZWQgY29kZSBhcyB3ZWxsIGFzIHRoZSBpbml0aWFsIGVudHJ5CisgICAgICAgIGZyb20g
QysrIGNvZGUgYmFzZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBERkcgcyBhbmQgRlRMIGdlbmVy
YXRlZCBjb2RlIHBhc3MgYXJndW1lbnRzCisgICAgICAgIHZpYSByZWdpc3RlcnMuIEFsbCBjYWxs
ZWVzIGNhbiBhY2NlcHQgYXJndW1lbnRzIGVpdGhlciBpbiByZWdpc3RlcnMgb3Igb24gdGhlIHN0
YWNrLgorICAgICAgICBUaGUgY2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBtb3ZpbmcgYXJndW1l
bnQgdG8gaXRzIHByZWZlcnJlZCBsb2NhdGlvbi4KKworICAgICAgICBUaGUgbXVsdGlwbGUgZW50
cnkgcG9pbnRzIHRvIEphdmFTQ3JpcHQgY29kZSBpcyBub3cgaGFuZGxlZCB2aWEgdGhlIEpJVEVu
dHJ5UG9pbnRzIGNsYXNzIGFuZAorICAgICAgICByZWxhdGVkIGNvZGUuICBUaGF0IGNsYXNzIG5v
dyBoYXMgZW50cmllcyBmb3IgU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLAorICAgICAg
ICBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSBhbmQgZm9yIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQg
cmVnaXN0ZXJzIGFyZ3VtZW50cywKKyAgICAgICAgUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJl
cXVpcmVkLCBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSBhcyB3ZWxsIGFzIGFuZCBhZGRpdGlv
bmFsCisgICAgICAgIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzIGVudHJ5IHBvaW50IHdo
ZW4gZXh0cmEgcmVnaXN0ZXJzIGFyZ3VtZW50IGFyZSBwYXNzZWQuCisgICAgICAgIFRoaXMgbGFz
dCBjYXNlIGlzIG5lZWRlZCB0byBzcGlsbCB0aG9zZSBleHRyYSBhcmd1bWVudHMgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgY2FsbCBmcmFtZQorICAgICAgICBzbG90cy4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNBcmd1
bWVudFJlZ1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAgICog
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpD
YWxsTGlua0luZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6YXJndW1lbnRzTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmFy
Z3VtZW50c0luUmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFz
ZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0
aHJlYWRpbmdQaGFzZTo6c3BlY2lhbENhc2VBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNvbXB1dGVJc0ZsdXNoZWQpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bmVl
ZHNGbHVzaGVkVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFkZEltbWVkaWF0ZVNo
b3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFkZEpTRGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OkpTRGlyZWN0Q2FsbFJlY29yZDo6SlNEaXJlY3RDYWxsUmVjb3JkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6SlNEaXJlY3RDYWxsUmVjb3JkOjpoYXNTbG93Q2FsbCk6
CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFs
aXplcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxp
emVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5oOgorICAgICAgICAq
IGRmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpoYW5kbGVCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZTo6dHJlYXRSZWd1bGFy
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjp0
cmVhdFJvb3RCbG9jayk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAq
IGRmZy9ERkdNaW5pZmllZE5vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9k
ZTo6ZnJvbU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNaW5pZmllZE5vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpiZWxvbmdzSW5NaW5pZmllZEdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFjY2Vz
c2VzU3RhY2spOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldFZhcmlhYmxlQWNjZXNzRGF0
YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQXJndW1lbnRSZWdpc3RlckluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcmd1bWVudFJlZ2lzdGVySW5kZXgpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0
eUNhbGN1bGF0b3I6OmV4ZWN1dGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHUHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENs
b2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJh
bms6Oml0ZXJhdG9yOjp1bmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFuazo6
dW5sb2NrQXRJbmRleCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAq
IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6REZH
OjpkdW1wUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50
VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50
UmVnaXN0ZXJzRm9yRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6
SlNWYWx1ZU9wZXJhbmQ6OkpTVmFsdWVPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpKU1Zh
bHVlT3BlcmFuZDo6Z3ByVXNlU3BlY2lmaWMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVu
a0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAg
ICAgICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OmFsbG9jYXRlUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6SklUQ29kZTo6fkpJVENvZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkpJ
VENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50VGh1bmspOgorICAgICAgICAoSlNDOjpGVEw6OkpJ
VENvZGU6OnNldEVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjphZGRyZXNz
Rm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldCk6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NG
b3JDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXpl
QXJpdHlDaGVja0VudHJ5cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExKSVRDb2Rl
Lmg6CisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6SklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMTGlu
ay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2Vy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJndW1lbnRS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
YWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlRGlyZWN0Q2FsbE9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFy
YXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxs
RXZhbCk6CisgICAgICAgICogZnRsL0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6YXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0Ojphcmd1bWVudFJlZ2lzdGVySW50MzIpOgorICAgICAgICAqIGZ0bC9GVExPdXRw
dXQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RHVtYlZpcnR1YWxD
YWxsKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6c3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1
ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3BpbGxBcmd1bWVudFJlZ2lzdGVy
c1RvRnJhbWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmZpbGxBcmd1bWVudFJl
Z2lzdGVyc0Zyb21GcmFtZUJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZUJlZm9yZVByb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0QXJndW1lbnRUb0NhbGxGcmFtZSk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEdldEZy
b21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjplbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1
ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aW5jcmVtZW50Q291bnRlcik6Cisg
ICAgICAgICogaml0L0NhY2hlZFJlY292ZXJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUmVj
b3Zlcnk6OmFkZFRhcmdldEpTVmFsdWVSZWdzKToKKyAgICAgICAgKiBqaXQvQ2FjaGVkUmVjb3Zl
cnkuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUmVjb3Zlcnk6OmdwclRhcmdldHMpOgorICAgICAg
ICAoSlNDOjpDYWNoZWRSZWNvdmVyeTo6c2V0V2FudGVkRlBSKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkUmVjb3Zlcnk6OndhbnRlZEpTVmFsdWVSZWdzKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkUmVj
b3Zlcnk6OnNldFdhbnRlZEpTVmFsdWVSZWdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ2Fs
bEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxGcmFtZVNodWZmbGVyOjp0cnlXcml0ZXMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVm
Zmxlcjo6cHJlcGFyZUFueSk6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyLmg6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZVNodWZmbGVyOjphZGROZXcpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVm
Zmxlcjo6aW5pdERhbmdlckZyb250aWVyKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZs
ZXI6OnVwZGF0ZURhbmdlckZyb250aWVyKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZs
ZXI6OmZpbmREYW5nZXJGcm9udGllckZyb20pOgorICAgICAgICAqIGppdC9DYWxsRnJhbWVTaHVm
ZmxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFj
ZSk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpKU1ZhbHVlUmVnczo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkdQUkluZm86OnRvQXJndW1lbnRJbmRleCk6CisgICAgICAgIChKU0M6OmFy
Z3VtZW50UmVnaXN0ZXJGb3IpOgorICAgICAgICAoSlNDOjphcmd1bWVudFJlZ2lzdGVyRm9yQ2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQpOgor
ICAgICAgICAoSlNDOjphcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQp
OgorICAgICAgICAoSlNDOjpqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lzdGVyKToK
KyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZlJlZ2lzdGVyQXJndW1lbnRzRm9yKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDVElOYXRp
dmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyk6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBq
aXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxT
bG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5j
cHA6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpEaXJl
Y3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKToKKyAgICAgICAgKEpTQzo6RGlyZWN0SklUQ29kZTo6
aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGlyZWN0SklUQ29kZTo6YWRk
cmVzc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRpcmVjdEpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpl
eGVjdXRhYmxlQWRkcmVzcyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVEVudHJ5UG9pbnRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKSVRFbnRyeVBvaW50czo6SklURW50cnlQb2ludHMp
OgorICAgICAgICAoSlNDOjpKSVRFbnRyeVBvaW50czo6ZW50cnlGb3IpOgorICAgICAgICAoSlND
OjpKSVRFbnRyeVBvaW50czo6c2V0RW50cnlGb3IpOgorICAgICAgICAoSlNDOjpKSVRFbnRyeVBv
aW50czo6b2Zmc2V0T2ZFbnRyeUZvcik6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpy
ZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQpOgorICAgICAgICAoSlNDOjpKSVRFbnRy
eVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudFR5cGUpOgorICAgICAgICAoSlND
OjpKSVRFbnRyeVBvaW50czo6Y2xlYXJFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SklURW50cnlQ
b2ludHM6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzV2l0aFJlZjo6
SklURW50cnlQb2ludHNXaXRoUmVmKToKKyAgICAgICAgKEpTQzo6SklURW50cnlQb2ludHNXaXRo
UmVmOjpjb2RlUmVmKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRzTG9jYXRpb25Gb3IpOgorICAg
ICAgICAoSlNDOjpyZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9yKToKKyAgICAgICAgKEpTQzo6ZW50
cnlQb2ludFR5cGVGb3IpOgorICAgICAgICAoSlNDOjp0aHVua0VudHJ5UG9pbnRUeXBlRm9yKToK
KyAgICAgICAgKEpTQzo6SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY6OkpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmKToKKyAgICAgICAgKEpTQzo6SklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWY6OmVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6SklUSlNDYWxsVGh1
bmtFbnRyeVBvaW50c1dpdGhSZWY6OnNldEVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6SklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY6Om9mZnNldE9mRW50cnlGb3IpOgorICAgICAgICAo
SlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZjo6Y2xlYXJFbnRyaWVzKToKKyAg
ICAgICAgKEpTQzo6SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY6OmNvZGVSZWYpOgor
ICAgICAgICAoSlNDOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVKSVRFbnRyeU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTmF0aXZlQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29k
ZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVKSVRFbnRyeU5h
dGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2Fs
bCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aml0RW50cnlOYXRpdmVDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OmppdEVudHJ5U3R1Yik6CisgICAgICAgIChK
U0M6OkpJVFRodW5rczo6aml0Q2FsbFRodW5rRW50cnlTdHViKToKKyAgICAgICAgKEpTQzo6SklU
VGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlO
YXRpdmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlOYXRpdmVD
b25zdHJ1Y3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAg
KiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVt
aXRKdW1wSWZOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9h
ZEludDMyKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6YXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNl
dC5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dG
b3IpOgorICAgICAgICAoSlNDOjpyZXZlcnRDYWxsKToKKyAgICAgICAgKEpTQzo6dW5saW5rRm9y
KToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9s
eW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAg
ICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpTcGVjaWFsaXplZFRodW5rSklUKToKKyAg
ICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6Y2hlY2tKU1N0cmluZ0FyZ3VtZW50KToK
KyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bGlua0ZhaWx1cmVIZXJlKToKKyAg
ICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZmluYWxpemUpOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkpOgorICAgICAg
ICAoSlNDOjpzbG93UGF0aEZvcik6CisgICAgICAgIChKU0M6OmxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6bmF0aXZlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Om5hdGl2
ZVRhaWxDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlVGFpbENhbGxXaXRob3V0
U2F2ZWRUYWdzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlQ29uc3RydWN0R2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nQ2hhckxvYWRSZWdDYWxsKToKKyAgICAgICAgKEpT
Qzo6Y2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hhckF0VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmNsejMyVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzcXJ0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpmbG9vclRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2VpbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6dHJ1bmNUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OnJvdW5kVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpleHBUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxvZ1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjppbXVs
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpyYW5kb21UaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAg
IChqc2NtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnNldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1F
bnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAg
ICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yUmVn
aXN0ZXJDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5j
dGlvbkZvclN0YWNrQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JT
dGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
ZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25G
b3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAg
ICAgICAgKiBydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmg6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlQmFzZS5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaDoKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUJhc2U6OmVudHJ5cG9pbnRGb3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFz
ZTo6b2Zmc2V0T2ZFbnRyeUZvcik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpvZmZz
ZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5j
dGlvbkNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OnRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKToK
KyAgICAgICAgKEpTQzo6Vk06OmNsZWFyQ291bnRlcnMpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cENvdW50ZXJzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpn
ZXRKSVRFbnRyeVN0dWIpOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKToKKyAgICAgICAgKEpTQzo6Vk06OmFkZHJlc3NPZkNvdW50ZXIpOgorICAgICAgICAoSlND
OjpWTTo6Y291bnRlckZvcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OmltcG9ydFN0dWJHZW5lcmF0b3IpOgorCiAyMDE2LTEyLTA5ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogU29tZSByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgRmV0Y2ggQVBJIGRvIG5vdCBoYXZlIGRhdGEK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzNyw2ICszMjM3LDkgQEAg
aW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGludCByZXN1bHQ7CiAgICAg
cmVzdWx0ID0gcnVuSlNDKHZtLCBvcHRpb25zKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICB2bS0+ZHVtcENvdW50ZXJzKCk7CisjZW5kaWYKICAgICBpZiAoT3B0aW9uczo6Z2NBdEVu
ZCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaG9sZCB0aGUgQVBJIGxvY2sgdG8gZG8gYSBH
Qy4KICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTQsNiArMTM1NCw3IEBACiAJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3Bw
ICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwICovOyB9OwogCQk2NUMwMjg1RDE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bj
b2RlLmggKi87IH07CisJCTY1REJGMzAyMUQ5MzM5MkIwMDNBRjRCMCAvKiBKSVRFbnRyeVBvaW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwMzAw
RjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVGQjUxMTcxODRFRUU3MDAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5j
cHAgKi87IH07CiAJCTY1RkI2M0E0MUM4RUEwOUMwMDIwNzE5QiAvKiBZYXJyQ2Fub25pY2FsaXpl
VW5pY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUE5NDYxNDFDOEU5RjZGMDBBNzIwOUEgLyogWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3Bw
ICovOyB9OwogCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNC
NEMxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzcyOSw2ICszNzMwLDcgQEAK
IAkJNjJFM0Q1RUYxQjhEMEI3MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYyRUM5QkI0MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVm
ZmxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRnJh
bWVTaHVmZmxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyRUM5QkI1
MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NTAzMDBGMjFDNTAyNzQ2MDBENzg2RDcgLyogSklURW50cnlQb2lu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURW50cnlQb2ludHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8q
IEpTVHlwZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEw
MUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSB0ZXN0UmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIzMDUx
NDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RSZWdFeHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC01NTc0LDYgKzU1NzYsNyBAQAogCQkJCTBGQUY3RUZCMTY1QkE5MTkw
MDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLywKIAkJCQlGRTE4N0EwQTFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCAqLywKIAkJCQlGRTE4N0EwQjFDMDIyOTIzMDAz
OEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggKi8sCisJCQkJNjUwMzAwRjIxQzUwMjc0NjAwRDc4
NkQ3IC8qIEpJVEVudHJ5UG9pbnRzLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZCMTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCAqLywKQEAgLTc3MjcsNiArNzczMCw3IEBACiAJCQkJ
NzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5MERBNjdGMUM4RTMxNkEwMDI5NTE1OSAvKiBnZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQk2NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dD
aGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2
QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAkocmV2aXNpb24g
MjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMyBAQCBwcml2YXRlOgogICAgICAgICBBU1NF
UlQocmVnLmlzU2V0KCkpOwogICAgIH0KIAorICAgIEFyZ3VtZW50UmVnVmFsdWUoT3JpZ2luIG9y
aWdpbiwgUmVnIHJlZywgVHlwZSB0eXBlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IEFyZ3VtZW50UmVnLCB0eXBlLCBvcmlnaW4pCisgICAgICAgICwgbV9yZWcocmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZy5pc1NldCgpKTsKKyAgICB9CisKICAgICBSZWcgbV9yZWc7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Miw5ICsxODIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNl
IEFyZ3VtZW50UmVnOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhh
c0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVudFJlZ1Zh
bHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91YmxlKQot
ICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2YWx1ZS0+YXM8QXJndW1lbnRSZWdWYWx1ZT4oKS0+
YXJndW1lbnRSZWcoKS5pc0dQUigpCisgICAgICAgICAgICAgICAgICAgID8gKHZhbHVlLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSB8fCB2YWx1ZS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAg
ICAgICAgICAgICA6IHZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWRkOgogICAgICAgICAg
ICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYw
LDcgQEAgQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQogICAgICwgbV9oYXNTZWVuQ2xvc3Vy
ZShmYWxzZSkKICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAgLCBtX2FsbG93U3R1YnMo
dHJ1ZSkKKyAgICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFy
Z3VtZW50c0xvY2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xpbmtlZChmYWxzZSkKICAg
ICAsIG1fY2FsbFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1NSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAj
aW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3
dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2FsbGVlT3JDb2RlQmxvY2s7
IH0KICAgICB2b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUg
Y2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BSKQorICAg
IHZvaWQgc2V0VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVudHNMb2NhdGlvbiBhcmd1
bWVudHNMb2NhdGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIp
CiAgICAgeworICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBlKGNhbGxUeXBlKSB8fCAo
YXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAgICAgbV9jYWxsVHlwZSA9
IGNhbGxUeXBlOworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGFyZ3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2RlT3JpZ2luID0gY29kZU9y
aWdpbjsKICAgICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAgICAgfQpAQCAtMjc1LDYg
KzI3OSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsVHlwZT4o
bV9jYWxsVHlwZSk7CiAgICAgfQogCisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9j
YXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFyZ3VtZW50c0xvY2F0
aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIGFyZ3VtZW50c0lu
UmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c0xvY2F0aW9uICE9
IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4TnVtQXJndW1l
bnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1bWVudHM7CkBAIC0zMzks
NiArMzUzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNsb3N1cmUgOiAxOwogICAg
IGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAxOworICAg
IHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJvb2wgbV9pc0xpbmtlZCA6
IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWdu
ZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8tPmRp
c2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9yYXJlRGF0YS0+Y2Fs
bExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxs
LCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNvZGVPcmlnaW4sIGxvYWRl
ZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwog
CkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRoYXQgdGhlIGdldHRlci9z
ZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEp
OwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fcmFyZURhdGEt
PmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAobV90eXBlID09
IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7CkBA
IC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldEpJVENh
bGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihTdGFja0Fy
Z3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21B
Y2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgbV90eXBlID09
IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSwxNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG5vbi1jbGVhciB2
YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobm9kZS0+
bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2Fz
ZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1fc3RhdGUudmFyaWFibGVz
KCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1c2hlZEpTVmFsdWUpIHsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dy
YXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1h
dCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBjYXNl
IEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3YXJkVmFyYXJncyBzaG91
bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBpZiBpdCBkb2VzLCBpdCBz
aG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjg3LDExICsz
Njg3LDU5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAv
LyB1cyB0byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwg
YXJndW1lbnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBz
ZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygw
KSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOwotICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1l
bnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3Bf
ZW50ZXIgc28KLSAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KKyAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c09uU3RhY2sucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c0ZvckNoZWNraW5nLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIC8v
IENyZWF0ZSBhbGwgR2V0QXJndW1lbnRSZWdpc3RlciBub2RlcyBmaXJzdCBhbmQgdGhlbiB0aGUg
Y29ycmVzcG9uZGluZyBNb3ZIaW50IG5vZGVzLAorICAgICAgICAvLyBmb2xsb3dlZCBieSB0aGUg
Y29ycmVzcG9uZGluZyBTZXRMb2NhbCBub2RlcyBhbmQgZmluYWxseSBhbnkgU2V0QXJndW1lbnQg
bm9kZXMgZm9yCisgICAgICAgIC8vIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgorICAgICAgICAv
LyBXZSBkbyB0aGlzIHRvIG1ha2UgdGhlIGV4aXQgcHJvY2Vzc2luZyBjb3JyZWN0LiBXZSBzdGFy
dCB3aXRoIG1fZXhpdE9LID0gdHJ1ZSBzaW5jZQorICAgICAgICAvLyBHZXRBcmd1bWVudFJlZ2lz
dGVyIG5vZGVzIGNhbiBleGl0LCBldmVuIHRob3VnaCB0aGV5IGRvbid0LiBUaGUgTW92SGludCdz
IHRlY2huaWNhbGx5IGNvdWxkCisgICAgICAgIC8vIGV4aXQgYnV0IHdvbid0LiBUaGUgU2V0TG9j
YWxzIGNhbiBleGl0IGFuZCB0aGVyZWZvcmUgd2Ugd2FudCBhbGwgdGhlIE1vdkhpbnRzCisgICAg
ICAgIC8vIGJlZm9yZSB0aGUgZmlyc3QgU2V0TG9jYWwgc28gdGhhdCB0aGUgcmVnaXN0ZXIgc3Rh
dGUgaXMgY29uc2lzdGVudC4KKyAgICAgICAgLy8gV2UgZG8gYWxsIHRoaXMgcHJvY2Vzc2luZyBi
ZWZvcmUgY3JlYXRpbmcgYW55IFNldEFyZ3VtZW50IG5vZGVzIHNpbmNlIHRoZXkgYXJlCisgICAg
ICAgIC8vIG1vcmFsbHkgZXF1aXZhbGVudCB0byB0aGUgU2V0TG9jYWxzIGZvciBHZXRBcmd1bWVu
dFJlZ2lzdGVyIG5vZGVzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1SZWdpc3RlckFyZ3VtZW50cyA9
IHN0ZDo6bWluKG1fbnVtQXJndW1lbnRzLCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTKTsKKworICAgICAgICBWZWN0b3I8Tm9kZSosIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlM+IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2RlczsKKworICAgICAg
ICAvLyBGaXJzdCBjcmVhdGUgR2V0QXJndW1lbnRSZWdpc3RlciBub2Rlcy4KKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbnVtUmVnaXN0ZXJBcmd1bWVudHM7
ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRBcmd1bWVudFJlZ2lzdGVyLCBPcElu
Zm8oMCksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhG
b3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSkpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ3JlYXRlIGFsbCB0aGUgTW92SGludCdzIGZvciB0aGUgR2V0QXJndW1lbnRSZWdpc3RlciBu
b2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2V0
QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBOb2RlKiBn
ZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzW2ldOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8odmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkub2Zmc2V0KCkpLCBnZXRBcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIC8vIFdl
IGNhbid0IGV4aXQgYW55bW9yZS4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBFeGl0IGlzIG5vdyBva2F5LCBidXQgd2UgbmVlZCB0byBmZW5j
ZSB3aXRoIGFuIEV4aXRPSyBub2RlLgorICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
IGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAvLyBDcmVhdGUgYWxsIHRoZSBTZXRMb2Nh
bHMncyBmb3IgdGhlIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY3JlYXRlZCBhYm92ZS4KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSogZ2V0QXJndW1lbnRSZWdpc3RlciA9IGdl
dEFyZ3VtZW50UmVnaXN0ZXJOb2Rlc1tpXTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CisgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlQ2hlY2tBcnJheUhv
aXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOworICAg
ICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFy
aWFibGVBY2Nlc3NEYXRhKSwgZ2V0QXJndW1lbnRSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpID0gc2V0TG9jYWw7CisgICAg
ICAgICAgICBnZXRBcmd1bWVudFJlZ2lzdGVyLT5zZXRWYXJpYWJsZUFjY2Vzc0RhdGEoc2V0TG9j
YWwtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNPblN0YWNrW2ldID0gc2V0TG9jYWw7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRz
Rm9yQ2hlY2tpbmdbaV0gPSBnZXRBcmd1bWVudFJlZ2lzdGVyOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gRmluYWxseSBjcmVhdGUgYW55IFNldEFyZ3VtZW50IG5vZGVzLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGFyZ3VtZW50ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkgewogICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSgK
ICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOwog
ICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgK
QEAgLTM3MDAsNyArMzc0OCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50
LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJn
dW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzT25T
dGFja1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1
bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1l
bnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MTAsOCArNDg1OSwxMCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHVuYm94IG91ciBhcmd1bWVudHMg
aGVyZSBzaW5jZSB0aGF0IHdvbid0IGJlCiAgICAgICAgICAgICAvLyBkb25lIGJ5IHRoZSBhcmd1
bWVudHMgb2JqZWN0IGNyZWF0aW9uIG5vZGUgYXMgdGhhdCBub2RlIG1heSBub3QgZXhpc3QuCiAg
ICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAgICAgICAgIGZsdXNoRm9yUmV0
dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZVZhcmFy
Z3NDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGxGb3J3YXJkVmFyYXJncywgQ2FsbE1v
ZGU6OlRhaWwpOworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBpbnNlcnQgZmx1c2ggbm9kZXMg
Zm9yIG91ciBhcmd1bWVudHMgYWZ0ZXIgdGhlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MKKyAgICAg
ICAgICAgIC8vIG5vZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgZmx1c2hlZCB0byB0aGUgc3RhY2sg
YW5kIGtlcHQgYWxpdmUuCisgICAgICAgICAgICBmbHVzaEZvclJldHVybigpOwogICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5z
dHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUg
Y2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgY2FsbCBpcyB0ZXJtaW5hbCB0aGVuIHdlIHNob3VsZCBub3QgcGFyc2UgYW55IGZ1cnRo
ZXIgYnl0ZWNvZGVzIGFzIHRoZSBUYWlsQ2FsbCB3aWxsIGV4aXQgdGhlIGZ1bmN0aW9uLgogICAg
ICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgbm90IHRlcm1pbmFsLCBob3dldmVyLCB0aGVuIHdl
IHdhbnQgdGhlIHN1YnNlcXVlbnQgb3BfcmV0L29wX2p1bXAgdG8gdXBkYXRlIG1ldGFkYXRhIGFu
ZCBjbGVhbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTksMTQgKzI5OSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gVGhlIHJ1bGVzIGZv
ciB0aHJlYWRlZCBDUFMgZm9ybToKICAgICAgICAgICAgIC8vIAogICAgICAgICAgICAgLy8gSGVh
ZCB2YXJpYWJsZTogZGVzY3JpYmVzIHdoYXQgaXMgbGl2ZSBhdCB0aGUgaGVhZCBvZiB0aGUgYmFz
aWMgYmxvY2suCi0gICAgICAgICAgICAvLyBIZWFkIHZhcmlhYmxlIGxpbmtzIG1heSByZWZlciB0
byBGbHVzaCwgUGhhbnRvbUxvY2FsLCBQaGksIG9yIFNldEFyZ3VtZW50LgotICAgICAgICAgICAg
Ly8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290IGJsb2NrLgorICAgICAg
ICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8gRmx1c2gsIFBoYW50b21M
b2NhbCwgUGhpLCBHZXRBcmd1bWVudFJlZ2lzdGVyCisgICAgICAgICAgICAvLyBvciBTZXRBcmd1
bWVudC4KKyAgICAgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIgYW5kIFNldEFyZ3VtZW50
IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUYWlsIHZhcmlhYmxlOiB0aGUgbGFzdCB0aGluZyB0aGF0IGhhcHBlbmVkIHRv
IHRoZSB2YXJpYWJsZSBpbiB0aGUgYmxvY2suCi0gICAgICAgICAgICAvLyBJdCBtYXkgYmUgYSBG
bHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwgU2V0TG9jYWwsIFNldEFyZ3VtZW50LCBvciBQ
aGkuCi0gICAgICAgICAgICAvLyBTZXRBcmd1bWVudCBtYXkgb25seSBhcHBlYXIgaW4gdGhlIHJv
b3QgYmxvY2suIE5vdGUgdGhhdCBpZiB0aGVyZSBldmVyCi0gICAgICAgICAgICAvLyB3YXMgYSBH
ZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsIGFuZCBpdCB3YXMgZm9sbG93ZWQgYnkgUGhhbnRvbUxv
Y2FscyBhbmQKLSAgICAgICAgICAgIC8vIEZsdXNoZXMgYnV0IG5vdCBTZXRMb2NhbHMsIHRoZW4g
dGhlIHRhaWwgdmFyaWFibGUgd2lsbCBiZSB0aGUgR2V0TG9jYWwuCisgICAgICAgICAgICAvLyBJ
dCBtYXkgYmUgYSBGbHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwgU2V0TG9jYWwsIEdldEFy
Z3VtZW50UmVnaXN0ZXIsCisgICAgICAgICAgICAvLyBTZXRBcmd1bWVudCwgb3IgUGhpLiBHZXRB
cmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBtYXkgb25seSBhcHBlYXIKKyAgICAgICAg
ICAgIC8vIGluIHRoZSByb290IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhlcmUgZXZlciB3YXMgYSBH
ZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsCisgICAgICAgICAgICAvLyBhbmQgaXQgd2FzIGZvbGxv
d2VkIGJ5IFBoYW50b21Mb2NhbHMgYW5kIEZsdXNoZXMgYnV0IG5vdCBTZXRMb2NhbHMsIHRoZW4K
KyAgICAgICAgICAgIC8vIHRoZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUgdGhlIEdldExvY2FsLgog
ICAgICAgICAgICAgLy8gVGhpcyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IHlvdSBvbmx5IGNhcmUg
dGhhdCB0aGUgdGFpbCB2YXJpYWJsZSBpcyBhCiAgICAgICAgICAgICAvLyBGbHVzaCBvciBQaGFu
dG9tTG9jYWwgaWYgbm90aGluZyBlbHNlIGludGVyZXN0aW5nIGhhcHBlbmVkLiBMaWtld2lzZSwg
aWYKICAgICAgICAgICAgIC8vIHRoZXJlIGV2ZXIgd2FzIGEgU2V0TG9jYWwgYW5kIGl0IHdhcyBm
b2xsb3dlZCBieSBGbHVzaGVzLCB0aGVuIHRoZSB0YWlsCkBAIC0zNjcsMTIgKzM2OSwxMyBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY2lhbENhc2VBcmd1bWVudHMoKQogICAgIHsKLSAg
ICAgICAgLy8gTm9ybWFsbHksIGEgU2V0QXJndW1lbnQgZGVub3RlcyB0aGUgc3RhcnQgb2YgYSBs
aXZlIHJhbmdlIGZvciBhIGxvY2FsJ3MgdmFsdWUgb24gdGhlIHN0YWNrLgotICAgICAgICAvLyBC
dXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRo
ZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKLSAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291
bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0
aGUgYXJndW1lbnRzCi0gICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhl
ciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0t
OykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1
bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgLy8gTm9y
bWFsbHksIGEgU2V0QXJndW1lbnQgb3IgU2V0TG9jYWwgZGVub3RlcyB0aGUgc3RhcnQgb2YgYSBs
aXZlIHJhbmdlIGZvcgorICAgICAgICAvLyBhIGxvY2FsJ3MgdmFsdWUgb24gdGhlIHN0YWNrLiBC
dXQgdGhvc2UgU2V0QXJndW1lbnRzIGFuZCBTZXRMb2NhbHMgdXNlZAorICAgICAgICAvLyBmb3Ig
dGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldCBzcGVjaWFs
LWNhc2VkLiBXZSBjb3VsZCBoYXZlCisgICAgICAgIC8vIGluc3RlYWQgdXNlZCB0d28gZGlmZmVy
ZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlIGNh
c2UsCisgICAgICAgIC8vIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMg
c2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3Jh
cGgubV9hcmd1bWVudHNPblN0YWNrLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIG1fZ3JhcGgu
YmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFja1tpXSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJh
bmRLaW5kIG9wZXJhbmRLaW5kPgpAQCAtNDgwLDYgKzQ4Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAg
ICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAgY2FzZSBHZXRBcmd1bWVu
dFJlZ2lzdGVyOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiw3IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoaToKICAg
ICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAg
Y2FzZSBTd2l0Y2g6CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAg
ICAgLy8gREZHIGJhY2tlbmQgcmVxdWlyZXMgdGhhdCB0aGUgbG9jYWxzIHRoYXQgdGhpcyByZWFk
cyBhcmUgZmx1c2hlZC4gRlRMIGJhY2tlbmQgY2FuIGhhbmRsZSB0aG9zZQogICAgICAgICAvLyBs
b2NhbHMgYmVpbmcgcHJvbW90ZWQuCi0gICAgICAgIGlmICghaXNGVEwoZ3JhcGgubV9wbGFuLm1v
ZGUpKQorICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2RlKSAmJiAhbm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJlYWQoU3RhY2spOwog
ICAgICAgICAKICAgICAgICAgLy8gRXZlbiB0aG91Z2ggaXQncyBwaGFudG9tLCBpdCBzdGlsbCBo
YXMgdGhlIHByb3BlcnR5IHRoYXQgb25lIGNhbid0IGJlIHJlcGxhY2VkIHdpdGggYW5vdGhlci4K
QEAgLTU1OSwxMSArNTYwLDE4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CiAgICAg
Y2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgog
ICAgICAgICByZWFkKFdvcmxkKTsKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAg
ICAgIC8vIFdlIHJlYWQgYWxsIGFyZ3VtZW50cyBhZnRlciAidGhpcyIuCisgICAgICAgIGZvciAo
dW5zaWduZWQgYXJnID0gMTsgYXJnIDwgZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLnNpemUoKTsg
YXJnKyspCisgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoYXJnKSkpOworICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgd3Jp
dGUoU2lkZVN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAg
ICAgICAgIHJlYWQoR2V0dGVyU2V0dGVyX2dldHRlcik7CiAgICAgICAgIGRlZihIZWFwTG9jYXRp
b24oR2V0dGVyTG9jLCBHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw4IEBAIGVudW0gU3RydWN0dXJlUmVnaXN0cmF0
aW9uUmVzdWx0IHsgU3RydWMKIAogZW51bSBPcHRpbWl6YXRpb25GaXhwb2ludFN0YXRlIHsgQmVm
b3JlRml4cG9pbnQsIEZpeHBvaW50Tm90Q29udmVyZ2VkLCBGaXhwb2ludENvbnZlcmdlZCB9Owog
CitlbnVtIFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzIHsgRG9udE9wdGltaXplQXJndW1l
bnRGbHVzaGVzLCBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlcyB9OworCiAvLyBEZXNjcmliZXMgdGhl
IGZvcm0geW91IGNhbiBleHBlY3QgdGhlIGVudGlyZSBncmFwaCB0byBiZSBpbi4KIGVudW0gR3Jh
cGhGb3JtIHsKICAgICAvLyBMb2FkU3RvcmUgZm9ybSBtZWFucyB0aGF0IGJhc2ljIGJsb2NrcyBt
YXkgZnJlZWx5IHVzZSBHZXRMb2NhbCwgU2V0TG9jYWwsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAg
ICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjayk7CisgICAgICAg
IGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZyk7CiAKICAgICAg
ICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRGcm9tQXJn
dW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CisgICAgY2FzZSBHZXRBcmd1bWVudFJl
Z2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2Vu
UHJvbG9ndWU6CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuVGFpbDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
OCArOTAsOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgLy8g
bWFrZSBzdXJlIHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5hbGl6YXRpb24g
b24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25U
aHVua0dlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxs
U2xvd1BhdGhHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVy
YXRvcik7Ci0gICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0
b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0RpcmVjdENhbGxUaHVu
a0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtQb2x5bW9y
cGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgCiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigp
KQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlM
aXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3ODYsNiArMTc4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRG91Ymxl
Q29uc3RhbnQ6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVl
OgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgICAgIGNhc2UgR2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAg
ICAgICAgY2FzZSBHZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0
LDYgKzEwNCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChmb3JtYXQgJiBEYXRhRm9ybWF0
SlMpOwogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIGZvcm1hdCk7CiAgICAg
fQorCisgICAgdm9pZCBpbml0QXJndW1lbnRSZWdpc3RlclZhbHVlKE5vZGUqIG5vZGUsIHVpbnQz
Ml90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IHJlZ2lzdGVyRm9ybWF0ID0gIERh
dGFGb3JtYXRKUykKKyAgICB7CisgICAgICAgIG1fbm9kZSA9IG5vZGU7CisgICAgICAgIG1fdXNl
Q291bnQgPSB1c2VDb3VudDsKKyAgICAgICAgbV9yZWdpc3RlckZvcm1hdCA9IHJlZ2lzdGVyRm9y
bWF0OworICAgICAgICBtX3NwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdE5vbmU7CisgICAgICAgIG1f
Y2FuRmlsbCA9IGZhbHNlOworICAgICAgICB1LmdwciA9IGdwcjsKKyAgICAgICAgbV9ib3JuRm9y
T1NSID0gZmFsc2U7CisgICAgICAgIG1faXNDb25zdGFudCA9IGZhbHNlOworICAgICAgICBBU1NF
UlQobV91c2VDb3VudCk7CisgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lk
IGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgdGFnR1BS
LCBHUFJSZWcgcGF5bG9hZEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDYgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0LCBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJp
YW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0
KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAgQVNTRVJUKG5vZGUtPmhh
c1ZhcmlhYmxlQWNjZXNzRGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykp
OwogICAgIGlmIChub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpKSB7CiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dHJ5R2V0VmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEpIHsKQEAg
LTM3Myw2ICszNzIsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLT5jYXNlc1tpXS52
YWx1ZSwgY29udGV4dCksICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgfQorICAg
IGlmIChub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigiLCBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpLCAiKSIpOwogICAg
IENsb2JiZXJTZXQgcmVhZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7CiAgICAgYWRkUmVhZHNB
bmRXcml0ZXMoKnRoaXMsIG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAtMzk2LDcgKzM5Nyw3IEBA
IHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiV2FzSG9pc3RlZCIpOwogICAgIG91dC5wcmludCgiKSIpOwogCi0gICAgaWYg
KG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpICYmIG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNz
RGF0YSgpKQorICAgIGlmICgobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhpcykgfHwgbm9kZS0+b3Ao
KSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1w
KG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICAgICBl
bHNlIGlmIChub2RlLT5oYXNIZWFwUHJlZGljdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoIiAg
cHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkp
OwpAQCAtNTA2LDggKzUwNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3Rh
dGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmlj
YXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIp
OwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQg
Zm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNl
Ci0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRz
KSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9y
IGNoZWNraW5nOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50c0ZvckNoZWNraW5nKSwgIlxuIik7Cisg
ICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgb24gc3RhY2s6ICIsIGxpc3REdW1wKG1fYXJn
dW1lbnRzT25TdGFjayksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAg
CiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtMTYyMCwxMyArMTYyMywxMyBAQCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgIGlmICghY3Vy
cmVudE5vZGUgfHwgbm9kZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5vcmlnaW4pIHsKICAgICAg
ICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0
YWNrKCp0aGlzKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMp
IHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgewogICAgICAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJvZmlsZSogewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBh
cmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBh
cmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2RlLT5hY2Nlc3Nlc1N0YWNr
KCp0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnRO
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbENhdGNo
RXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9y
aWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wg
bmVlZHNTY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQg
fHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQorICAgIGJvb2wgbmVl
ZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1f
Y29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3Bs
YW47CkBAIC04NzgsOSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAgIEJhZzxTdG9yYWdlQWNj
ZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAvLyBJbiBDUFMsIHRoaXMg
aXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0aGUg
bWFjaGluZSBjb2RlIGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBvZiB0aGVt
IGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVzZSBvZiB0aGUgRmx1
c2gKLSAgICAvLyBub2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRB
cmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBp
bgorICAgIC8vIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2aXZlZCBEQ0UuIEFsbCBv
ZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwKKyAgICAvLyBiZWNh
dXNlIG9mIHRoZSBGbHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIEluIFNTQSwgdGhpcyBpcyBh
bGwgb2YgdGhlIEdldFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBtYWNoaW5l
IGNvZGUgYmxvY2sgdGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24gaW4gdGhl
IHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNwZWN1bGF0
aW9uCkBAIC05MDMsNyArOTAzLDggQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENF
IHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlz
IHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+
IG1fYXJndW1lbnRzOworICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHNPblN0YWNrOwor
ICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHNGb3JDaGVja2luZzsKICAgICAKICAgICAv
LyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1l
bnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9y
bWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKQEAgLTk1NCw2ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAg
R3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRpb25TdGF0
ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6OkluaXRpYWwgfTsKKyAg
ICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3RoUmVkdWNlQXJndW1lbnRz
ID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9wdGltaXplQXJndW1lbnRG
bHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBt
X2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFs
aXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKICAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbaV07CiAgICAgICAgICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTggKzk5LDYgQEAg
dm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9CiAKLXZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2RlIGN1cnJlbnRseSBtYXRj
aGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdlIG5lZWQgdG8KLSAgICAv
LyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0aGUgcHJvbG9ndWUgYW5k
IHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBXZSdsbCBuZWVkIHRvIGNv
bnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVjaWZpY2FsbHkgdGhlIHN0
YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91
dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAgLy8gYm90aCBub3JtYWwg
cmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCi0g
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
bV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19Ci0KIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAgICBlbWl0U2F2ZUNh
bGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2pzQ2FsbHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNvcmQgPSBtX2pzQ2FsbHNb
aV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAg
bGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0ciht
X3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuZW50
cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAg
ICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93Q2FsbCkpLAogICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50
YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxsUmVjb3JkJiByZWNvcmQg
OiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29y
ZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNhbGwsIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYgKHJlY29yZC5oYXNTbG93
Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVu
Y3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1
bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRpb24oKSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7
CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKLSAg
ICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgTGFi
ZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2Rl
QmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAgICAgLy8gUGxhbnQg
YSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNr
LgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogICAg
IG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOwogCisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIG1fc3RhY2tB
cmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
CisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAg
ICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgYXJndW1lbnRSZWdp
c3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAg
ICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgp
KTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisKICAgICAvLyBHZW5lcmF0
ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRv
cnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00MDYsMjQgKzQxNiw4NyBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9G
aXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVy
KTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRy
eUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0
aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3RhY2tBcmdz
QXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNr
QXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50
cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtl
X3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZSht
X2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgZW50cnlwb2ludHMpOwog
fQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewogICAgIHNldFN0YXJ0
T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICBHUFJS
ZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpOworICAg
IEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJlbCByZWdpc3RlckFyZ3Vt
ZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMg
KyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkgZXh0cmEgcmVnaXN0ZXIg
YXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFjay4KKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAgZXh0cmFSZWdpc3RlckFy
Z3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgt
LSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tleHRyYVJlZ2lz
dGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmd1
bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRyYVJlZ2lzdGVyQXJndW1l
bnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBW
TTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJFbnRyeS5hcHBlbmQoanVt
cCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAg
IGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7CisKKyAgICBMYWJlbCBy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCByZWdpc3RlckNoZWNrQXJp
dHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0eSA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFtZXRlcnMpKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNoMzIoQmVsb3csIGFyZ0Nv
dW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAgICAgICBtX3JlZ2lzdGVy
QXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAgfQorICAgIAorICAgIExh
YmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYgKG51bVBhcmFtZXRlcnMg
PD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmVn
aXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9IHJlZ2lzdGVyRW50cnlO
b0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkp
OworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKKworICAg
IExhYmVsIG1haW5FbnRyeSh0aGlzKTsKKworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAK
ICAgICAvLyA9PT0gRnVuY3Rpb24gaGVhZGVyIGNvZGUgZ2VuZXJhdGlvbiA9PT0KICAgICAvLyBU
aGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCB3aXRob3V0IHBlcmZvcm1pbmcgYW4gYXJpdHkg
Y2hlY2suCiAgICAgLy8gSWYgd2UgbmVlZGVkIHRvIHBlcmZvcm0gYW4gYXJpdHkgY2hlY2sgd2Ug
d2lsbCBhbHJlYWR5IGhhdmUgbW92ZWQgdGhlIHJldHVybiBhZGRyZXNzLAogICAgIC8vIHNvIGVu
dGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhpcyk7CisKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgc3RvcmVQdHIoYXJn
dW1lbnRSZWdpc3RlckZvckNhbGxlZSgpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSkpOworICAgIHN0b3JlMzIoYXJnQ291bnRSZWcsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCkpOworCisgICAgTGFiZWwgZnJvbVN0YWNrRW50cnkodGhpcyk7CisjZW5k
aWYKKyAgICAKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmlj
aWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCi0gICAgYWRkUHRyKFRydXN0
ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJD
b3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKSAtIDEpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVy
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgSnVt
cCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+
YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRSZWdp
c3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86Om5vbkFyZ0dQUjAp
OworICAgIEp1bXAgc3RhY2tPdmVyZmxvdyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRy
ZXNzKG1fdm0tPmFkZHJlc3NPZlNvZnRTdGFja0xpbWl0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKIAogICAgIC8vIE1vdmUgdGhlIHN0YWNrIHBvaW50ZXIgZG93biB0byBhY2NvbW1vZGF0ZSBs
b2NhbHMKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKQEAgLTQ1MiwyOCArNTI1LDEwNSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlRnVuY3Rpb24oKQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgIG1f
c3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworCisgICAg
SnVtcExpc3QgYXJpdHlPSzsKICAgICAKLSAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRv
IGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50
cwotICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBm
YXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5Ci0gICAgLy8gZGV0ZXJtaW5l
IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhc3NlZCwgb3IgaGF2
ZSBhbHJlYWR5IGNoZWNrZWQpLgotICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNoZWNr
IGlzIG5lY2Vzc2FyeSwgd2UgZW50ZXIgaGVyZS4KLSAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMg
ZnJvbSBhIGN0aSBjYWxsIHRvIGEgREZHIHN0eWxlIG9wZXJhdGlvbiAobm9ybWFsIEMgY2FsbGlu
ZyBjb252ZW50aW9ucykuCi0gICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKLSAgICBjb21waWxl
RW50cnkoKTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAganVtcChyZWdpc3RlckFyZ3NDaGVja0FyaXR5KTsKKworICAgIEp1bXBMaXN0IHJlZ2lzdGVy
QXJpdHlOZWVkc0ZpeHVwOworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICByZWdpc3RlckNoZWNrQXJpdHku
bGluayh0aGlzKTsKKyAgICAgICAgcmVnaXN0ZXJBcml0eU5lZWRzRml4dXAuYXBwZW5kKGJyYW5j
aDMyKEJlbG93LCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKSk7CisKKyAgICAgICAgLy8gV2UgaGF2ZSBleHRyYSByZWdpc3RlciBhcmd1bWVu
dHMuCisKKyAgICAgICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRv
ZXMgbm90IGNoZWNrIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAg
ICAvLyBoYXZlIGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBl
bnRyeSBwb2ludCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQorICAgICAgICAvLyBkZXRlcm1pbmUg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBoYXZl
IGFscmVhZHkgY2hlY2tlZCkuCisgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGFuIGFyaXR5IGNo
ZWNrIGlzIG5lY2Vzc2FyeSwgd2UgZW50ZXIgaGVyZS4KKyAgICAgICAgbV9yZWdpc3RlckFyZ3NX
aXRoUG9zc2libGVFeHRyYUFyZ3MgPSBsYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlJlZ0FyZ3NFeHRyYSk7CisKKyAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJn
cyBwYXNzZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsgYXJnSW5k
ZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsr
KSB7CisgICAgICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBh
cmdDb3VudFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdJbmRleCkpLmxpbmtU
byhtYWluRW50cnksIHRoaXMpOworICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJh
bWVCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJ
bmRleCksIGFyZ0luZGV4KTsKKyAgICAgICAgfQorICAgICAgICBqdW1wKG1haW5FbnRyeSk7Cisg
ICAgfQorCisgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgaWYgKG51bVBhcmFtZXRlcnMgPiAwKSB7
CisgICAgICAgIC8vIFRoZXJlIHNob3VsZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgor
ICAgICAgICB1bnNpZ25lZCByZWdpc3RlckFyZ3VtZW50Rml4dXBDb3VudCA9IHN0ZDo6bWluKG51
bVBhcmFtZXRlcnMgLSAxLCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
KTsKKyAgICAgICAgTGFiZWwgcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cCA9IGxhYmVs
KCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDE7IGFyZ0luZGV4IDw9IHJl
Z2lzdGVyQXJndW1lbnRGaXh1cENvdW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgcmVnaXN0
ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c05lZWRB
cml0eUZpeHVwOworICAgIH0KKworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0Fy
Z3NBcml0eSk7CisKKyAgICByZWdpc3RlckFyaXR5TmVlZHNGaXh1cC5saW5rKHRoaXMpOworCisg
ICAgaWYgKG51bVBhcmFtZXRlcnMgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUykKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5LmxpbmsodGhpcyk7CisKKyAgICBz
cGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CisKKyNpZiBFTkFC
TEUoVk1fQ09VTlRFUlMpCisgICAgSnVtcCBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVwID0ganVt
cCgpOworI2VuZGlmCisjZW5kaWYKKworICAgIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2sgPSBs
YWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsK
KworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjb250aW51ZVRvU3RhY2tBcml0eUZpeHVw
LmxpbmsodGhpcyk7CisjZW5kaWYKKworICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAg
ICBsb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBicmFuY2gz
MihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSkpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CisgICAgYXJp
dHlPSy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3Rl
ZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSk7CisKKyAgICBpbmNyZW1lbnRD
b3VudGVyKHRoaXMsIFZNOjpBcml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgZW1pdFN0b3JlQ29k
ZU9yaWdpbihDb2RlT3JpZ2luKDApKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIG1fc3BlY3VsYXRpdmUtPmNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+
bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlv
bkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGJyYW5jaFRl
c3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNr
LCB0aGlzKTsKKyAgICBhcml0eU9LLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigw
KSk7CiAgICAgbW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKICAgICBtX2NhbGxBcml0eUZpeHVwID0gY2FsbCgpOworCisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIEp1bXAgdG9GaWxsUmVnaXN0ZXJzID0g
anVtcCgpOworCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworCisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6U3RhY2tBcmdzTm9Bcml0eSk7CisgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKKworICAgIGFyaXR5T0subGluayh0aGlzKTsKKyAgICB0b0ZpbGxS
ZWdpc3RlcnMubGluayh0aGlzKTsKKworICAgIC8vIExvYWQgYXJndW1lbnQgdmFsdWVzIGludG8g
YXJndW1lbnQgcmVnaXN0ZXJzCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0lu
ZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
ICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9u
QXJndW1lbnQoYXJnSW5kZXgpKTsKKworICAgIGp1bXAoZnJvbVN0YWNrRW50cnkpOworI2Vsc2UK
KyAgICBhcml0eU9LLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAganVtcChmcm9t
QXJpdHlDaGVjayk7CisjZW5kaWYKICAgICAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29k
ZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIpOwpAQCAtNTAyLDEwICs2NTIsMzUgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAK
LSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5s
b2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CisgICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHM7
CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworI2lmIEVOQUJM
RShWTV9DT1VOVEVSUykKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0
ciA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YocmVnaXN0ZXJFbnRyeU5vQXJpdHkpOworI2Vsc2UK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFpbkVudHJ5Q29kZVB0ciA9IGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2YobWFpbkVudHJ5KTsKKyNlbmRpZgorICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5
Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFpbkVudHJ5Q29kZVB0cik7
CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFy
Z3MsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRy
YUFyZ3MpKTsKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NNdXN0Q2hl
Y2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNo
ZWNrKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdDb3VudCA9
PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSBtYWluRW50cnlDb2RlUHRyOwor
ICAgICAgICBlbHNlIGlmIChyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5p
c1NldCgpKQorICAgICAgICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lz
dGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnQ291bnRdKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aEFy
aXR5Q2hlY2spOworICAgICAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50
czo6cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOwor
ICAgIH0KKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihTdGFja0FyZ3NBcml0eUNoZWNrTm90
UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NBcml0eU9LRW50cnkp
KTsKKyNlbHNlCisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1haW5FbnRyeSkpOworI2VuZGlm
CisgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzTXVzdENoZWNrQXJpdHksIGxp
bmtCdWZmZXItPmxvY2F0aW9uT2YobV9zdGFja0FyZ3NXaXRoQXJpdHlDaGVjaykpOwogCiAgICAg
bV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZN
b3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIGVudHJ5cG9pbnRzKTsKIH0KIAog
dm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fanNE
aXJlY3RDYWxscy5hcHBlbmQoSlNEaXJlY3RDYWxsUmVjb3JkKGNhbGwsIHNsb3dQYXRoLCBpbmZv
KSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkSlNEaXJlY3RDYWxsKENhbGwgY2FsbCwgQ2Fs
bCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5mbykKKyAgICB7Cisg
ICAgICAgIG1fanNEaXJlY3RDYWxscy5hcHBlbmQoSlNEaXJlY3RDYWxsUmVjb3JkKGNhbGwsIHNs
b3dDYWxsLCBzbG93UGF0aCwgaW5mbykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGFkZEpTRGly
ZWN0VGFpbENhbGwoUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wLCBDYWxsIGNhbGwsIExhYmVs
IHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzRGlyZWN0
VGFpbENhbGxzLmFwcGVuZChKU0RpcmVjdFRhaWxDYWxsUmVjb3JkKHBhdGNoYWJsZUp1bXAsIGNh
bGwsIHNsb3dQYXRoLCBpbmZvKSk7CkBAIC0yNjcsNyArMjcyLDYgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAKICAgICAvLyBJbnRlcm5h
bCBpbXBsZW1lbnRhdGlvbiB0byBjb21waWxlLgotICAgIHZvaWQgY29tcGlsZUVudHJ5KCk7CiAg
ICAgdm9pZCBjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpOwogICAgIHZvaWQgY29tcGls
ZUVudHJ5RXhlY3V0aW9uRmxhZygpOwogICAgIHZvaWQgY29tcGlsZUJvZHkoKTsKQEAgLTMxOCw3
ICszMjIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBKU0RpcmVjdENhbGxSZWNvcmQoQ2FsbCBjYWxsLCBDYWxsIHNsb3dDYWxsLCBMYWJlbCBz
bG93UGF0aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQorICAgICAgICAgICAgOiBjYWxsKGNhbGwpCisg
ICAgICAgICAgICAsIHNsb3dDYWxsKHNsb3dDYWxsKQorICAgICAgICAgICAgLCBzbG93UGF0aChz
bG93UGF0aCkKKyAgICAgICAgICAgICwgaW5mbyhpbmZvKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICBib29sIGhhc1Nsb3dDYWxsKCkgeyByZXR1cm4gc2xvd0NhbGwubV9sYWJlbC5p
c1NldCgpOyB9CisKICAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBDYWxsIHNsb3dDYWxsOwog
ICAgICAgICBMYWJlbCBzbG93UGF0aDsKICAgICAgICAgQ2FsbExpbmtJbmZvKiBpbmZvOwogICAg
IH07CkBAIC0zNTUsNyArMzcwLDEyIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdEluZm8+IG1fZXhjZXB0aW9uSGFuZGxlck9TUkV4aXRDYWxsU2l0ZXM7CiAg
ICAgCiAgICAgQ2FsbCBtX2NhbGxBcml0eUZpeHVwOwotICAgIExhYmVsIG1fYXJpdHlDaGVjazsK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTGFiZWwg
bV9yZWdpc3RlckFyZ3NXaXRoUG9zc2libGVFeHRyYUFyZ3M7CisgICAgTGFiZWwgbV9yZWdpc3Rl
ckFyZ3NXaXRoQXJpdHlDaGVjazsKKyAgICBMYWJlbCBtX3N0YWNrQXJnc0FyaXR5T0tFbnRyeTsK
KyNlbmRpZgorICAgIExhYmVsIG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2s7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNwZWN1bGF0aXZlSklUPiBtX3NwZWN1bGF0aXZlOwogICAgIFBDVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlciBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjsKIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAy
MDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFBh
c3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxp
bmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjaykKK0pJVEZpbmFs
aXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29k
ZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgSklURW50cnlQ
b2ludHMmIGVudHJ5cG9pbnRzKQogICAgIDogRmluYWxpemVyKHBsYW4pCiAgICAgLCBtX2ppdENv
ZGUoaml0Q29kZSkKICAgICAsIG1fbGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtCdWZmZXIpKQotICAg
ICwgbV93aXRoQXJpdHlDaGVjayh3aXRoQXJpdHlDaGVjaykKKyAgICAsIG1fZW50cnlwb2ludHMo
ZW50cnlwb2ludHMpCiB7CiB9CiAKQEAgLTU2LDkgKzU3LDggQEAgc2l6ZV90IEpJVEZpbmFsaXpl
cjo6Y29kZVNpemUoKQogCiBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogewotICAgIG1f
aml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCpt
X2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tX
aXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklU
IGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2Rl
QmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpOworICAgIG1faml0Q29kZS0+aW5pdGlh
bGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBtX2VudHJ5cG9p
bnRzKSk7CiAgICAgCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUp
OwogICAgIApAQCAtNjksMTAgKzY5LDExIEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZSgp
CiAKIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkKIHsKLSAgICBSRUxFQVNF
X0FTU0VSVCghbV93aXRoQXJpdHlDaGVjay5pc0VtcHR5VmFsdWUoKSk7Ci0gICAgbV9qaXRDb2Rl
LT5pbml0aWFsaXplQ29kZVJlZigKLSAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1
ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAotICAgICAg
ICBtX3dpdGhBcml0eUNoZWNrKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9lbnRyeXBvaW50cy5l
bnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuaXNFbXB0eVZhbHVlKCkpOworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1
ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRU
eXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpOworCisgICAg
bV9qaXRDb2RlLT5pbml0aWFsaXplRW50cnlQb2ludHMoSklURW50cnlQb2ludHNXaXRoUmVmKGNv
ZGVSZWYsIG1fZW50cnlwb2ludHMpKTsKKwogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENv
ZGUobV9qaXRDb2RlKTsKICAgICAKICAgICBmaW5hbGl6ZUNvbW1vbigpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCShyZXZpc2lvbiAyMDk2Mjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAogY2xhc3MgSklURmluYWxpemVyIDogcHVibGljIEZpbmFsaXplciB7CiBwdWJsaWM6Ci0gICAg
SklURmluYWxpemVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENvZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8
TGlua0J1ZmZlcj4sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cihNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OkVtcHR5VmFsdWUpKTsKKyAg
ICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBhc3NSZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rQnVmZmVyPiwgSklURW50cnlQb2ludHMmKTsKICAgICB2aXJ0dWFsIH5KSVRGaW5hbGl6
ZXIoKTsKICAgICAKICAgICBzaXplX3QgY29kZVNpemUoKSBvdmVycmlkZTsKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRy
eXBvaW50czsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkr
KykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBo
Lm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAg
ICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1
bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKICAgICAgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkK
ICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxG
cmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAgICAgICB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAg
ICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9h
cmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYm
ICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSB8fCBub2RlICE9IG1f
Z3JhcGgubV9hcmd1bWVudHNPblN0YWNrW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2Nh
bCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNz
RGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFmbHVzaEFjY2Vzc0RhdGEpCkBAIC0xMTcsNyArMTE3LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgaWYgKGluaXRpYWxBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbm9kZSwgbm9kZS0+b3AoKSAhPSBTZXRMb2NhbCk7IC8vIFdlIHNob3VsZCBoYXZlIGlu
c2VydGVkIGEgRmx1c2ggYmVmb3JlIHRoaXMhCiAgICAgICAgICAgICBpbml0aWFsQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAg
ICAgICBpbml0aWFsQWNjZXNzTm9kZXMub3BlcmFuZChvcGVyYW5kKSA9IG5vZGU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNp
b24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFw
aCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIEdldENhbGxlZToK
ICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgR2V0QXJn
dW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRTY29w
ZToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWluaWZpZWROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQxLDYgKzQxLDggQEAgTWluaWZpZWROb2RlIE1pbmlmaWVkTm9kZTo6ZnJvbU5vZGUoTm9kZQog
ICAgIHJlc3VsdC5tX29wID0gbm9kZS0+b3AoKTsKICAgICBpZiAoaGFzQ29uc3RhbnQobm9kZS0+
b3AoKSkpCiAgICAgICAgIHJlc3VsdC5tX2luZm8gPSBKU1ZhbHVlOjplbmNvZGUobm9kZS0+YXNK
U1ZhbHVlKCkpOworICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rl
cikKKyAgICAgICAgcmVzdWx0Lm1faW5mbyA9IDA7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VS
VChub2RlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgbm9kZS0+b3AoKSA9PSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKICAgICAgICAgcmVzdWx0Lm1faW5mbyA9IGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgaW5saW5l
IGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAogICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NiArNzEsNyBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAg
Y2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAgIGNhc2UgU2V0QXJndW1lbnQ6
CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgRmx1c2g6CiAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsNiArODI4LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJik7CiAgICAgYm9vbCBh
Y2Nlc3Nlc1N0YWNrKEdyYXBoJiBncmFwaCkKICAgICB7CisgICAgICAgIGlmIChvcCgpID09IEdl
dEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAg
cmV0dXJuIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShncmFwaCk7CiAgICAgfQogICAgIApAQCAtODQ2
LDYgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxWYXJpYWJs
ZUFjY2Vzc0RhdGEqPigpLT5maW5kKCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc2V0VmFyaWFi
bGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUpCisgICAgeworICAgICAg
ICBtX29wSW5mbyA9IHZhcmlhYmxlOworICAgIH0KKyAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
bG9jYWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlQWNjZXNzRGF0YSgpLT5sb2Nh
bCgpOwpAQCAtMTIxNCw2ICsxMjIyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNwZWN1
bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBo
YXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgYXJndW1lbnRS
ZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFJlZ2lzdGVy
SW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8dW5zaWduZWQ+KCk7CisgICAg
fQorICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXJl
c3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2
aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhp
cyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVybmluZyBpdCBhbnl3YXkuICov
IFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhH
ZXRBcmd1bWVudFJlZ2lzdGVyLCBOb2RlUmVzdWx0SlMgLyogfCBOb2RlTXVzdEdlbmVyYXRlICov
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRoZXNl
IG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5vZGVzLiAqL1wKICAgICAvKiBB
bnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwgc2hh
cmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsMTEgQEAgdm9p
ZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgbV9hdmFpbGFi
aWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT5sb2NhbCgpKS5zZXROb2RlKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE1vdkhpbnQ6IHsKICAgICAgICAgbV9hdmFp
bGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpLnNldE5vZGUo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MiwxNiArMTEyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4K
ICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKLSAgICAg
ICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0
ZXJzKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJz
KCkpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52
YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGRO
b2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBh
IFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9s
ZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAv
LyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGFuIGFyZ3VtZW50IG5vZGUgZXZlbiBpZiBp
dCdzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1
bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBO
b2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgICAgICBtX2dyYXBo
LCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICBPcEluZm8o
b2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGU7CisgICAg
ICAgICAgICBOb2RlKiBzdGFja05vZGU7CisgICAgICAgICAgICBpZiAoYXJndW1lbnQgPCBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAg
bm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgs
IFNwZWNOb25lLCBHZXRBcmd1bWVudFJlZ2lzdGVyLCBvcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQo
YXJndW1lbnQpKSk7CisgICAgICAgICAgICAgICAgc3RhY2tOb2RlID0gbmV3Um9vdC0+YXBwZW5k
Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBv
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZSkpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9kZSA9IG5vZGU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBu
b2RlOworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRdID0g
c3RhY2tOb2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2Nh
bCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyAr
MzE0LDkgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIHBl
cmZvcm1DRkEoZGZnKTsKICAgICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKGRmZyk7CiAgICAgYm9v
bCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZGZnLm1fc3RyZW5ndGhSZWR1Y2VBcmd1bWVudHMgPSBP
cHRpbWl6ZUFyZ3VtZW50Rmx1c2hlczsKICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1DRkdTaW1wbGlm
aWNhdGlvbihkZmcpOworICAgIGNoYW5nZWQgfD0gcGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKGRm
Zyk7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtTG9jYWxDU0UoZGZnKTsKICAgICAKICAgICBpZiAo
dmFsaWRhdGlvbkVuYWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDk2MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICAvLyBBbGwgb2YgdGhlIG91dGVybW9z
dCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgZGVmaW5pdGVseSByZWFkLgorICAgICAgICAg
ICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3Qgc3RhY2sgYXJndW1lbnRzLCBleGNlcHQgdGhpcywg
YXJlIGRlZmluaXRlbHkgcmVhZC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3Jh
cGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAg
ICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcHJvZmlsZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVk
aWN0KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmdd
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAg
ICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpIHx8IG5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
RnJvbVZhbHVlKG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXNbaV0pKTsKICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6
IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Y291
bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyT25seSkpCisgICAg
ICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0FueUludEFzRG91Ymxl
KSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVUludDMy
VG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bh
c3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
Mk9ubHkpOwpAQCAtOTY4LDYgKzk3OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBHZXRM
b2NhbDoKICAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJl
Z2lzdGVyOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICBjYXNlIFZhbHVl
QWRkOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIw
OTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgCiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAgICAgICAKLSAgICAgICAgLy8g
QWxsIG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJlIGxpdmUgYXQgaGVhZCBvZiByb290LiBOb3Rl
IHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCisgICAgICAgIC8vIEFsbCBvZiB0aGUgc3RhY2sg
YXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhlYWQgb2Ygcm9vdC4gTm90ZSB0aGF0IHdlIG1h
eSBmaW5kIHRoYXQgc29tZQogICAgICAgICAvLyBsb2NhbHMgYXJlIGxpdmUgYXQgaGVhZCBvZiBy
b290LiBUaGlzIHNlZW1zIHdyb25nIGJ1dCBpc24ndC4gVGhpcyB3aWxsIGhhcHBlbiBmb3IgZXhh
bXBsZQogICAgICAgICAvLyBpZiB0aGUgZnVuY3Rpb24gYWNjZXNzZXMgY2xvc3VyZSB2YXJpYWJs
ZSAjNDIgZm9yIHNvbWUgb3RoZXIgZnVuY3Rpb24gYW5kIHdlIGVpdGhlciBkb24ndAogICAgICAg
ICAvLyBoYXZlIHZhcmlhYmxlICM0MiBhdCBhbGwgb3Igd2UgaGF2ZW4ndCBzZXQgaXQgYXQgcm9v
dCwgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFzaWNhbGx5IHRoaXMKQEAgLTE1Nyw4ICsxNTcsMTIg
QEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyBGb3Igb3VyIHB1cnBvc2VzIGhlcmUs
IHRoZSBpbXByZWNpc2lvbiBpbiB0aGUgYWxpYXNpbmcgaXMgaGFybWxlc3MuIEl0IGp1c3QgbWVh
bnMgdGhhdCB3ZQogICAgICAgICAvLyBtYXkgbm90IGRvIGFzIG11Y2ggUGhpIHBydW5pbmcgYXMg
d2Ugd2FudGVkLgotICAgICAgICBmb3IgKHNpemVfdCBpID0gbGl2ZUF0SGVhZC5hdEluZGV4KDAp
Lm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0gICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRleCgwKS5hcmd1bWVudChpKSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0SW5kZXgoMCkubnVtYmVyT2ZBcmd1bWVudHMo
KTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGkgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAgIC8vIFN0YWNrIGFyZ3VtZW50cyBh
cmUgbGl2ZSBhdCB0aGUgaGVhZCBvZiByb290LgorICAgICAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5hdEluZGV4KDApLmFyZ3VtZW50KGkpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gTmV4dCBpZGVudGlm
eSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIHNpbmsgUHV0U3RhY2tzIHRvLiBXZSBzYXkgdGhhdCB0
aGVyZSBpcyBhIGRlZmVycmVkCiAgICAgICAgIC8vIGZsdXNoIGlmIHdlIGhhZCBhIFB1dFN0YWNr
IHdpdGggYSBnaXZlbiBGbHVzaEZvcm1hdCBidXQgaXQgaGFzbid0IGJlZW4gbWF0ZXJpYWxpemVk
IHlldC4KQEAgLTM1OCw3ICszNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKE5vZGUq
IG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgotICAgICAgICAgICAgICAgICAgICBwdXRT
dGFja3NUb1NpbmsuYWRkKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgc3NhQ2Fs
Y3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYW5kVG9WYXJpYWJs
ZS5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jaywgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKQEAgLTQ4MywxMSArNDg4
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBkZWxldGUgYXJndW1lbnQg
UHV0U3RhY2tzLCBubyBuZWVkIHRvIGFkZCBvbmUgYmFjay4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250YWlucyhpbmNvbWluZykpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkluc2Vy
dGluZyBhIFB1dFN0YWNrIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIG5vZGUsICJcbiIpOwogCi0g
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9k
ZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtNTM4LDYgKzU0Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmc7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpc0NvbmNyZXRlKGRlZmVycmVkLm9wZXJhbmQob3BlcmFuZCkpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFjay5jb250YWlu
cyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIHBoaU5vZGUsIGluY29taW5n
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElzc3VlIGEgR2V0U3RhY2sgdG8gZ2V0IHRoZSB2YWx1ZS4gVGhpcyBtaWdodCBpbnRyb2R1
Y2Ugc29tZSByZWR1bmRhbmN5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
Z2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fYmFuay0+aXNMb2NrZWRBdEluZGV4KG1f
aW5kZXgpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB1bmxvY2soKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9iYW5rLT51bmxvY2tBdEluZGV4KG1faW5kZXgpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIHJlbGVhc2UoKSBjb25zdAogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2JhbmstPnJlbGVhc2VBdEluZGV4KG1faW5kZXgpOwpAQCAtMjk4
LDYgKzMwMywxMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9kYXRhW2luZGV4XS5sb2Nr
Q291bnQ7CiAgICAgfQogCisgICAgdm9pZCB1bmxvY2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgTlVNX1JFR1MpOworICAgICAgICBBU1NFUlQo
bV9kYXRhW2luZGV4XS5sb2NrQ291bnQpOworICAgICAgICAtLW1fZGF0YVtpbmRleF0ubG9ja0Nv
dW50OworICAgIH0KKwogICAgIFZpcnR1YWxSZWdpc3RlciBuYW1lQXRJbmRleCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IE5VTV9SRUdTKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsOCBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgYWxsIFNldExv
Y2FscyBhbmQgY3JlYXRlIERlZnMgZm9yIHRoZW0uIFdlIGhhbmRsZSBTZXRBcmd1bWVudCBieSBj
cmVhdGluZyBhCi0gICAgICAgIC8vIEdldExvY2FsLCBhbmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBm
b3JtYXQuCisgICAgICAgIC8vIEdldFN0YWNrLCBhbmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBmb3Jt
YXQuIFdlIGhhbmRsZSBHZXRBcmd1bWVudFJlZ2lzdGVyIGJ5IGRpcmVjdGx5CisgICAgICAgIC8v
IGFkZGluZyB0aGUgbm9kZSB0byBtX2FyZ3VtZW50TWFwcGluZyBoYXNoIG1hcC4KICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtODMsMTQgKzg0LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIGFzc2lnbm1lbnQgZm9yIGV2ZXJ5IGxvY2FsLgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+
c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRM
b2NhbCAmJiBub2RlLT5vcCgpICE9IFNldEFyZ3VtZW50KQorICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpICE9IFNldExvY2FsICYmIG5vZGUtPm9wKCkgIT0gU2V0QXJndW1lbnQgJiYgbm9k
ZS0+b3AoKSAhPSBHZXRBcmd1bWVudFJlZ2lzdGVyKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgTm9kZSogY2hpbGROb2RlOworICAgICAgICAgICAgICAgIE5v
ZGUqIGNoaWxkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gU2V0TG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGUtPmNoaWxk
MSgpLm5vZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldEFy
Z3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRNYXBwaW5nLmFk
ZChub2RlLCBub2RlKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTAxLDkgKzEwNCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50R2V0dGVycy5h
ZGQoY2hpbGROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudE1hcHBpbmcuYWRk
KG5vZGUsIGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5uZXdEZWYoCi0gICAgICAgICAgICAgICAgICAg
IG1fc3NhVmFyaWFibGVGb3JWYXJpYWJsZS5nZXQodmFyaWFibGUpLCBibG9jaywgY2hpbGROb2Rl
KTsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jYWxjdWxhdG9yLm5ld0RlZigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3NhVmFy
aWFibGVGb3JWYXJpYWJsZS5nZXQodmFyaWFibGUpLCBibG9jaywgY2hpbGROb2RlKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpAQCAtMjk0LDcgKzI5OSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5s
b2NhbCgpKSA9IGNoaWxkOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgY2FzZSBHZXRB
cmd1bWVudFJlZ2lzdGVyOiB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gbm9kZTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRTdGFjazogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9h
cmd1bWVudEdldHRlcnMuY29udGFpbnMobm9kZSkpOwogICAgICAgICAgICAgICAgICAgICB2YWx1
ZUZvck9wZXJhbmQub3BlcmFuZChub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpID0gbm9k
ZTsKQEAgLTM4MiwxNyArMzkzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT5zc2Eg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dy
YXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmcuc2l6ZSgpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5n
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5n
ZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9h
cmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwotICAgICAgICAg
ICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKKyAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCk7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gdmFyaWFibGUtPmZsdXNoRm9ybWF0KCk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0Fj
Y2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVu
dHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRo
YXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcu
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIEdl
dENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNh
c2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2Fz
ZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAy
MDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBt
X2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZO
ZWVkZWQoZHluYW1pY09yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgCiAgICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwotICAg
IGluZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQ
YXlsb2FkR1BSKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIFN0YWNrQXJncywgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXlsb2FkR1BSKTsKICAgICAKICAgICBhdXRvIHNl
dFJlc3VsdEFuZFJlc2V0U3RhY2sgPSBbJl0gKCkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgbV9qaXQuZW1pdFJl
c3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAK
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTU2MTQsNiArNTYxNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBj
YXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgIGNhc2UgR2V0
QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRz
OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NTIoR1BSUmVnIHNvdQogICAgIHVubG9jayhmcHIp
OwogfQogCi1HUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKK0dQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcgZ3ByVG9V
c2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1
YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAgICAgCiAgICAgc3dpdGNoIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAg
ICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2Nh
dGUoZ3ByVG9Vc2UpOwogCiAgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAg
ICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKQEAgLTEyMCw3ICsx
MjAsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAg
ICAvLyBJZiB0aGUgcmVnaXN0ZXIgaGFzIGFscmVhZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0
YWtlIGEgY29weS4KICAgICAgICAgLy8gSWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFj
ZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdElu
dDMyLCBub3QgRGF0YUZvcm1hdEpTSW50MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQo
Z3ByKSkgewotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOworICAgICAgICAgICAgbV9q
aXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdwclRvVXNl
ICE9IEludmFsaWRHUFJSZWcgJiYgZ3ByICE9IGdwclRvVXNlKSB7CisgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOwogICAgICAgICAgICAgbV9qaXQub3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTEzOCw2ICsxNDMsMTEgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2Vs
bDoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKICAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7CisgICAgICAgIGlmIChncHJUb1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdw
ciAhPSBncHJUb1VzZSkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdw
clRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwog
ICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KQEAgLTYzMiw2ICs2NDIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogewogICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7
CisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAg
ICAgYm9vbCBpc1ZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBm
YWxzZTsKICAgICBib29sIGlzVGFpbCA9IGZhbHNlOwpAQCAtNzE0LDcgKzcyNSwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBHUFJSZWcgY2FsbGVl
R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0
YTsKLSAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiB0YWlsQ2FsbGVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBjYWxsZWVHUFJUZW1wb3Jhcnk7CisKKyAg
ICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OkRGR0NhbGxlcik7CisKICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgIGlmIChpc0RpcmVjdCkgewpAQCAtNzMz
LDYgKzc0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUjsKICAgICAgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xv
dHMgPSBtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hpbmVMb2NhbDsKICAgICAgICAgCisgICAgICAg
IGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6Q2FsbFZhcmFyZ3MpOwogICAgICAgICBpZiAo
aXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKQEAgLTg0MSwxNSArODU3LDI1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpc1RhaWwpIHsKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6VGFp
bENhbGwpOwogICAgICAgICAgICAgRWRnZSBjYWxsZWVFZGdlID0gbV9qaXQuZ3JhcGgoKS5jaGls
ZChub2RlLCAwKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxs
ZWVFZGdlKTsKLSAgICAgICAgICAgIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKKyAgICAgICAg
ICAgIC8vIFdlIGNhbid0IGdldCB0aGUgYSBzcGVjaWZpYyByZWdpc3RlciBmb3IgdGhlIGNhbGxl
ZSwgc2luY2UgdGhhdCB3aWxsIGp1c3QgbW92ZQorICAgICAgICAgICAgLy8gZnJvbSBhbnkgY3Vy
cmVudCByZWdpc3Rlci4gIFdoZW4gd2Ugc2lsZW50IGZpbGwgaW4gdGhlIHNsb3cgcGF0aCB3ZSds
bCBmaWxsCisgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgcmVnaXN0ZXIgYW5kIHdvbid0IGhh
dmUgdGhlIGNhbGxlZSBpbiB0aGUgcmlnaHQgcmVnaXN0ZXIuCisgICAgICAgICAgICAvLyBUaGVy
ZWZvcmUgd2UgYWxsb2NhdGUgYSB0ZW1wIHJlZ2lzdGVyIGZvciB0aGUgY2FsbGVlIGFuZCBtb3Zl
IG91cnNlbHZlcy4KKyAgICAgICAgICAgIHRhaWxDYWxsZWUuZW1wbGFjZSh0aGlzLCBjYWxsZWVF
ZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyB0YWlsQ2FsbGVlR1BSID0gdGFpbENhbGxlZS0+Z3By
KCk7CisgICAgICAgICAgICBjYWxsZWVHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7
CisgICAgICAgICAgICBpZiAodGFpbENhbGxlZUdQUiAhPSBjYWxsZWVHUFIpCisgICAgICAgICAg
ICAgICAgY2FsbGVlR1BSVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIGNhbGxlZUdQUik7
CiAgICAgICAgICAgICBpZiAoIWlzRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxlZS51c2Uo
KTsKKyAgICAgICAgICAgICAgICB0YWlsQ2FsbGVlLT51c2UoKTsKIAorICAgICAgICAgICAgYXJn
dW1lbnRzTG9jYXRpb24gPSBhcmd1bWVudHNMb2NhdGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsK
KyAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzID0gYXJndW1lbnRz
TG9jYXRpb24gIT0gU3RhY2tBcmdzOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51
bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgICAgIHNodWZm
bGVEYXRhLm51bUxvY2FscyA9IG1faml0LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCk7Ci0g
ICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxs
ZWVHUFIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppbkdQUih0YWlsQ2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOwogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEuYXJncy5yZXNpemUobnVtQWxsb2NhdGVkQXJncyk7CiAKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kpIHsKQEAg
LTg2NCw3ICs4OTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNv
bnN0YW50KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENh
bGxlZVNhdmVSZWdpc3RlcnMobV9qaXQuY29kZUJsb2NrKCkpOwotICAgICAgICB9IGVsc2Ugewor
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAg
IC8vIENhbGxFdmFsIGlzIGhhbmRsZWQgd2l0aCB0aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawog
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51
bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKQEAgLTg3OCwxNSArOTA1LDU3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFy
Z3M7ICsraSkKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKworICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZNOjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAw
OykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBwbGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVn
aXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOworICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRn
ZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAx
ICsgaV07CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2Us
IHBsYXRmb3JtQXJnR1BSKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdw
cigpOworICAgICAgICAgICAgICAgIEFTU0VSVChhcmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwg
cGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZyk7CisKKyAgICAgICAgICAgICAgICAvLyBP
bmx5IGZyZWUgdGhlIG5vbi1hcmd1bWVudCByZWdpc3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAg
ICAgICAgICAgICBpZiAocGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAg
ICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoYXJnR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJn
dW1lbnQgZWRnZXMgZm9yIGFyZ3VtZW50cyBwYXNzZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaS0tID4gMDspIHsKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoaSk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdD
aGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgICAg
IHVzZShhcmdFZGdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSBhcmdDb3VudCh0aGlzLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJn
dW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IGFyZ0NvdW50
LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJn
cyksIGFyZ0NvdW50R1BSKTsKKyAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1l
bnRzTG9jYXRpb25Gb3IobnVtQWxsb2NhdGVkQXJncyk7CisKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgcGxhdGZvcm1BcmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9y
RnVuY3Rpb25Bcmd1bWVudChpKTsKKworICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUFyZ0dQ
UiA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0
ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkp
KTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBwbGF0Zm9ybUFyZ0dQUik7CisgICAgICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghaXNUYWlsIHx8IGlzVmFyYXJncyB8
fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0Lmdy
YXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlz
LCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxl
ZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CiAgICAgICAgIGNhbGxlZUdQUiA9
IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVlLnVzZSgpOwotICAgICAgICBtX2ppdC5zdG9y
ZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90
OjpjYWxsZWUpKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykK
KyAgICAgICAgICAgIG1faml0LnN0b3JlNjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVl
RnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgfQpAQCAtOTEzLDcgKzk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKICAgICB9OwogICAgIAogICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxlZUdQUik7CisgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFy
Z3VtZW50c0xvY2F0aW9uLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQ
Uik7CiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBDYWxsRXZhbCkgewogICAgICAgICAvLyBXZSB3
YW50IHRvIGNhbGwgb3BlcmF0aW9uQ2FsbEV2YWwgYnV0IHdlIGRvbid0IHdhbnQgdG8gb3Zlcndy
aXRlIHRoZSBwYXJhbWV0ZXIgYXJlYSBpbgpAQCAtOTU0LDggKzEwMjMsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICBpZiAoaXNUYWlsKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IERpcmVjdFRhaWxDYWxsKTsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBzdGQ6
Om51bGxvcHQpCisgICAgICAgICAgICAgICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwg
Y2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIoKSk7CisKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpQ
YXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgbWFpblBhdGggPSBtX2ppdC5sYWJlbCgpOworCisg
ICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAg
ICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1faml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUp
OwogICAgICAgICAgICAgCkBAIC05NzEsNiArMTA0Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TGlua0RpcmVjdENhbGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKICAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgaWYgKGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBz
dGQ6Om51bGxvcHQpCisgICAgICAgICAgICAgICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIo
KSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5qdW1wKCku
bGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICB1c2VD
aGlsZHJlbihub2RlKTsKQEAgLTk4MSw2ICsxMDU4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVs
IG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgbV9qaXQuZW1pdFN0b3Jl
Q2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsID0gbV9qaXQubmVhckNhbGwoKTsKQEAgLTk4OCwyMCArMTA2NywyNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIAogICAgICAgICBK
SVRDb21waWxlcjo6TGFiZWwgc2xvd1BhdGggPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICBpZiAo
aXNYODYoKSkKLSAgICAgICAgICAgIG1faml0LnBvcChKSVRDb21waWxlcjo6c2VsZWN0U2NyYXRj
aEdQUihjYWxsZWVHUFIpKTsKKyAgICAgICAgICAgIG1faml0LnBvcChHUFJJbmZvOjpub25BcmdH
UFIwKTsKKworICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMg
dG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9
IG1faml0Lm5lYXJDYWxsKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5r
RGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBjYWxsZWVHUFIpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9q
aXQpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAg
ICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5h
ZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xvd1BhdGgsIGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAg
bV9qaXQuYWRkSlNEaXJlY3RDYWxsKGNhbGwsIHNsb3dDYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJ
bmZvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChpc1RhaWwgJiYg
Y2FsbGVlR1BSVGVtcG9yYXJ5ICE9IHN0ZDo6bnVsbG9wdCkKKyAgICAgICAgbV9qaXQubW92ZSh0
YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIoKSk7CisKICAgICBtX2pp
dC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CkBAIC0xMDI1LDIzICsxMTA5LDIyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIGlmIChub2RlLT5v
cCgpID09IFRhaWxDYWxsKSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIGNhbGxGcmFtZVNo
dWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSk7Ci0gICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnNl
dENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAg
IGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFja0FyZ3MpCisgICAgICAgICAgICBjYWxsRnJh
bWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkpKTsKICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIucHJlcGFyZUZvclNs
b3dQYXRoKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQ
UkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0KLSAgICAgICAg
aWYgKGlzVGFpbCkKLSAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsg
Ly8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1Qw
Ci0gICAgfQorICAgIH0gZWxzZSBpZiAoaXNUYWlsKQorICAgICAgICBtX2ppdC5lbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRz
IHRvIGJlIGluIHJlZ1QyCisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5l
ZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9
IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIAotICAgIGlmIChp
c1RhaWwpCisgICAgaWYgKGlzVGFpbCkgeworICAgICAgICB0YWlsQ2FsbGVlID0gc3RkOjpudWxs
b3B0OworICAgICAgICBjYWxsZWVHUFJUZW1wb3JhcnkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IG1faml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwotICAgIGVs
c2UKKyAgICB9IGVsc2UKICAgICAgICAgc2V0UmVzdWx0QW5kUmVzZXRTdGFjaygpOwogCiAgICAg
bV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbExp
bmtJbmZvKTsKQEAgLTQxNjYsNiArNDI0OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1
bWVudFJlZ2lzdGVyOgorICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0
UmVzdExlbmd0aDogewogICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcg
QEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZlSklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0
R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5cGUpCiAgICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAg
ICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQor
ICAgICwgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZvKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpCiAgICAgLCBtX3N0YXRlKG1faml0Lmdy
YXBoKCkpCiAgICAgLCBtX2ludGVycHJldGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAg
LCBtX3N0cmVhbSgmaml0LmppdENvZGUoKS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2
ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kp
CiAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9baV0gPSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZv
KCk7CiAgICAgbV9ncHJzID0gUmVnaXN0ZXJCYW5rPEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0g
UmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7CiB9CkBAIC0xMTk5LDYgKzEyMDIsMjUgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJpbmcoRGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zv
cm1hdF07CiB9CiAKK3N0YXRpYyB2b2lkIGR1bXBSZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8m
IGluZm8sIHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAg
IGRhdGFMb2dGKCIgICAgJSAzZDolcyVzIiwgaW5kZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5y
ZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsK
KyAgICBlbHNlCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsK
KyAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAg
ICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgICYmICEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2Vu
ZGlmCisgICAgICAgICkgeworICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8u
Z3ByKCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0YoIlxuIik7Cit9CisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVs
KQpAQCAtMTIwOCwyNSArMTIzMCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0
IGNoYXIqIGxhCiAgICAgbV9ncHJzLmR1bXAoKTsKICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7
CiAgICAgbV9mcHJzLmR1bXAoKTsKLSAgICBkYXRhTG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxu
Iik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZv
W2ldOwotICAgICAgICBpZiAoaW5mby5hbGl2ZSgpKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAg
ICAlIDNkOiVzJXMiLCBpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSks
IGRhdGFGb3JtYXRTdHJpbmcoaW5mby5zcGlsbEZvcm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwotICAgICAgICBpZiAo
aW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBk
YXRhTG9nRigiOmZwciVkXG4iLCBpbmZvLmZwcigpKTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5y
ZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICAgICAgICAgICYmICEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQot
I2VuZGlmCi0gICAgICAgICAgICApIHsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9
IEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6
ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRh
TG9nRigiXG4iKTsKLSAgICB9CisKKyAgICBkYXRhTG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVn
aXN0ZXJzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5l
cmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3Vt
ZW50R2VuZXJhdGlvbkluZm9baV0sIGkpOworCisgICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVh
bFJlZ2lzdGVyczpcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRp
b25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBkdW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlv
bkluZm9baV0sIGkpOworCiAgICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5c
biIsIGxhYmVsKTsKIH0KQEAgLTE2NzcsNiArMTY4OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAKICAgICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9j
ay0+aW5kZXhdID0gbV9qaXQubGFiZWwoKTsKIAorICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisg
ICAgICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOworCiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNl
Y3Rpb25PZkNGQUhhc1Zpc2l0ZWQpIHsKICAgICAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBm
b3IgYmFzaWMgYmxvY2tzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAg
ICAgICAgIC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQgbm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1w
IHRvIHRoaXMgYmxvY2ssIGRyb3AgaW4gYQpAQCAtMTY4Nyw2ICsxNzAyLDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFu
ZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKKyAgICBpZiAoIW1fYmxvY2stPmlu
ZGV4KQorICAgICAgICBzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKTsKKyAgICAKICAg
ICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgIG1faml0LmppdEFzc2Vy
dFRhZ3NJblBsYWNlKCk7CiAgICAgbV9qaXQuaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKTsK
QEAgLTE2OTYsNiArMTcxNCwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVu
dEJsb2NrCiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5zaXplKCk7IGktLTspIHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJs
ZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpOworICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4
ICYmIG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOwor
ICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50
c0ZvckNoZWNraW5nW2FyZ3VtZW50XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFy
Z3VtZW50Tm9kZSAmJiBhcmd1bWVudE5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikg
eworICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlLT5yZWZDb3VudCgpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsgLy8gTm8gbmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1
bWVudFJlZ2lzdGVycydzLgorICAgICAgICAgICAgICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2co
CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBNaW5pZmllZElEKGFyZ3VtZW50Tm9kZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudE5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Js
b2NrLT52YXJpYWJsZXNBdEhlYWRbaV07CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzgy
LDEzICsxODE1LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygK
ICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwg
dHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5t
X2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1
bWVudHNGb3JDaGVja2luZ1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAv
LyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBh
cmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudAorICAgICAgICAgICAgfHwgKG5vZGUtPm9wKCkgPT0g
U2V0TG9jYWwgJiYgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikK
KyAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5zaG91bGRHZW5lcmF0ZSgpKTsKIAogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OwpAQCAtMTc5OSwyMyArMTgzNCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3Vt
ZW50VHlwZXMoCiAgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwogCi0gICAgICAgIEpTVmFsdWVTb3Vy
Y2UgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlcikpOwotICAgICAgICAKKyAgICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNv
dXJjZTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZ2lz
dGVyID0gSW52YWxpZEdQUlJlZzsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSA8IE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50UmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAg
ICAgICAgICAgIHZhbHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShhcmd1bWVudFJlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgdmFsdWVTb3VyY2Ug
PSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlcikp
OworCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6IHsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3Rl
ciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgYXJndW1lbnRSZWdpc3RlciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3Zl
KGFyZ3VtZW50UmVnaXN0ZXIsIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQu
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChh
cmd1bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmd1bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE4NDYsMTAgKzE5MDIsMzYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9k
ZU9yaWdpbigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzZXR1cEFyZ3VtZW50UmVnaXN0
ZXJzRm9yRW50cnkoKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMKKyAgICBCYXNpY0Jsb2NrKiBmaXJzdEJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jaygw
KTsKKworICAgIC8vICAmJiYmICBSZXZpc2l0IHRoaXMgdG8gdXNlIG1fYXJndW1lbnRzRm9yQ2hl
Y2tpbmcKKyAgICBmb3IgKHNpemVfdCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBm
aXJzdEJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBmaXJzdEJsb2NrLT5hdChpbmRleEluQmxvY2spOworCisgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRSZWcgPSBHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRSZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFy
Z3VtZW50UmVnKSk7CisgICAgICAgICAgICBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhhcmd1bWVu
dFJlZyk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGFyZ3VtZW50UmVnLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBpbmZvLmluaXRBcmd1bWVudFJlZ2lz
dGVyVmFsdWUobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgYXJndW1lbnRSZWcsIERhdGFGb3JtYXRK
Uyk7CisgICAgICAgICAgICBpbmZvLm5vdGljZU9TUkJpcnRoKCptX3N0cmVhbSwgbm9kZSwgdmly
dHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIC8vIERvbid0IGxlYXZlIGFyZ3VtZW50IHJlZ2lz
dGVycyBsb2NrZWQuCisgICAgICAgICAgICBtX2dwcnMudW5sb2NrKGFyZ3VtZW50UmVnKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCiBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KCkKIHsKLSAgICBjaGVja0FyZ3VtZW50VHlwZXMoKTsKLSAgICAKICAgICBBU1NFUlQoIW1fY3Vy
cmVudE5vZGUpOwogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRl
eCA8IG1faml0LmdyYXBoKCkubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICBt
X2ppdC5zZXRGb3JCbG9ja0luZGV4KGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjA5NjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIEdQUlJlZyBmaWxsSlNWYWx1ZShFZGdlKTsKKyAgICBHUFJSZWcgZmlsbEpT
VmFsdWUoRWRnZSwgR1BSUmVnIGdwclRvVXNlID0gSW52YWxpZEdQUlJlZyk7CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIGJvb2wgZmlsbEpTVmFsdWUoRWRnZSwgR1BSUmVnJiwgR1BSUmVn
JiwgRlBSUmVnJik7CiAjZW5kaWYKQEAgLTIwMCw2ICsyMDAsOSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCiAgICAgICAgIG1faml0LmFk
ZFJlZ2lzdGVyQWxsb2NhdGlvbkF0T2Zmc2V0KG1faml0LmRlYnVnT2Zmc2V0KCkpOwogI2VuZGlm
CisgICAgICAgIGlmIChzcGVjaWZpYyA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKCk7CisKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUgPSBtX2dw
cnMuYWxsb2NhdGVTcGVjaWZpYyhzcGVjaWZpYyk7CiAgICAgICAgIGlmIChzcGlsbE1lLmlzVmFs
aWQoKSkgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0zMTUsNiArMzE4LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjaGVja0FyZ3VtZW50VHlwZXMoKTsKIAorICAgIHZvaWQgc2V0dXBBcmd1
bWVudFJlZ2lzdGVyc0ZvckVudHJ5KCk7CisKICAgICB2b2lkIGNsZWFyR2VuZXJhdGlvbkluZm8o
KTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nICd1bmV4
cGVjdGVkJwpAQCAtNDg1LDYgKzQ5MCw5IEBAIHB1YmxpYzoKICAgICAvLyBTcGlsbCBhIFZpcnR1
YWxSZWdpc3RlciB0byB0aGUgSlNTdGFjay4KICAgICB2b2lkIHNwaWxsKFZpcnR1YWxSZWdpc3Rl
ciBzcGlsbE1lKQogICAgIHsKKyAgICAgICAgaWYgKHNwaWxsTWUuaXNBcmd1bWVudCgpICYmIG1f
YmxvY2stPmluZGV4ID4gMCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3RlcihzcGlsbE1l
KTsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0yODcyLDcgKzI4ODAsMTAgQEAgcHVibGlj
OgogCiAgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIGlm
ICh2aXJ0dWFsUmVnaXN0ZXIuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ2VuZXJh
dGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIEFTU0VSVCh2aXJ0
dWFsUmVnaXN0ZXIuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRHZW5l
cmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCldOwogICAgIH0KICAgICAKICAgICBH
ZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKQEAgLTI4OTUsNiArMjkw
Niw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICAvLyBWaXJ0
dWFsIGFuZCBwaHlzaWNhbCByZWdpc3RlciBtYXBzLgogICAgIFZlY3RvcjxHZW5lcmF0aW9uSW5m
bywgMzI+IG1fZ2VuZXJhdGlvbkluZm87CisgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZvLCA4PiBt
X2FyZ3VtZW50R2VuZXJhdGlvbkluZm87CiAgICAgUmVnaXN0ZXJCYW5rPEdQUkluZm8+IG1fZ3By
czsKICAgICBSZWdpc3RlckJhbms8RlBSSW5mbz4gbV9mcHJzOwogCkBAIC0yOTkzLDYgKzMwMDUs
MjAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBl
eHBsaWNpdCBKU1ZhbHVlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIEdQ
UlJlZyByZWdUb1VzZSkKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVk
Z2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSB8fCByZWdUb1VzZSAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgZ3ByVXNlU3BlY2lmaWMocmVnVG9Vc2UpOworICAgIH0K
KyNlbmRpZgorICAgIAogICAgIH5KU1ZhbHVlT3BlcmFuZCgpCiAgICAgewogICAgICAgICBpZiAo
IW1fZWRnZSkKQEAgLTMwMjksNiArMzA1NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dw
ck9ySW52YWxpZCA9IG1faml0LT5maWxsSlNWYWx1ZShtX2VkZ2UpOwogICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CiAgICAgfQorICAgIEdQUlJlZyBncHJVc2VTcGVjaWZpYyhHUFJSZWcg
cmVnVG9Vc2UpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1f
ZWRnZSwgcmVnVG9Vc2UpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQog
ICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlUmVncyhncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3Niw2ICsyNzYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Tm9kZSogc2V0TG9jYWwgPSBudWxscHRyOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxv
Y2FsID0gbV9ub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobG9j
YWwuaXNBcmd1bWVudCgpICYmIG1fZ3JhcGgubV9zdHJlbmd0aFJlZHVjZUFyZ3VtZW50cyAhPSBP
cHRpbWl6ZUFyZ3VtZW50Rmx1c2hlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ub2RlSW5kZXg7IGktLTspIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gU2V0TG9jYWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2NhbCkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsMTUgKzEzMCwzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVu
a0dlbmVyCiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoUmVn
aXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoaW50MzJfdCkpKSk7CiAgICAg
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QxLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1zdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkpLmxpbmtU
byhsb29wLCAmaml0KTsKICAgICAKLSAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJlZ1QxKTsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7CisgICAg
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9mZnNl
dE9mVGFyZ2V0UEMpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpu
b25BcmdHUFIwLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxMDAwKSkpKTsKICAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxp
bmsoJmppdCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAg
ICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFy
Z0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQu
bG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgYXJnQ291bnRSZWcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBkb25lTG9hZGluZ0FyZ3M7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7
IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJn
SW5kZXgrKykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFy
Z0luZGV4KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGRvbmVMb2Fk
aW5nQXJncy5saW5rKCZqaXQpOworI2VuZGlmCisgICAgCiAgICAgaml0LnJlc3RvcmVDYWxsZWVT
YXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpOwogICAgIGppdC5lbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogCi0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVn
VDEpOworICAgIGppdC5qdW1wKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBlbnRyeSB0aHVuayIpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEz
MywxMyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIGlmICgh
aW5kZXgpIHsKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzID0gT3BlcmFuZHM8VmFsdWVSZWNvdmVy
eT4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpT
U3RhY2soCi0gICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5v
cGVyYW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgaWYgKGkgPCBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAg
ICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoCisgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpLCBEYXRhRm9y
bWF0SlMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJlY292
ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVJlY292ZXJpZXMub3BlcmFuZEZvckluZGV4
KGkpKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTYxLDYgKzE2NiwxMyBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJl
YW06OnJlY29uc3RydWN0KAogICAgICAgICAgICAgTWluaWZpZWRHZW5lcmF0aW9uSW5mbyBpbmZv
OwogICAgICAgICAgICAgaW5mby51cGRhdGUoZXZlbnQpOwogICAgICAgICAgICAgZ2VuZXJhdGlv
bkluZm9zLmFkZChldmVudC5pZCgpLCBpbmZvKTsKKyAgICAgICAgICAgIE1pbmlmaWVkTm9kZSog
bm9kZSA9IGdyYXBoLmF0KGV2ZW50LmlkKCkpOworICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByID0gZXZlbnQuZ3ByKCk7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnQgPSBqc0Z1bmN0aW9uQXJndW1lbnRGb3JBcmd1bWVudFJlZ2lzdGVy
KGdwcik7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50UmVnID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgIG9wZXJh
bmRTb3VyY2VzLnNldE9wZXJhbmQoYXJndW1lbnRSZWcsIFZhbHVlU291cmNlKGV2ZW50LmlkKCkp
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRmlsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMzMgQEAgcHVi
bGljOgogICAgICAgICA6IFBoYXNlKGdyYXBoLCAidmlydHVhbCByZWdpc3RlciBhbGxvY2F0aW9u
IikKICAgICB7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBhbGxvY2F0ZVJlZ2lzdGVyKFNjb3Jl
Qm9hcmQmIHNjb3JlQm9hcmQsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBGaXJzdCwg
Y2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJlbiwgdGhlbgorICAg
ICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBz
byBpbiB0aGlzCisgICAgICAgIC8vIG9yZGVyIHNvIHRoYXQgaWYgYSBjaGlsZCBpcyBvbiBpdHMg
bGFzdCB1c2UsIGFuZCBhCisgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhl
biBpdCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgorICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAm
IE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0g
bm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUt
Pm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51
c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUtPmNo
aWxkMygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKKyAgICAgICAgbm9kZS0+c2V0VmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIC8vICdtdXN0R2VuZXJhdGUnIG5vZGVz
IGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5IGVsZXZhdGVkLAorICAgICAgICAvLyBj
YWxsIHVzZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAgICAgICAgaWYgKG5vZGUtPm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICAgICAgc2NvcmVCb2FyZC51c2Uobm9kZSk7CisgICAgfQorCiAg
ICAgYm9vbCBydW4oKQogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRy
LCBtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CkBAIC01OSw2ICs4NSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXNhZ2Ugb2YgaGlnaGVzdC1udW1iZXJlZCB2
aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnNvcnRGcmVlKCk7
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBHZXRBcmd1bWVudFJlZ2lz
dGVyIE5vZGVzIGZpcnN0IGFzIHRoZSByZWdpc3RlciBpcyBhbGl2ZSBvbiBlbnRyeQorICAgICAg
ICAgICAgLy8gdG8gdGhlIGZ1bmN0aW9uIGFuZCBtYXkgbmVlZCB0byBiZSBzcGlsbGVkIGJlZm9y
ZSBhbnkgdXNlLgorICAgICAgICAgICAgaWYgKCFibG9ja0luZGV4KSB7CisgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNp
emUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgYWxs
b2NhdGVSZWdpc3RlcihzY29yZUJvYXJkLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9IDA7IGlu
ZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAKQEAg
LTczLDMyICsxMTAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+Y2hpbGQxKCktPmhhc1Jlc3VsdCgp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHZXRB
cmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgp
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRmlyc3QsIGNhbGwgdXNlIG9uIGFsbCBvZiB0
aGUgY3VycmVudCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KLSAgICAgICAgICAgICAgICAvLyBhbGxv
Y2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBzbyBpbiB0aGlzCi0g
ICAgICAgICAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBsYXN0
IHVzZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAvLyBWaXJ0dWFsUmVnaXN0ZXIgaXMgZnJlZWQs
IHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4KLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+
Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuW2NoaWxkSWR4XSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hpbGQy
KCkpOwotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUt
PmNoaWxkMygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUtPmhhc1Jlc3VsdCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJkLmFs
bG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0VmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2
ZSB0aGVpciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCi0gICAgICAgICAgICAgICAg
Ly8gY2FsbCB1c2Ugbm93IHRvIGFjY291bnQgZm9yIHRoaXMuCi0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm11c3RHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVz
ZShub2RlKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQsIG5v
ZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2NvcmVCb2FyZC5hc3NlcnRDbGVhcigp
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRF
eGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBHZXRDYWxsZWU6CisgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM6CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAyMDk2Mjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw3ICs0NSw4IEBAIEpJVENvZGU6On5KSVRDb2RlKCkKICAgICAgICAgZGF0YUxv
ZygiRGVzdHJveWluZyBGVEwgSklUIGNvZGUgYXQgIik7CiAgICAgICAgIENvbW1hUHJpbnRlciBj
b21tYTsKICAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9iM0NvZGUpOwotICAgICAgICBkYXRhTG9n
KGNvbW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgZGF0YUxvZyhjb21tYSwg
bV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQpOworICAgICAgICBkYXRh
TG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeVBvaW50KTsKICAgICAgICAg
ZGF0YUxvZygiXG4iKTsKICAgICB9CiB9CkBAIC02MCwzMSArNjEsMzAgQEAgdm9pZCBKSVRDb2Rl
Ojppbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZAogICAgIG1fYjNCeXByb2R1Y3RzID0gV1RGTW92
ZShieXByb2R1Y3RzKTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0ZvckNh
bGwoQ29kZVB0ciBhZGRyZXNzKQordm9pZCBKSVRDb2RlOjppbml0aWFsaXplRW50cnlwb2ludFRo
dW5rKENvZGVSZWYgZW50cnlwb2ludFRodW5rKQogewotICAgIG1fYWRkcmVzc0ZvckNhbGwgPSBh
ZGRyZXNzOworICAgIG1fZW50cnlwb2ludFRodW5rID0gZW50cnlwb2ludFRodW5rOwogfQogCi12
b2lkIEpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludChDb2RlUmVmIGVudHJ5
cG9pbnQpCit2b2lkIEpJVENvZGU6OnNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUsIENv
ZGVQdHIgZW50cnkpCiB7Ci0gICAgbV9hcml0eUNoZWNrRW50cnlwb2ludCA9IGVudHJ5cG9pbnQ7
CisgICAgbV9lbnRyeXBvaW50cy5zZXRFbnRyeUZvcih0eXBlLCBlbnRyeSk7CiB9Ci0KLUpJVENv
ZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHlD
aGVjaykKKyAgICAKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoRW50
cnlQb2ludFR5cGUgZW50cnlUeXBlKQogewotICAgIHN3aXRjaCAoYXJpdHlDaGVjaykgewotICAg
IGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICByZXR1cm4gbV9hZGRyZXNzRm9y
Q2FsbDsKLSAgICBjYXNlIE11c3RDaGVja0FyaXR5OgotICAgICAgICByZXR1cm4gbV9hcml0eUNo
ZWNrRW50cnlwb2ludC5jb2RlKCk7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIENvZGVQdHIoKTsKKyAgICBDb2RlUHRyIGVudHJ5ID0gbV9lbnRy
eXBvaW50cy5lbnRyeUZvcihlbnRyeVR5cGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5KTsK
KyAgICByZXR1cm4gZW50cnk7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hl
Y2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZWxzZQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworI2Vu
ZGlmCiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CiAgICAgfkpJVENvZGUo
KTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRl
OworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlk
ZTsKICAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJyaWRl
OwpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVCM0NvZGUo
Q29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZDo6dW5pcXVlX3B0
cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4pOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFkZHJlc3NGb3JD
YWxsKENvZGVQdHIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KENv
ZGVSZWYpOwotICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2RlUmVm
KTsKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlLCBDb2RlUHRyKTsKKwogICAg
IHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgb3ZlcnJp
ZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9u
SGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsKQEAg
LTc3LDcgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxsOwog
ICAgIENvZGVSZWYgbV9iM0NvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVCeXBy
b2R1Y3RzPiBtX2IzQnlwcm9kdWN0czsKLSAgICBDb2RlUmVmIG1fYXJpdHlDaGVja0VudHJ5cG9p
bnQ7CisgICAgQ29kZVJlZiBtX2VudHJ5cG9pbnRUaHVuazsKKyAgICBKSVRFbnRyeVBvaW50cyBt
X2VudHJ5cG9pbnRzOworICAgIENvZGVQdHIgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJn
c0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeVBv
aW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NBcml0eU9LRW50cnlQb2ludDsKKyAgICBDb2Rl
UHRyIG1fc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5cG9pbnQ7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRG
aW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
Ym9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgZHVtcERp
c2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIEIzIGNvZGUg
Zm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ss
IEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsKIAotICAgIGppdENvZGUtPmluaXRpYWxpemVB
cml0eUNoZWNrRW50cnlwb2ludCgKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplRW50cnlwb2ludFRo
dW5rKAogICAgICAgICBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICAgICAgZHVtcERpc2Fzc2Vt
Ymx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50
IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENv
ZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRh
dGEoKSwgZnVuY3Rpb24pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExp
bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDExMCBAQCB2b2lkIGxpbmsoU3Rh
dGUmIHN0YXRlKQogICAgIAogICAgIHN3aXRjaCAoZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAgICBj
YXNlIEZUTE1vZGU6IHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1
bXBzOwotICAgIAotICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgZnJhbWUud2l0aE9m
ZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksCi0g
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5k
KGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoOworICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IHRvTWFpblBhdGg7CisKKyAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVy
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Cisg
ICAgICAgIHVuc2lnbmVkIG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKG51bVBh
cmFtZXRlcnMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworCisg
ICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENv
dW50KCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c0Vu
dHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKyAxXTsK
KworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdpc3Rl
ciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgLSAxOyBhcmdJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleC0tKSB7
CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRleCAr
IDFdID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRv
Q2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmNy
ZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEpOworICAgICAgICAgICAgdG9NYWlu
UGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9Bcml0eUZpeHVwOworCisgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5ID0gaml0LmxhYmVsKCk7CisgICAgICAg
IGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlN0YWNrQXJnc0FyaXR5KTsKKyAgICAgICAgaml0
LmxvYWQzMihmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBjb250aW51ZVRvQXJp
dHlGaXh1cC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpC
ZWxvdywgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihudW1QYXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWVUb1N0YWNrQXJpdHlPayA9IGppdC5qdW1wKCk7
CisjZW5kaWYKKworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0FyaXR5T0tF
bnRyeSA9IGppdC5sYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06
OlN0YWNrQXJnc0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAgY29u
dGludWVUb1N0YWNrQXJpdHlPay5saW5rKCZqaXQpOworI2VuZGlmCisKKyAgICAgICAgLy8gTG9h
ZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAgICAvLyBG
SVhNRTogV291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UgdG8gbG9hZCwgYnV0IHdlIGN1cnJl
bnRseSBjYW4ndCBqdW1wIGludG8KKyAgICAgICAgLy8gdGhlIEIzIGNvbXBpbGVkIGNvZGUgYXQg
YW4gYXJiaXRyYXJ5IHBvaW50IGZyb20gdGhlIHNsb3cgZW50cnkgd2hlcmUgdGhlCisgICAgICAg
IC8vIHJlZ2lzdGVycyBhcmUgc3RvcmVkIHRvIHRoZSBzdGFjay4KKyAgICAgICAgaml0LmVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
LCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgICAgICBqaXQuZW1pdEdldFBheWxv
YWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgbWF4UmVnaXN0ZXJBcmd1bWVu
dENvdW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1l
QXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKworICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQu
anVtcCgpKTsKKworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJnc0NoZWNr
QXJpdHlFbnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQs
IFZNOjpSZWdBcmdzQXJpdHkpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgY29u
dGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBj
aGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHM7CisKKyAgICAgICAgaWYgKG51bVBhcmFtZXRl
cnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAg
ICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG51bVBhcmFtZXRlcnMpKSk7CisgICAgICAgICAgICBjb250aW51ZVRvUmVnaXN0ZXJBcml0eUZp
eHVwLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpC
ZWxvdywgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFtZXRl
cnMpKSk7CisgICAgICAgICAgICAvLyAgRmFsbCB0aHJvdWdoIHRvIHRoZSAiZXh0cmEgcmVnaXN0
ZXIgYXJpdHkiIGNhc2UuCisKKyAgICAgICAgICAgIGNoZWNrRm9yRXh0cmFSZWdpc3RlckFyZ3Vt
ZW50cyA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJlZ2lz
dGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0aGUgc3RhY2suCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gbnVtUGFyYW1ldGVyczsgYXJnSW5kZXggPCBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7Cisg
ICAgICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
YXJnSW5kZXgpKSk7CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZy
YW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJn
SW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5QYXRo
LmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1Q
YXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250aW51
ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChqaXQuanVtcCgpKTsKKyNlbmRpZgorCisgICAg
ICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAgICAgLy8gIFRoZXJlIHNob3Vs
ZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gaml0LmxhYmVsKCk7CisK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8IG51bVBh
cmFtZXRlcnMgJiYgYXJnSW5kZXggPD0gbWF4UmVnaXN0ZXJBcmd1bWVudENvdW50OyBhcmdJbmRl
eCsrKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJnSW5k
ZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAgICAgICAgfQorCisjaWYg
RU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpS
ZWdBcmdzQXJpdHkpOworI2VuZGlmCisKKyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJpdHlG
aXh1cC5saW5rKCZqaXQpOworCisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9G
cmFtZUJlZm9yZVByb2xvZ3VlKG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCk7CisKKyAgICAgICAg
Y29udGludWVUb0FyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZqaXQsIFZNOjpBcml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKQEAgLTE1NSwxMSArMjUx
LDIwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgaml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQu
YnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQuYnJh
bmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7
CisKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGguYXBwZW5kKGppdC5q
dW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmxpbmtU
byhzdGFja0FyZ3NBcml0eU9LRW50cnksICZqaXQpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJT
KQorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5ID0gaml0
LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NOb0Fy
aXR5KTsKKyAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisjZW5kaWYKIAog
ICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVm
ZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CkBAIC0xNjksOSArMjc0LDM1IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ss
IGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVj
ayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhj
YWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9u
SGFuZGxlckZyb21DYWxsZXJGcmFtZSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFy
aXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3Ip
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICBsaW5rQnVmZmVyLT5saW5r
KG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsodG9NYWlu
UGF0aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0
ZWRGdW5jdGlvbikpKTsKKworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihTdGFj
a0FyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3NDaGVj
a0FyaXR5RW50cnkpKTsKKyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3RhY2tB
cmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YWNrQXJn
c0FyaXR5T0tFbnRyeSkpOwogCi0gICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRy
ZXNzRm9yQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtYWluRW50cnkgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpOworI2VuZGlmCisgICAgICAgIHN0YXRlLmppdENv
ZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFpbkVu
dHJ5KTsKKworICAgICAgICBpZiAoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzLmlzU2V0
KCkpCisgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NQ
b3NzaWJsZUV4dHJhQXJncywgbGlua0J1ZmZlci0+bG9jYXRpb25PZihjaGVja0ZvckV4dHJhUmVn
aXN0ZXJBcmd1bWVudHMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUuaml0Q29k
ZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIG1haW5FbnRyeSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZv
cihSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdp
c3RlckFyZ3NDaGVja0FyaXR5RW50cnkpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0Nv
dW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVu
dHJ5OworICAgICAgICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAgICAg
ICAgICAgICAgZW50cnkgPSBtYWluRW50cnk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdpc3Rl
ckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAgICAg
IGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9p
bnRzW2FyZ0NvdW50XSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50cnkg
PSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSk7Cisg
ICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6cmVn
aXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xODEsNyArMzEyLDIwIEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIHBvaW50IHdlJ3ZlIGV2ZW4gZG9u
ZSB0aGUgc3RhY2sgY2hlY2suIEJhc2ljYWxseSB3ZSBqdXN0IGhhdmUgdG8gbWFrZSB0aGUKICAg
ICAgICAgLy8gY2FsbCB0byB0aGUgQjMtZ2VuZXJhdGVkIGNvZGUuCiAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc3RhcnQgPSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKKworICAgICAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFy
Z3VtZW50IHJlZ2lzdGVycworCisgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRvIGVsaW1p
bmF0ZSB0aGVzZSB0byBsb2FkLCBidXQgd2UgY3VycmVudGx5IGNhbid0IGp1bXAgaW50bworICAg
ICAgICAvLyB0aGUgQjMgY29tcGlsZWQgY29kZSBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgZnJvbSB0
aGUgc2xvdyBlbnRyeSB3aGVyZSB0aGUKKyAgICAgICAgLy8gcmVnaXN0ZXJzIGFyZSBzdG9yZWQg
dG8gdGhlIHN0YWNrLgorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJCZWZv
cmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxs
ZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJCZWZv
cmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVudFJlZ2lzdGVy
Rm9yQXJndW1lbnRDb3VudCgpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0g
MDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lT
VEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFy
Z3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5Q
YXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CkBAIC0xOTEsNyArMzM1LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgfQogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikp
KTsKIAotICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwobGlu
a0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRF
bnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2Yoc3RhcnQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAgICAg
IG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAorICAg
ICAgICAvLyBTdG9yZSBvdXQgY2FsbGVlIGFuZCBhcmd1bWVudCBjb3VudCBmb3IgcG9zc2libGUg
T1NSIGV4aXQuCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXJJbnQz
Mihhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSwgcGF5bG9hZEZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSk7CisKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
Y29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaykpOwogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgpAQCAtMjQ3LDIwICsy
NTEsMzQgQEAgcHVibGljOgogICAgICAgICAvLyBDaGVjayBBcmd1bWVudHMuCiAgICAgICAgIGF2
YWlsYWJpbGl0eU1hcCgpLmNsZWFyKCk7CiAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9j
YWxzID0gT3BlcmFuZHM8QXZhaWxhYmlsaXR5Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
LCAwKTsKKworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50Tm9kZXM7CisgICAgICAg
IFZlY3RvcjxMVmFsdWUsIDg+IGFyZ3VtZW50VmFsdWVzOworCisgICAgICAgIGFyZ3VtZW50Tm9k
ZXMucmVzaXplKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICBhcmd1bWVu
dFZhbHVlcy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAgICAg
bV9oaWdoQmxvY2sgPSBtX2dyYXBoLmJsb2NrKDApOworCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIGF2
YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0KLSAgICAgICAgICAgICAgICBB
dmFpbGFiaWxpdHkoRmx1c2hlZEF0KEZsdXNoZWRKU1ZhbHVlLCB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSkpOwotICAgICAgICB9Ci0gICAgICAgIG1fbm9kZSA9IG51bGxwdHI7Ci0gICAg
ICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0
cnVlKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNo
ZWNraW5nW2ldOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVl
IGpzVmFsdWUgPSBtX291dC5sb2FkNjQoYWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAg
ICAKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gbnVsbHB0cjsKKwogICAgICAgICAgICAg
aWYgKG5vZGUpIHsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9w
ZXJhbmQgPT0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CisgICAgICAg
ICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
KSB7CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3Vt
ZW50KGkpID0gQXZhaWxhYmlsaXR5KG5vZGUpOworICAgICAgICAgICAgICAgICAgICBqc1ZhbHVl
ID0gbV9vdXQuYXJndW1lbnRSZWdpc3RlcihHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobm9k
ZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKTsKKworICAgICAgICAgICAgICAgICAgICBzZXRK
U1ZhbHVlKG5vZGUsIGpzVmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpTVmFs
dWUsIG9wZXJhbmQpKTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0LmxvYWQ2
NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSB8fCBvcGVyYW5kID09IG5v
ZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5tYWNoaW5lTG9jYWwpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLCBidXQgaXQncyBhbiBlZmZlY3RpdmUg
b25lLiBJdCBhbGxvd3MgdXMgdG8gZG8gQ1NFIG9uIHRoZQogICAgICAgICAgICAgICAgIC8vIHBy
aW1vcmRpYWwgbG9hZCBvZiBhcmd1bWVudHMuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBHZXRMb2Nh
bCB0aGF0IGdvdCBwdXQgaW4KQEAgLTI2OCw3ICsyODYsMjEgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIC8vIHNob3VsZCBob2xkIHRydWUuCiAgICAgICAgICAgICAgICAgbV9sb2FkZWRBcmd1
bWVudFZhbHVlcy5hZGQobm9kZSwganNWYWx1ZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGFyZ3VtZW50Tm9kZXNbaV0gPSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRWYWx1ZXNb
aV0gPSBqc1ZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCks
IHRydWUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1l
dGVycygpOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnROb2Rlc1tp
XTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IGFyZ3VtZW50VmFsdWVz
W2ldOworCiAgICAgICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0p
IHsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHNwZWN1
bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoanNWYWx1ZSksIG5vZGUsIGlzTm90SW50MzIoanNW
YWx1ZSkpOwpAQCAtODEwLDYgKzg0Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdl
dEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRSZWdpc3Rl
cigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAg
ICAgICBjb21waWxlR2V0U2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTM5NCw2ICs1
NDI5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2Fk
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgY29tcGlsZUdldEFyZ3VtZW50UmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbWln
aHQgaGF2ZSBhbHJlYWR5IGhhdmUgYSB2YWx1ZSBmb3IgdGhpcyBub2RlLgorICAgICAgICBpZiAo
TFZhbHVlIHZhbHVlID0gbV9sb2FkZWRBcmd1bWVudFZhbHVlcy5nZXQobV9ub2RlKSkgeworICAg
ICAgICAgICAgc2V0SlNWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86OnRv
QXJndW1lbnRSZWdpc3RlcihtX25vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSkpOworICAg
IH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZSgpCiAgICAgewogICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5K
U0Z1bmN0aW9uX3Njb3BlKSk7CkBAIC01ODA2LDkgKzU4NTEsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gdGhlIGNhbGwuCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVu
dHM7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8gR1BS
MCBiZWNhdXNlIHRoYXQncyB3aGVyZSB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhlCi0g
ICAgICAgIC8vIGNhbGxlZSB0byBiZS4KLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCkgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNsb3cg
cGF0aCB0aHVua3MgZXhwZWN0IHRoZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBjYWxs
ZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcp
KSk7CiAKICAgICAgICAgYXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBWaXJ0
dWFsUmVnaXN0ZXIgcmVnLCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICBpbnRwdHJfdCBvZmZz
ZXRGcm9tU1AgPQpAQCAtNTgxNiwxMCArNTg2MiwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3RhY2tB
cmd1bWVudChvZmZzZXRGcm9tU1ApKSk7CiAgICAgICAgIH07CiAKLSAgICAgICAgYWRkQXJndW1l
bnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsK
LSAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKLSAgICAgICAgICAg
IGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkp
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgIEFyZ3VtZW50c0xv
Y2F0aW9uIGFyZ0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQXJncyk7CisgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6
OnJlZyhjYWxsZWVSZWcpKSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZShtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVn
aXN0ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bUFyZ3M7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSArIGkpKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1
bWVudChpKSkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRBcmd1bWVu
dChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworICAgICAgICB9CiAKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZFZlY3Rvcihhcmd1bWVudHMpOwpAQCAtNTg0OCw5ICs1OTAwLDExIEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAKKyAgICAgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworCiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKAot
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdU
MCwgdGFyZ2V0VG9DaGVjaywKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2FsbGVlUmVnLCB0YXJnZXRUb0NoZWNrLAogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIGZhc3RDYWxsID0gaml0Lm5lYXJDYWxsKCk7CkBAIC01ODU4LDEzICs1OTEyLDEz
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwogCi0g
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxM
aW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5l
YXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCiAgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3QgOiBDYWxsTGlua0lu
Zm86OkNhbGwsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBhcmdMb2NhdGlvbiwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwogCiAgICAgICAgICAg
ICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLXBhcmFtcy5wcm9jKCkuZnJhbWVTaXplKCkpLApAQCAtNTg3Myw3ICs1OTI3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52
bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRy
eUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTU5MTcsMjAgKzU5NzEsMzggQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CiAg
ICAgICAgIAotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxs
ZWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGNhbGxlZSBnb2VzIGludG8gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIGJlY2F1c2Ug
dGhhdCdzIHdoZXJlCisgICAgICAgIC8vIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0aGUg
Y2FsbGVlIHRvIGJlLgorICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
anNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOwogICAgICAgICBpZiAoIWlzVGFp
bCkgewogICAgICAgICAgICAgYXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVnLCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgaW50cHRy
X3Qgb2Zmc2V0RnJvbVNQID0KICAgICAgICAgICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAtIENh
bGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycykgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0RnJvbVNQKSkpOwogICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOwor
I2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50
KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShtX291
dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVnaXN0
ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQVJHQ09V
TlQpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bVBhc3NlZEFy
Z3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxv
YWRPZmZzZXQpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3Nl
ZEFyZ3M7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSksIDApOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8
IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
KQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
bG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpy
ZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSksIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAgICAgICAg
ICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgVmFsdWVSZXA6OnJl
Zyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSkpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSksIDApOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkKICAgICAgICAg
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNWYWx1ZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpXYXJtQW55KSk7CkBAIC01
OTcyLDYgKzYwNDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0
YS5udW1Mb2NhbHMgPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudDsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHRv
U2F2ZSA9IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpOworICAgICAgICAgICAgICAgICAg
ICBzaHVmZmxlRGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZUdQ
UiwgRGF0YUZvcm1hdENlbGwpOwogICAgICAgICAgICAgICAgICAgICB0b1NhdmUuc2V0KGNhbGxl
ZUdQUik7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Q
YXNzZWRBcmdzOyArK2kpIHsKQEAgLTU5OTAsNyArNjA2MywxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRjaGFi
bGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIo
JmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKQEAgLTYwMTEsNyArNjA4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxM
aW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bVBhc3NlZEFy
Z3MpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVj
dXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPiBudW1Q
YXNzZWRBcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRNYXhO
dW1Bcmd1bWVudHMobnVtQWxsb2NhdGVkQXJncyk7CkBAIC02MDM0LDYgKzYxMTEsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgbWFpblBhdGggPSBqaXQubGFiZWwoKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291
bnRlcigmaml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKQEAgLTYw
NDUsNyArNjEyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIGlzQ29uc3Ry
dWN0ID8gQ2FsbExpbmtJbmZvOjpEaXJlY3RDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkRpcmVj
dENhbGwsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bVBh
c3NlZEFyZ3MpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKGV4
ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgIGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVtUGFz
c2VkQXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRNYXhOdW1Bcmd1
bWVudHMobnVtQWxsb2NhdGVkQXJncyk7CkBAIC02MDU2LDEzICs2MTM2LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgc2xvd1BhdGggPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5wb3Ao
Q0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUikpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJSZWcsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihjYWxsTGlua0luZm8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5wb3AoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy0+YXBwZW5kKGppdC5lbWl0RXhjZXB0
aW9uQ2hlY2soQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRpb25DaGVjaywgQXNzZW1ibHlI
ZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKApAQCAtNjA3MSw2ICs2MTQ5LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd1BhdGhMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgc2xvd1BhdGhMb2NhdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2Fs
bCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCku
Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVu
dHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5z
ZXRDYWxsTG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwoKSwKQEAgLTYxMDIsNyArNjE4Myw4IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKIAotICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6cmVnVDApKSk7CisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVy
Rm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShq
c0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkgewogICAgICAgICAgICAgLy8gTm90ZTogd2Ug
Y291bGQgbGV0IHRoZSBzaHVmZmxlciBkbyBib3hpbmcgZm9yIHVzLCBidXQgaXQncyBub3Qgc3Vw
ZXIgY2xlYXIgdGhhdCB0aGlzCkBAIC02MTM2LDkgKzYyMTgsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwogCisg
ICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsKKyAg
ICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisKICAg
ICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKKyAgICAgICAg
ICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5m
cmFtZVJlZ2lzdGVyQ291bnQ7Ci0gICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0g
VmFsdWVSZWNvdmVyeTo6aW5HUFIoR1BSSW5mbzo6cmVnVDAsIERhdGFGb3JtYXRKUyk7CisgICAg
ICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoY2Fs
bGVlUmVnLCBEYXRhRm9ybWF0SlMpOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEu
YXJncy5hcHBlbmQocGFyYW1zWzEgKyBpXS5yZWNvdmVyeUZvckpTVmFsdWUoKSk7CkBAIC02MTQ5
LDcgKzYyMzUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpE
YXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgdGFyZ2V0VG9DaGVj
aywKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlUmVn
LCB0YXJnZXRUb0NoZWNrLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoMCkpOwogCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRGcmFtZVNo
dWZmbGVEYXRhKHNodWZmbGVEYXRhKTsKQEAgLTYxNjcsMjAgKzYyNTMsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlciBzbG93UGF0aFNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpOwotICAgICAg
ICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJl
Z3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnBy
ZXBhcmVGb3JTbG93UGF0aCgpOwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJ
bmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAKICAgICAgICAgICAgICAgICBqaXQu
YWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CiAKLSAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBjb2Rl
T3JpZ2luLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5z
ZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgYXJndW1lbnRzTG9jYXRpb25Gb3IobnVt
QXJncyksIGNvZGVPcmlnaW4sIGNhbGxlZVJlZyk7CiAKICAgICAgICAgICAgICAgICBqaXQuYWRk
TGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtD
YWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9u
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBG
dW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTYyNzAsNiAr
NjM1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAg
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2Nr
KCktPmFkZENhbGxMaW5rSW5mbygpOworICAgICAgICAgICAgICAgIEFyZ3VtZW50c0xvY2F0aW9u
IGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogCiAgICAgICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVn
aXN0ZXJzRm9ySlNDYWxsKCkpOwpAQCAtNjQxOSw3ICs2NTA1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRS
ZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXVzZWRSZWdpc3Rl
cnMuZ2V0KEdQUkluZm86OnJlZ1QyKSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC02NDI3LDcgKzY1MTMsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgYXJn
dW1lbnRzTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOwog
CiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLApAQCAtNjQzNiw3ICs2
NTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAg
ICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRo
dW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY1MzcsMTEgKzY2MjMsMTUgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAg
IGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAg
aW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6Q2FsbFZhcmFyZ3MpOworICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAgICAg
ICAgICAgICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdz
OwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJh
cmdzRGF0YSgpOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwpAQCAt
NjcwMiw3ICs2NzkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxD
YWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwot
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5u
ZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxD
YWxsKQpAQCAtNjcxMCw3ICs2ODAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdodCksCkBAIC02NzE5LDcgKzY4MDksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAg
ICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCku
Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9y
KFN0YWNrQXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjc4OCwxMyArNjg3OCwxNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICAKKworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZU
TENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6Q2Fs
bEV2YWwpOworCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Q2FsbCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZv
OjpDYWxsLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86
OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgQ2FsbEZyYW1l
OjpjYWxsZXJGcmFtZU9mZnNldCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDExIEBA
IHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQog
ICAgICAgICBkYXRhTG9nKCIgICAgVmFsdWVzIGF0IGVudHJ5OiAiLCB2YWx1ZXMsICJcbiIpOwog
ICAgIAotICAgIGZvciAoaW50IGFyZ3VtZW50ID0gdmFsdWVzLm51bWJlck9mQXJndW1lbnRzKCk7
IGFyZ3VtZW50LS07KSB7CisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IHZhbHVlcy5udW1i
ZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKGFyZ3VtZW50IDwgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgICAgIEpTVmFsdWUgdmFsdWVPblN0YWNrID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkpLmFzYW5VbnNhZmVKU1ZhbHVlKCk7CiAgICAg
ICAgIEpTVmFsdWUgcmVjb25zdHJ1Y3RlZFZhbHVlID0gdmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KTsKICAgICAgICAgaWYgKHZhbHVlT25TdGFjayA9PSByZWNvbnN0cnVjdGVkVmFsdWUgfHwgIWFy
Z3VtZW50KQpAQCAtOTksOCArMTAzLDEyIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICB9
CiAgICAgCiAgICAgZXhlYy0+c2V0Q29kZUJsb2NrKGVudHJ5Q29kZUJsb2NrKTsKLSAgICAKLSAg
ICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJl
c3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyNlbHNlCisgICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNzRm9y
Q2FsbChTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisjZW5kaWYKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICBkYXRhTG9n
KCIgICAgRW50cnkgd2lsbCBzdWNjZWVkLCBnb2luZyB0byBhZGRyZXNzIiwgUmF3UG9pbnRlcihy
ZXN1bHQpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTYgQEAgdm9pZCBPdXRw
dXQ6OmFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrKQogICAgIG1fYmxvY2sgPSBibG9jazsKIH0K
IAorTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
cmVnKTsKK30KKworTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlckludDMyKFJlZyByZWcp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCByZWcsIEludDMyKTsKK30KKwogTFZhbHVlIE91dHB1dDo6ZnJhbWVQb2lu
dGVyKCkKIHsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6RnJhbWVQb2ludGVyLCBvcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0T3JpZ2luKERGRzo6Tm9kZSogbm9kZSkgeyBtX29yaWdpbiA9IG5vZGU7
IH0KICAgICBCMzo6T3JpZ2luIG9yaWdpbigpIHsgcmV0dXJuIEIzOjpPcmlnaW4obV9vcmlnaW4p
OyB9CiAKKyAgICBMVmFsdWUgYXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKTsKKyAgICBMVmFsdWUg
YXJndW1lbnRSZWdpc3RlckludDMyKFJlZyByZWcpOwogICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIo
KTsKIAogICAgIEIzOjpTbG90QmFzZVZhbHVlKiBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDE2
ICsyODQsMjQgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mLCBFeGVjU3RhdAogICAg
ICAgICAgICAgYm9vbCBmb3VuZEZyYW1lID0gYWR2YW5jZUluZGV4SW5Mb2dUbyhjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKTsKICAgICAg
ICAgICAgIGJvb2wgaXNUYWlsRGVsZXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgSlNTY29wZSog
c2NvcGUgPSBudWxscHRyOworICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOwogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOwotICAgICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPndhc0Nv
bXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIo
KS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUo
Y29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgewotICAgICAgICAgICAgICAgIHNjb3BlID0gbV9s
b2dbaW5kZXhJbkxvZ10uc2NvcGU7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2lu
Z09wY29kZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBjYWxsRnJhbWUt
PnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8oKSkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFzY29wZSkgeworICAgICAgICAgICAgICAgICAgICBzY29wZSA9
IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOworICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUp
CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMo
SlNTY29wZTo6aW5mbygpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
ICh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhpc1ZhbHVl
ID0gbV9sb2dbaW5kZXhJbkxvZ10udGhpc1ZhbHVlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdG9QdXNoLmFwcGVuZChGcmFtZSh2aXNpdG9yLT5jYWxsZWUoKSwgY2FsbEZyYW1lLCBpc1Rh
aWxEZWxldGVkLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBzY29wZSwgY29kZUJsb2NrLCBjYWxs
RnJhbWUtPmNhbGxTaXRlSW5kZXgoKSkpOworICAgICAgICAgICAgdG9QdXNoLmFwcGVuZChGcmFt
ZSh2aXNpdG9yLT5jYWxsZWUoKSwgY2FsbEZyYW1lLCBpc1RhaWxEZWxldGVkLCB0aGlzVmFsdWUs
IHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2FsbFNpdGVJbmRleCgpKSk7CiAKICAgICAg
ICAgICAgIGlmIChpbmRleEluTG9nIDwgbG9nQ3Vyc29ySW5kZXgKICAgICAgICAgICAgICAgICAv
LyBUaGlzIGNvbmRpdGlvbiBwcm90ZWN0cyB1cyBmcm9tIHRoZSBjYXNlIHdoZXJlIGFkdmFuY2VJ
bmRleEluTG9nVG8gZGlkbid0IGZpbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE2
LDEzICs2MTYsMTMgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlcwog
CiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdER1bWJWaXJ0dWFsQ2FsbChDYWxsTGlua0luZm8q
IGluZm8pCiB7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7
CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICBDYWxsIGNhbGwgPSBuZWFyQ2FsbCgpOwogICAgIGFkZExpbmtUYXNrKAogICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IoJmxpbmtCdWZmZXIudm0oKSwgKmlu
Zm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUo
dmlydHVhbFRodW5rLCBsaW5rQnVmZmVyLnZtKCksIG51bGxwdHIsIHRydWUpKTsKLSAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh2aXJ0dWFsVGh1bmsu
Y29kZSgpKSk7CisgICAgICAgICAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IoJmxpbmtCdWZmZXIudm0oKSwgKmluZm8pOwor
ICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVh
bFRodW5rLmNvZGVSZWYoKSwgbGlua0J1ZmZlci52bSgpLCBudWxscHRyLCB0cnVlKSk7CisgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwodmlydHVhbFRo
dW5rLmVudHJ5Rm9yKFN0YWNrQXJncykpKTsKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE0LDYgKzQxNCw4OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAg
ICBlbnVtIFNwaWxsUmVnaXN0ZXJUeXBlIHsgU3BpbGxBbGwsIFNwaWxsRXhhY3RseSB9OworCisg
ICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHVuc2ln
bmVkIG1pbmltdW1BcmdzVG9TcGlsbCA9IDAsIFNwaWxsUmVnaXN0ZXJUeXBlIHNwaWxsVHlwZSA9
IFNwaWxsQWxsKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVTdG9yaW5nQXJnczsKKworICAgICAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9yQ2Fs
bGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJl
ZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgIGVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KTsKKworICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7CisgICAg
ICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxsID0g
c3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisKKyAgICAgICAgZm9yICg7IGFyZ0lu
ZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNU
SU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGVtaXRQdXRB
cmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0
aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisKKyAgICAgICAgaWYgKHNwaWxsVHlw
ZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNzZWQg
dG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAgICAg
ICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09y
RXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4
KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJv
bG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJ
bmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkb25lU3RvcmluZ0Fy
Z3MubGluayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtQXJnc1Rv
U3BpbGwpOworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyNlbmRpZgorICAgIH0K
KworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUodW5zaWduZWQgbWluaW11
bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxBbGwp
CisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAg
ICAgICAgSnVtcExpc3QgZG9uZVN0b3JpbmdBcmdzOworCisgICAgICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSk7CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JB
cmd1bWVudENvdW50KCk7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihhcmdDb3Vu
dFJlZywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgIAorICAgICAgICB1
bnNpZ25lZCBhcmdJbmRleCA9IDA7CisgICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAg
ICAgICAgbWluaW11bUFyZ3NUb1NwaWxsID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAx
VSk7CisgICAgICAgIAorICAgICAgICBmb3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1RvU3Bp
bGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc3BpbGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAgICAg
ICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAgZm9y
ICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsg
YXJnSW5kZXgrKykgeworICAgICAgICAgICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQoYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
YXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGRvbmVTdG9yaW5nQXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAgVU5V
U0VEX1BBUkFNKG1pbmltdW1BcmdzVG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGls
bFR5cGUpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVnaXN0
ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5nQXJn
czsKKworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICAg
ICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQo
KTsKKyAgICAgICAgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9n
dWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAgICAK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAgICAg
ICAgaWYgKGFyZ0luZGV4KSAvLyBBbHdheXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAgICBk
b25lTG9hZGluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1
YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkp
OworICAgICAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xvZ3Vl
KGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRleCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0aGlz
KTsKKyNlbmRpZgorICAgIH0KKwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3Rh
dGljIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQsNiAr
NzA3LDMxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXpl
b2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KKwor
ICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJSZWcg
ZnJvbSwgdW5zaWduZWQgYXJndW1lbnQpCisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9tLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
ICsgYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAt
IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWUoR1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQorICAg
IHsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNsb3Q6
OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8p
CisgICAgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVu
dHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSksIHRvKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0R2V0
RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQsIEdQ
UlJlZyB0bykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhKCkpLCB0byk7CisgICAgfQorICAgIAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9tQ2Fs
bEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8pCisg
ICAgeworICAgICAgICBsb2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkg
KiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHRvKTsKKyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1dFBh
eWxvYWRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQgZW50
cnkpCiAgICAgewpAQCAtMTY2MCw3ICsxNzY4LDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJS
ZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAg
ICB2b2lkIGluY3JlbWVudENvdW50ZXIoVk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisg
ICAgeworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Modm0o
KS0+YWRkcmVzc09mQ291bnRlcihjb3VudGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwogcHJv
dGVjdGVkOgogICAgIFZNKiBtX3ZtOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0x
NjY5LDYgKzE3ODQsMTIgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVj
dG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAor
I2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQsIGNv
dW50ZXJUeXBlKSAoaml0KS0+aW5jcmVtZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNlCisj
ZGVmaW5lIGluY3JlbWVudENvdW50ZXIoaml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
dm9pZCBDYWNoZWRSZWNvdmVyeTo6YWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MganNW
YWx1ZVJlZ3MpCit7CisgICAgQVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcpOwor
ICAgIHNpemVfdCBleGlzdGluZyA9IG1fZ3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsKKyAg
ICBpZiAoZXhpc3RpbmcgPT0gV1RGOjpub3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGlmIChtX2dwclRhcmdldHMuc2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0KCkg
JiYgbV9yZWNvdmVyeS5pc0luR1BSKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSByZWNv
dmVyaW5nIHRvIHRoZSBzYW1lIEdQUiwgbWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0Lgor
ICAgICAgICAgICAgR1BSUmVnIHNvdXJjZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAgICAg
ICAgICBpZiAoanNWYWx1ZVJlZ3MuZ3ByKCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAgICAg
ICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAgICAg
ICBqc1ZhbHVlUmVncyA9IEpTVmFsdWVSZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgbV9ncHJUYXJnZXRzWzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5hcHBl
bmQoanNWYWx1ZVJlZ3MpOworICAgIH0KK30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91Ymxl
cyBhbmQgdW5kZXRlcm1pbmVkIEpTVmFsdWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3b3Vs
ZCBvdGhlcndpc2UgdXNlIHVwIEdQUnMuICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBDYWNo
ZWRSZWNvdmVyeTo6bG9hZHNJbnRvRlBSKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNoZWRS
ZWNvdmVyeSYmKSA9IGRlbGV0ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIs
IDE+JiB0YXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3QgVmVj
dG9yPEpTVmFsdWVSZWdzLCAxPiYgZ3ByVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByVGFy
Z2V0czsgfQogCiAgICAgdm9pZCBhZGRUYXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7
CkBAIC02OCwxNSArNjksMTEgQEAgcHVibGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIoKTsK
ICAgICB9CiAKLSAgICB2b2lkIHNldFdhbnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpzVmFs
dWVSZWdzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJS
ZWcpOwotICAgICAgICBtX3dhbnRlZEpTVmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAgfQor
ICAgIHZvaWQgYWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9pZCBz
ZXRXYW50ZWRGUFIoRlBSUmVnIGZwcikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50ZWRK
U1ZhbHVlUmVncyk7CisgICAgICAgIEFTU0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsKICAg
ICAgICAgbV93YW50ZWRGUFIgPSBmcHI7CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldFJlY292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkpIHsg
bV9yZWNvdmVyeSA9IHJlY292ZXJ5OyB9CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1ZhbHVl
UmVncygpIGNvbnN0IHsgcmV0dXJuIG1fd2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1ZhbHVl
UmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9ncHJU
YXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOworCisg
ICAgICAgIHJldHVybiBtX2dwclRhcmdldHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdhbnRl
ZEZQUigpIGNvbnN0IHsgcmV0dXJuIG1fd2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZhbHVl
UmVjb3ZlcnkgbV9yZWNvdmVyeTsKLSAgICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVSZWdz
OwogICAgIEZQUlJlZyBtX3dhbnRlZEZQUiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0b3I8
VmlydHVhbFJlZ2lzdGVyLCAxPiBtX3RhcmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdzLCAx
PiBtX2dwclRhcmdldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlzaW9u
IDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWVS
ZWNvdmVyeSBjYWxsZWU7CiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBib29sIGFyZ3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsKICAg
ICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRhZ1R5
cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVnIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIzLDcgKzMyMyw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVt
aXREaXNwbGFjZShDYWMKICAgICAgICAgICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3ZlcnkucmVj
b3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSwg
d2FudGVkUmVnLmZwcigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3Zlcnku
cmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0YUZv
cm1hdCBmb3JtYXQgPSBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQgPT0g
RGF0YUZvcm1hdENlbGwpOwogICAgICAgICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVyeSwK
ICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRhRm9y
bWF0SlMpKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw5IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EK
ICAgICAgICAgKyByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygp
LT5udW1QYXJhbWV0ZXJzKCkpKQogICAgICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxGcmFt
ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzCiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50VG9B
bGlnbkZyYW1lKGRhdGEuYXJncy5zaXplKCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLCBt
X2FyZ3VtZW50c0luUmVnaXN0ZXJzKGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5kaWYK
ICAgICAsIG1fZnJhbWVEZWx0YShtX2FsaWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRG
cmFtZVNpemUpCiAgICAgLCBtX2xvY2tlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0
ZXJzKCkpCiB7CkBAIC01NCwxMSArNTcsMjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFt
ZVNodWZmbGVyKENDYQogICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJ
bkpTU3RhY2soKSB8fCBkYXRhLmNhbGxlZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwot
ICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0YS5j
YWxsZWUpOwotCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJblJl
Z2lzdGVycykKKyAgICAgICAgYWRkTmV3KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSksIGRhdGEuY2FsbGVlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgYWRkTmV3
KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7Cisg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgQVNTRVJUKCFkYXRhLmFyZ3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3Nb
aV0udmlydHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICAgICAgYWRkTmV3KHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCBkYXRhLmFyZ3NbaV0pOworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGlmIChkYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzICYmIGkgPCBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgYWRkTmV3KEpTVmFs
dWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSwgZGF0YS5hcmdz
W2ldKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBhZGROZXcodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSksIGRhdGEuYXJnc1tpXSk7CiAgICAgfQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKQEAgLTE4NSw4ICsxOTgsMTMgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZHVt
cChQcmludFN0cmVhbQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZWxzZQotICAgICAgICBp
ZiAobmV3Q2FjaGVkUmVjb3ZlcnkpCisgICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeSkgewog
ICAgICAgICAgICAgb3V0LnByaW50KCIgICAgICAgICAiLCByZWcsICIgPC0gIiwgbmV3Q2FjaGVk
UmVjb3ZlcnktPnJlY292ZXJ5KCkpOworICAgICAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292ZXJ5
LT5ncHJUYXJnZXRzKCkuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwgbmV3Q2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkrKykK
KyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5LT5n
cHJUYXJnZXRzKClbaV0uZ3ByKCksICIgPC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgb3V0LnByaW50
KCJcbiIpOwogICAgIH0KQEAgLTQ5Niw3ICs1MTQsNyBAQCBib29sIENhbGxGcmFtZVNodWZmbGVy
Ojp0cnlXcml0ZXMoQ2FjaGVkCiAgICAgQVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCku
aXNJblJlZ2lzdGVycygpCiAgICAgICAgIHx8IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuaXND
b25zdGFudCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmICh2ZXJib3NlICYmIGNhY2hl
ZFJlY292ZXJ5LnRhcmdldHMoKS5zaXplKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICogU3Rvcmlu
ZyAiLCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgY2FjaGVkUmVjb3ZlcnkudGFyZ2V0cygpW2ldIH07CkBAIC01
MDUsOSArNTIzLDkgQEAgYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hlZAog
ICAgICAgICAgICAgZGF0YUxvZyghaSA/ICIgaW50byAiIDogIiwgYW5kICIsICJORVcgIiwgdGFy
Z2V0KTsKICAgICAgICAgZW1pdFN0b3JlKGNhY2hlZFJlY292ZXJ5LCBhZGRyZXNzRm9yTmV3KHRh
cmdldCkpOwogICAgICAgICBzZXROZXcodGFyZ2V0LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KLSAgICBpZiAodmVyYm9z
ZSkKLSAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICBjYWNoZWRSZWNvdmVyeS5jbGVhclRhcmdl
dHMoKTsKICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5LndhbnRlZEpTVmFsdWVSZWdzKCkgJiYgY2Fj
aGVkUmVjb3Zlcnkud2FudGVkRlBSKCkgPT0gSW52YWxpZEZQUlJlZykKICAgICAgICAgY2xlYXJD
YWNoZWRSZWNvdmVyeShjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpKTsKQEAgLTYwNiw3ICs2MjQs
NyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KCkKIHsKICAgICBBU1NFUlQo
IWlzVW5kZWNpZGVkKCkpOwogCi0gICAgdXBkYXRlRGFuZ2VyRnJvbnRpZXIoKTsKKyAgICBpbml0
RGFuZ2VyRnJvbnRpZXIoKTsKIAogICAgIC8vIEZpcnN0LCB3ZSB0cnkgdG8gc3RvcmUgYW55IHZh
bHVlIHRoYXQgZ29lcyBhYm92ZSB0aGUgZGFuZ2VyCiAgICAgLy8gZnJvbnRpZXIuIFRoaXMgd2ls
bCBuZXZlciB1c2UgbW9yZSByZWdpc3RlcnMgc2luY2Ugd2UgYXJlIG9ubHkKQEAgLTcwMiwxMyAr
NzIwLDkgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgICAgIEFT
U0VSVF9VTlVTRUQod3JpdGVzT0ssIHdyaXRlc09LKTsKICAgICB9CiAKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgIT0gSW52YWxpZEdQUlJlZyAmJiBtX25ld1Jl
Z2lzdGVyc1ttX3RhZ1R5cGVOdW1iZXJdKQotICAgICAgICByZWxlYXNlR1BSKG1fdGFnVHlwZU51
bWJlcik7Ci0jZW5kaWYKLQogICAgIC8vIEhhbmRsZSAyKSBieSBsb2FkaW5nIGFsbCByZWdpc3Rl
cnMuIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55CiAgICAgLy8gd3JpdGVzLCBzaW5jZSB0aGV5IGhh
dmUgYmVlbiB0YWtlbiBjYXJlIG9mIGFib3ZlLgorICAgIC8vIE5vdGUgdGhhdCB3ZSBuZWVkIG1f
dGFnVHlwZU51bWJlciB0byByZW1haW4gbG9ja2VkIHRvIGJveCB3YW50ZWQgcmVnaXN0ZXJzLgog
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgIExvYWRpbmcgd2FudGVkIHJlZ2lz
dGVycyBpbnRvIHJlZ2lzdGVyc1xuIik7CiAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgp
OyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKQEAgLTc0MiwxMiArNzU2
LDE5IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgLy8gV2Ug
bmVlZCB0byBoYW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAg
IC8vIG1fbmV3RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KKyAg
ICAvLyBOb3RlIHRoYXQgd2UgZGVsYXkgc2V0dGluZyB0aGUgYXJndW1lbnQgY291bnQgcmVnaXN0
ZXIgYXMgaXQgbmVlZHMgdG8gYmUgcmVsZWFzZWQgaW4gc3RlcCAzLgogICAgIGlmICh2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCIgICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8g
IiwgVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9LCAiXG4i
KTsKLSAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0g
ICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOwotICAgIG1faml0LnN0b3JlMzIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAgYWRkcmVz
c0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0p
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYg
KCFtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKSB7CisjZW5kaWYKKyAgICAgICAgbV9qaXQuc3RvcmUz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLAorICAgICAgICAgICAgYWRkcmVzc0Zv
ck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JOZXco
VmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zm
c2V0KFBheWxvYWRPZmZzZXQpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIH0KKyNlbmRpZgog
CiAgICAgaWYgKCFpc1Nsb3dQYXRoKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNl
ICE9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC03NjcsNiArNzg4
LDIzIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgICAgIGVt
aXREaXNwbGFjZSgqY2FjaGVkUmVjb3ZlcnkpOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgLy8gRm9yIHJlY292ZXJpZXMgd2l0aCBtdWx0aXBsZSByZWdpc3RlciB0YXJnZXRzLCBj
b3B5IHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgdGFyZ2V0IHRvIHRoZQorICAgIC8vIHJlbWFp
bmluZyB0YXJnZXRzLgorICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJl
Zzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBj
YWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVnaXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgaWYgKCFjYWNo
ZWRSZWNvdmVyeSB8fCBjYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA8IDIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHUFJSZWcgc291cmNlR1BSID0gY2FjaGVk
UmVjb3ZlcnktPmdwclRhcmdldHMoKVswXS5ncHIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDE7IGkgPCBjYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAgICAg
ICAgICAgbV9qaXQubW92ZShzb3VyY2VHUFIsIGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRzKClb
aV0uZ3ByKCkpOworICAgIH0KKworICAgIGlmIChtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKQorICAg
ICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSks
IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworI2VuZGlmCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYsMzcg
QEAgcHVibGljOgogICAgIC8vIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZQog
ICAgIC8vIGFyZ3VtZW50cy9jYWxsZWUvY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGFyZSBieSB0YWtp
bmcgaW50bwogICAgIC8vIGFjY291bnQgYW55IHNwaWxsaW5nIHRoYXQgYWNxdWlyZUdQUigpIGNv
dWxkIGhhdmUgZG9uZS4KLSAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdCgpIGNvbnN0
CisgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc25hcHNob3QoQXJndW1lbnRzTG9jYXRpb24gYXJn
dW1lbnRzTG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVbmRlY2lkZWQo
KSk7CiAKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgZGF0YTsKICAgICAgICAgZGF0YS5u
dW1Mb2NhbHMgPSBudW1Mb2NhbHMoKTsKLSAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmly
dHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSBhcmd1
bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGFyZ3VtZW50
c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3
KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZv
ckNhbGxlZSgpIH07CisgICAgICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3Zlcnkg
eyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGNhY2hl
ZFJlY292ZXJ5LT5yZWNvdmVyeSgpOworICAgICAgICB9CiAgICAgICAgIGRhdGEuYXJncy5yZXNp
emUoYXJnQ291bnQoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQo
KTsgKytpKQotICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcmdDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlv
biA9PSBTdGFja0FyZ3MgfHwgaSA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKQorICAgICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoaSkgfTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3Zlcnkg
eyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CisgICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0g
Y2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJl
ZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChyZWcuaXNHUFIoKSAmJiBhcmd1bWVu
dHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MKKyAgICAgICAgICAgICAgICAmJiBHUFJJbmZvOjp0b0Fy
Z3VtZW50SW5kZXgocmVnLmdwcigpKSA8IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVuY3Rp
b25Bcmd1bWVudChhcmdDb3VudCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAg
ICAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3RlcnNb
cmVnXSB9OwogICAgICAgICAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTM3Niw2ICszOTYsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fYWxp
Z25lZE9sZEZyYW1lU2l6ZTsKICAgICBpbnQgbV9hbGlnbmVkTmV3RnJhbWVTaXplOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgYm9vbCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzOworI2VuZGlmCiAK
ICAgICAvLyBUaGlzIGlzIHRoZSBkaXN0YW5jZSwgaW4gc2xvdHMsIGJldHdlZW4gdGhlIGJhc2Ug
b2YgdGhlIG5ldwogICAgIC8vIGZyYW1lIGFuZCB0aGUgYmFzZSBvZiB0aGUgb2xkIGZyYW1lLiBJ
dCBjb3VsZCBiZSBuZWdhdGl2ZSB3aGVuCkBAIC02NDEsOSArNjY0LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVChqc1ZhbHVlUmVncyAmJiAhZ2V0TmV3KGpzVmFsdWVSZWdzKSk7CiAgICAg
ICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSA9IGFkZENhY2hlZFJlY292ZXJ5KHJl
Y292ZXJ5KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpZiAoY2FjaGVkUmVjb3Zlcnkt
PndhbnRlZEpTVmFsdWVSZWdzKCkpCi0gICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNoZWRS
ZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOwotICAgICAgICBt
X25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAg
ICAgaWYgKGNhY2hlZFJlY292ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpKSB7CisgICAgICAgICAg
ICBpZiAocmVjb3ZlcnkuaXNJbkdQUigpICYmIGpzVmFsdWVSZWdzLmdwcigpID09IHJlY292ZXJ5
LmdwcigpKSB7CisgICAgICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3Zlcnkt
PndhbnRlZEpTVmFsdWVSZWdzKCkuZ3ByKCldID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBt
X25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tqc1Zh
bHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKICNlbHNlCiAgICAgICAgIGlmIChKU1Zh
bHVlUmVncyBvbGRSZWdzIHsgY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkgfSkg
ewogICAgICAgICAgICAgaWYgKG9sZFJlZ3MucGF5bG9hZEdQUigpKQpAQCAtNjU2LDggKzY4Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChqc1ZhbHVlUmVncy50YWdHUFIoKSAhPSBJbnZhbGlk
R1BSUmVnKQogICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MudGFnR1BSKCld
ID0gY2FjaGVkUmVjb3Zlcnk7CiAjZW5kaWYKLSAgICAgICAgQVNTRVJUKCFjYWNoZWRSZWNvdmVy
eS0+d2FudGVkSlNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgIGNhY2hlZFJlY292ZXJ5LT5zZXRXYW50
ZWRKU1ZhbHVlUmVncyhqc1ZhbHVlUmVncyk7CisgICAgICAgIGNhY2hlZFJlY292ZXJ5LT5hZGRU
YXJnZXRKU1ZhbHVlUmVncyhqc1ZhbHVlUmVncyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXco
RlBSUmVnIGZwciwgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSkKQEAgLTc1NSwxMyArNzgxLDIzIEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZWcgPD0gZGFuZ2VyRnJvbnRpZXIoKTsKICAgICB9
CiAKKyAgICB2b2lkIGluaXREYW5nZXJGcm9udGllcigpCisgICAgeworICAgICAgICBmaW5kRGFu
Z2VyRnJvbnRpZXJGcm9tKGxhc3ROZXcoKSk7CisgICAgfQorCiAgICAgdm9pZCB1cGRhdGVEYW5n
ZXJGcm9udGllcigpCiAgICAgeworICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKG1fZGFu
Z2VyRnJvbnRpZXIgLSAxKTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmREYW5nZXJGcm9udGllckZy
b20oVmlydHVhbFJlZ2lzdGVyIG5leHRSZWcpCisgICAgewogICAgICAgICBBU1NFUlQoIWlzVW5k
ZWNpZGVkKCkpOwogCiAgICAgICAgIG1fZGFuZ2VyRnJvbnRpZXIgPSBmaXJzdE5ldygpIC0gMTsK
LSAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbGFzdE5ldygpOyByZWcgPj0gZmly
c3ROZXcoKTsgcmVnIC09IDEpIHsKLSAgICAgICAgICAgIGlmICghZ2V0TmV3KHJlZykgfHwgIWlz
VmFsaWRPbGQobmV3QXNPbGQocmVnKSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKKyAgICAg
ICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbmV4dFJlZzsgcmVnID49IGZpcnN0TmV3KCk7
IHJlZyAtPSAxKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPbGQobmV3QXNPbGQocmVnKSkg
fHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgbV9kYW5nZXJGcm9udGllciA9IHJlZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BS
UmVnOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3By
ICE9IEludmFsaWRHUFJSZWc7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBv
dGhlcikgeyByZXR1cm4gbV9ncHIgPT0gb3RoZXIubV9ncHI7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAg
Ym9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBvdGhlci5tX2dwcjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKICAgICBHUFJSZWcgZ3By
KCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyBy
ZXR1cm4gSW52YWxpZEdQUlJlZzsgfQpAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAKICNp
ZiBDUFUoWDg2KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1CisjZGVm
aW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZpbmUg
TlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CkBA
IC0zNTMsNiArMzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIyID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVkaTsg
Ly8gcmVnVDUKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVn
aXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwpAQCAtMzc5
LDYgKzM4MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisg
ICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGludD4ocmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5k
ZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzhdID0geyAyLCAwLCAxLCAzLCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgcmV0dXJu
IGluZGV4Rm9yQXJndW1lbnRSZWdpc3RlcltyZWddOworICAgIH0KKwogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcg
IT0gSW52YWxpZEdQUlJlZyk7CkBAIC0zOTksOSArNDA5LDExIEBAIHB1YmxpYzoKICNpZiAhT1Mo
V0lORE9XUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA2dQogI2RlZmlu
ZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA1dQorI2RlZmluZSBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIC0gMnUpCiAjZWxzZQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1
CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDd1CisjZGVmaW5lIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNlbmRpZgogCiBjbGFz
cyBHUFJJbmZvIHsKQEAgLTQ2NCw2ICs0NzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlm
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7
IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
QXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAv
LyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dz
KQpAQCAtNTA4LDYgKzUyMSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpbmRleEZvclJl
Z2lzdGVyW3JlZ107CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRl
eChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyNpZiAhT1Mo
V0lORE9XUykKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1lbnRS
ZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMywgMiwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgMSwgMCwgNCwgNSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCB9OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1l
bnRSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDIsIDMs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gaW5k
ZXhGb3JBcmd1bWVudFJlZ2lzdGVyW3JlZ107CisgICAgfQorICAgIAogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcg
IT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MzgsNiArNTYzLDcgQEAgcHVibGljOgogCiAjaWYgQ1BV
KEFSTSkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2RlZmluZSBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5VTUJF
Ul9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNjAx
LDYgKzYyNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisg
ICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3VtZW50R1BSMykK
KyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVybiAodW5zaWdu
ZWQpcmVnOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQ
UlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpA
QCAtNjIxLDYgKzY1Niw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk02NCkKICNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA4dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIC0gMnUp
CiAvLyBDYWxsZWUgU2F2ZXMgaW5jbHVkZXMgeDE5Li54MjggYW5kIEZQIHJlZ2lzdGVycyBxOC4u
cTE1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDE4dQogCkBAIC02
OTgsNiArNzM0LDcgQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJz
OjpxMTMgPT0gMTMsIHExM19pc18xMyk7CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3Rl
cnM6OnExNCA9PSAxNCwgcTE0X2lzXzE0KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lz
dGVyczo6cTE1ID09IDE1LCBxMTVfaXNfMTUpOworCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lz
dGVyKHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuIChHUFJSZWcpaW5kZXg7
CkBAIC03MTUsNiArNzUyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRvUmVnaXN0ZXIo
aW5kZXgpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgoR1BS
UmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgIGlmIChyZWcgPiBhcmd1bWVudEdQUjcpCisgICAgICAgICAgICByZXR1cm4gSW52YWxp
ZEluZGV4OworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzQ2LDYgKzc5MSw3IEBAIHB1YmxpYzoKIAog
I2lmIENQVShNSVBTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1Cisj
ZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZp
bmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7
CkBAIC03NzMsNiArODE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJn
dW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBh
cmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjAgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEg
PSByZWdUNTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAt
ODI1LDYgKzg3Miw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShTSDQpCiAjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lT
VEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTg1NSw2ICs5MDMsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBTSDRSZWdpc3RlcnM6OnI2OyAv
LyByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gU0g0UmVnaXN0
ZXJzOjpyNzsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBy
ZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUNTsKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CiAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAtODkxLDYgKzk0MCw2MSBA
QCBwdWJsaWM6CiAKICNlbmRpZiAvLyBDUFUoU0g0KQogCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50
UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyNpZiBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGFyZ3VtZW50SW5kZXggPj0gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgcmV0dXJu
IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGFyZ3VtZW50SW5kZXgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisjZW5kaWYKK30KKworaW5saW5lIEdQ
UlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkKK3sKKyNpZiBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTCisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoMCk7CisjZWxzZQor
ICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVnIGFy
Z3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRS
ZWdpc3RlckZvcigxKTsKK30KKworaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50UmVnaXN0ZXJJbmRl
eEZvckpTRnVuY3Rpb25Bcmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4g
YXJndW1lbnQgKyAyOworfQorCitpbmxpbmUgdW5zaWduZWQganNGdW5jdGlvbkFyZ3VtZW50Rm9y
QXJndW1lbnRSZWdpc3RlcihHUFJSZWcgZ3ByKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMgPiAwCisgICAgdW5zaWduZWQgYXJndW1lbnRJbmRleCA9IEdQ
UkluZm86OnRvQXJndW1lbnRJbmRleChncHIpOworICAgIEFTU0VSVChhcmd1bWVudEluZGV4ICE9
IEdQUkluZm86OkludmFsaWRJbmRleCAmJiBhcmd1bWVudEluZGV4ID49IDIpOworICAgIHJldHVy
biBhcmd1bWVudEluZGV4IC0gMjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGdwcik7CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQor
CitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoYXJn
dW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KGFyZ3VtZW50SW5kZXgpKTsK
K30KKworaW5saW5lIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IodW5zaWdu
ZWQgYXJndW1lbnRDb3VudCkKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oYXJndW1lbnRDb3VudCwg
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7Cit9CisKIC8vIFRoZSBi
YXNlbGluZSBKSVQgdXNlcyAiYWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3aXRoIHJlZ1Qw
IChmb3IgNjQtYml0KQogLy8gYW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQpIHNlcnZpbmcg
YXMgdGhlIGFjY3VtdWxhdG9yIHJlZ2lzdGVyKHMpIGZvcgogLy8gcGFzc2luZyByZXN1bHRzIG9m
IG9uZSBvcGNvZGUgdG8gdGhlIG5leHQuIEhlbmNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNCArNjYsNiBAQCB2b2lkIGN0aVBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BCiAgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0K
IAotSklUOjpDb2RlUmVmIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jKQotewotICAgIGlmICghdm0tPmNhblVzZUpJVCgpKQotICAgICAgICByZXR1
cm4gQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xp
bmUpOwotICAgIEpJVCBqaXQodm0sIDApOwotICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVD
VElOYXRpdmVDYWxsKHZtLCBmdW5jKTsKLX0KLQogSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaykKICAgICA6IEpTSW50ZXJmYWNlSklUKHZtLCBjb2RlQmxvY2spCiAgICAgLCBt
X2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKQEAgLTU3OSw2ICs1NzEsMjAgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgIGlmIChtX3JhbmRvbUdlbmVy
YXRvci5nZXRVaW50MzIoKSAmIDEpCiAgICAgICAgIG5vcCgpOwogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkpOworI2lmIEVOQUJMRShWTV9D
T1VOVEVSUykKKyAgICBKdW1wIGNvbnRpbnVlU3RhY2tFbnRyeSA9IGp1bXAoKTsKKyNlbmRpZgor
I2VuZGlmCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworCisjaWYgVVNFKEpTVkFM
VUU2NCkgJiYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNvbnRpbnVlU3RhY2tFbnRyeS5saW5r
KHRoaXMpOworI2VuZGlmCisKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKIApAQCAtNjM1LDcgKzY0MSwyMSBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5n
KEpJVENvbXBpCiAgICAgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CiAKICAg
ICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7Ci0gICAgICAg
IG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5
Q2hlY2sgPSBsYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJl
Z0FyZ3NBcml0eSk7CisKKyAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZv
cmVQcm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBKdW1wIGNv
bnRpbnVlU3RhY2tBcml0eUVudHJ5ID0ganVtcCgpOworI2VuZGlmCisKKyAgICAgICAgbV9zdGFj
a0FyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIo
dGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAg
ICAgIGNvbnRpbnVlU3RhY2tBcml0eUVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAgICAg
c3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsK
QEAgLTY0Myw2ICs2NjMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENv
bXBpCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJlZ2luTGFiZWws
IHRoaXMpOwogCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4dXBS
ZXF1aXJlZCk7CisKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKICAgICAgICAgaWYg
KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpAQCAtNzc4LDkgKzgwMCwxNCBAQCBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KICAgICBtX2NvZGVCbG9jay0+c2V0SklU
Q29kZU1hcChqaXRDb2RlTWFwRW5jb2Rlci5maW5pc2goKSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgp
ID09IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNr
RW50cnlBcml0eU9LUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0YWNrQXJnc0FyaXR5
T0tFbnRyeSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lzdGVyRW50cnlX
aXRoQXJpdHlDaGVja1B0cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRyeVdp
dGhBcml0eUNoZWNrUHRyOworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5j
dGlvbkNvZGUpIHsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0
Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICAg
ICAgc3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZiht
X3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICB9CiAKICAgICBpZiAoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkpIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAocGF0Y2hCdWZm
ZXIpOwpAQCAtODA0LDggKzgzMSwyMCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQog
ICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAg
ICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAg
SklURW50cnlQb2ludHMgZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRyeVdp
dGhBcml0eUNoZWNrUHRyLCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNrRW50
cnlBcml0eU9LUHRyLCBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5zaWdu
ZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291bnQg
PD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQrKykg
eworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChhcmdD
b3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29kZSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRoQXJp
dHlDaGVja1B0cjsKKyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2lu
dHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsK
KyAgICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxp
bmVKSVQpKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5UG9p
bnRzV2l0aFJlZihyZXN1bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7
CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQg
Y29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFi
bGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRNYXRo
SUMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlVu
dXNlZFBvaW50ZXIuaCIKIApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbEluZm8s
IHJldHVybkFkZHJlc3MsIGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
Q29kZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAg
ICAgc3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5UG9p
bnRzKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2ZUNh
bGxSZWYgPSBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJh
bXBvbGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihu
YXRpdmVDYWxsUmVmLCBuYXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2RlKCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5jKTsK
KyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRG
b3IoQ29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0Rm9y
KENvZGVCbG9jayopOwpAQCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0
dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAgICAg
ICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9u
KTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50cnlO
YXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwog
CiAgICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLgpAQCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0
cnVjdGlvbkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwotICAg
ICAgICAKLSAgICAgICAgTGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1fc3Rh
Y2tBcmdzQXJpdHlPS0VudHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNo
ZWNrOworICAgICAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxKSVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5NjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0
cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7
Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86
OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwog
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3RlZElt
bTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoaW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCByZWdUMSwgcmVnVDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1
bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUp
KTsKLSAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvciht
X3ZtLCAqaW5mbyk7CisgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUo
dmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBlbWl0
TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNs
b3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNh
bGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxs
VHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1QwKTsK
KyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCks
IFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAgIG1f
Y2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFk
ZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2Nh
bGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcsMTMg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0lu
Zm8pLCByZWdUMik7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxDb21w
aWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQog
ICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtlZENh
bGwobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAg
IG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0
aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0Nh
bGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlv
bigpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09
IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRS
ZXR1cm5Gcm9tVGFpbENhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21waWxl
U2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1Qx
LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3JlbWVu
dENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3VudGVy
KHRoaXMsIFZNOjpDYWxsVmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwo
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFk
ZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAgaW5j
cmVtZW50Q291bnRlcih0aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVudENv
dW50ZXIodGhpcywgVk06OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3Rh
Y2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2lu
dGVyQWxpZ25tZW50KCk7CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNh
bGxFdmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2Uo
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxs
TGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxsKENh
bGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQp
LCByZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxMiArMTU5LDE0IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FTU0VS
VChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX29w
Y29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBu
dWxscHRyOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tB
cmdzOworCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9
IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
Y2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29k
ZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29k
ZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdDb3Vu
dCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQg
PSBpbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICAgICAgaWYgKG9wY29kZUlE
ID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CkBAIC0xNzEsMTUgKzE3OCwy
NSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIH0K
ICAgICAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRpb24g
IT0gU3RhY2tBcmdzKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhcmdDb3VudCks
IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJBcmdzID0gc3RkOjptaW4oYXJnQ291bnQsIE5VTUJFUl9PRl9KU19GVU5DVElP
Tl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmcgPSAw
OyBhcmcgPCByZWdpc3RlckFyZ3M7IGFyZysrKQorICAgICAgICAgICAgICAgIGxvYWQ2NChBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsg
YXJnKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmcpKTsK
KyAgICAgICAgfQogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsg
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQu
CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CiAgICAg
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENh
bGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1Qw
KTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBH
UFJSZWcgY2FsbGVlUmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnaXN0ZXIpOworICAgIHN0
b3JlNjQoY2FsbGVlUmVnaXN0ZXIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxs
X2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTE4Nywx
NiArMjA0LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAg
ICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKLSAg
ICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRk
cmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CisgICAgSnVtcCBz
bG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgY2FsbGVlUmVnaXN0ZXIsIGFk
ZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogICAgIGFkZFNs
b3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6
ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCks
IHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihv
cGNvZGVJRCksIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQp
LCBjYWxsZWVSZWdpc3Rlcik7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChDYWxs
Q29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyA9
IGluZm87CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CisgICAgICAgIGlu
Y3JlbWVudENvdW50ZXIodGhpcywgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICBDYWxsRnJhbWVT
aHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJl
ciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgc2h1ZmZsZURhdGEu
bnVtTG9jYWxzID0KQEAgLTIwOSw3ICsyMjgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChP
cGNvZGVJRCBvcGNvZGVJCiAgICAgICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAg
ICAgIH0KICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0KLSAgICAgICAgICAgIFZhbHVlUmVj
b3Zlcnk6OmluR1BSKHJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgVmFsdWVSZWNv
dmVyeTo6aW5HUFIoY2FsbGVlUmVnaXN0ZXIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIHNodWZm
bGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAgICAgICAgIGlu
Zm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICBDYWxsRnJhbWVT
aHVmZmxlcigqdGhpcywgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAtMjQ2
LDkgKzI2NSwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlECiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMp
CiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5m
byksIHJlZ1QyKTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBub25BcmdHUFIwKTsKIAotICAgIG1fY2FsbENvbXBp
bGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5h
a2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7
CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJu
TG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1Yihs
aW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xv
Y2F0aW9uKCkpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpIHsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJ
VERpZFJldHVybkZyb21UYWlsQ2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKSVRD
b2RlOjpleGVjdXRlKFZNKiB2bSwgUHJvdG9DYQogCiAgICAgaWYgKCFmdW5jdGlvbiB8fCAhcHJv
dG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpIHsKICAgICAgICAgQVNTRVJUKCFwcm90b0Nh
bGxGcmFtZS0+bmVlZEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIGVudHJ5QWRkcmVzcyA9IGV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JDYWxsKFN0
YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9
IGVsc2UKLSAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJp
dHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NG
b3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3JpcHQoZW50
cnlBZGRyZXNzLCB2bSwgcHJvdG9DYWxsRnJhbWUpKTsKICAgICByZXR1cm4gc2NvcGUuZXhjZXB0
aW9uKCkgPyBqc051bGwoKSA6IHJlc3VsdDsKIH0KQEAgLTE2Miw5ICsxNjIsOSBAQCBEaXJlY3RK
SVRDb2RlOjpEaXJlY3RKSVRDb2RlKEpJVFR5cGUgaml0CiB7CiB9CiAKLURpcmVjdEpJVENvZGU6
OkRpcmVjdEpJVENvZGUoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0
aEFyaXR5Q2hlY2ssIEpJVFR5cGUgaml0VHlwZSkKLSAgICA6IEpJVENvZGVXaXRoQ29kZVJlZihy
ZWYsIGppdFR5cGUpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNrKQorRGly
ZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcywg
SklUVHlwZSBqaXRUeXBlKQorICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKGVudHJpZXMuY29kZVJl
ZigpLCBqaXRUeXBlKQorICAgICwgbV9lbnRyeVBvaW50cyhlbnRyaWVzKQogewogfQogCkBAIC0x
NzIsMjUgKzE3MiwxNiBAQCBEaXJlY3RKSVRDb2RlOjp+RGlyZWN0SklUQ29kZSgpCiB7CiB9CiAK
LXZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoSklUQ29kZTo6Q29kZVJlZiBy
ZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCit2b2lkIERpcmVjdEpJVENvZGU6
OmluaXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcykKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZWYpOwotICAgIG1fcmVmID0gcmVmOwotICAgIG1fd2l0
aEFyaXR5Q2hlY2sgPSB3aXRoQXJpdHlDaGVjazsKKyAgICBtX3JlZiA9IGVudHJpZXMuY29kZVJl
ZigpOworICAgIG1fZW50cnlQb2ludHMgPSBlbnRyaWVzOwogfQogCi1KSVRDb2RlOjpDb2RlUHRy
IERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorSklU
Q29kZTo6Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50VHlw
ZSB0eXBlKQogewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICByZXR1cm4g
bV9yZWYuY29kZSgpOwotICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlDaGVj
azsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
Q29kZVB0cigpOworICAgIHJldHVybiBtX2VudHJ5UG9pbnRzLmVudHJ5Rm9yKHR5cGUpOwogfQog
CiBOYXRpdmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlwZSkKQEAgLTIxMyw3
ICsyMDQsNyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENvCiAgICAg
bV9yZWYgPSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJVENvZGU6
OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCEh
bV9yZWYpOwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0
LmgiCkBAIC0xNzMsOSArMTczLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaml0Q29kZS0+
aml0VHlwZSgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNh
bGwoQXJpdHlDaGVja01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNh
bGwoRW50cnlQb2ludFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRy
ZXNzKCkgeyByZXR1cm4gZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKTsgfQogICAgIHZpcnR1
YWwgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpID0gMDsKICAgICAK
QEAgLTIyNCwxNSArMjIzLDE1IEBAIHByb3RlY3RlZDoKIGNsYXNzIERpcmVjdEpJVENvZGUgOiBw
dWJsaWMgSklUQ29kZVdpdGhDb2RlUmVmIHsKIHB1YmxpYzoKICAgICBEaXJlY3RKSVRDb2RlKEpJ
VFR5cGUpOwotICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlDaGVj
aywgSklUVHlwZSk7CisgICAgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYsIEpJ
VFR5cGUpOwogICAgIHZpcnR1YWwgfkRpcmVjdEpJVENvZGUoKTsKICAgICAKLSAgICB2b2lkIGlu
aXRpYWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOworICAgIHZv
aWQgaW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZik7CiAKLSAgICBD
b2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAgICBDb2Rl
UHRyIGFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9lbnRy
eVBvaW50czsKIH07CiAKIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklUQ29kZVdpdGhD
b2RlUmVmIHsKQEAgLTI0Myw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbml0
aWFsaXplQ29kZVJlZihDb2RlUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJp
dHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQ
b2ludFR5cGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJH
UFJJbmZvLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgVk07CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CisKK2VudW0g
QXJndW1lbnRzTG9jYXRpb24gOiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzID0gMCwKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICBSZWdpc3Rl
ckFyZ3MxSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzMkluUmVnaXN0ZXJzLAorICAgIFJl
Z2lzdGVyQXJnczNJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M0SW5SZWdpc3RlcnMsCisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAgUmVn
aXN0ZXJBcmdzNUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczZJblJlZ2lzdGVycywKKyNl
bmRpZgorICAgIFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2sKKyNlbmRpZgorfTsKKworLy8g
VGhpcyBlbnVtIG5lZWRzIHRvIGhhdmUgdGhlIHNhbWUgZW51bWVyYXRvciBvcmRlcmluZyBhcyBB
cmd1bWVudHNMb2NhdGlvbi4KK2VudW0gVGh1bmtFbnRyeVBvaW50VHlwZSA6IHVuc2lnbmVkIHsK
KyAgICBTdGFja0FyZ3NFbnRyeSA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUyA+PSA0CisgICAgUmVnaXN0ZXIxQXJnRW50cnksCisgICAgUmVnaXN0ZXIy
QXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyM0FyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjRBcmdzRW50
cnksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2Cisg
ICAgUmVnaXN0ZXI1QXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyNkFyZ3NFbnRyeSwKKyNlbmRpZgor
I2VuZGlmCisgICAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50Cit9OworCitlbnVtIEVudHJ5UG9p
bnRUeXBlIHsKKyAgICBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgU3RhY2tB
cmdzTXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBSZWdp
c3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywKKyAgICBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0
eSwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAg
ICBSZWdpc3RlckFyZ3MxLAorICAgIFJlZ2lzdGVyQXJnczIsCisgICAgUmVnaXN0ZXJBcmdzMywK
KyAgICBSZWdpc3RlckFyZ3M0LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyQXJnczUsCisgICAgUmVnaXN0ZXJBcmdzNiwKKyNl
bmRpZgorI2VuZGlmCisjZW5kaWYKKyAgICBOdW1iZXJPZkVudHJ5UG9pbnRUeXBlcworfTsKKwor
Y2xhc3MgSklURW50cnlQb2ludHMgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIENvZGVQdHI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mRW50
cnlUeXBlcyA9IEVudHJ5UG9pbnRUeXBlOjpOdW1iZXJPZkVudHJ5UG9pbnRUeXBlczsKKworICAg
IEpJVEVudHJ5UG9pbnRzKCkKKyAgICB7CisgICAgICAgIGNsZWFyRW50cmllcygpOworICAgIH0K
KworICAgIEpJVEVudHJ5UG9pbnRzKENvZGVQdHIgcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVk
RW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSwKKyAgICAg
ICAgQ29kZVB0ciByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksIENvZGVQdHIgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hl
Y2tBcml0eUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tTdGFja0FyZ3NBcml0
eUNoZWNrTm90UmVxdWlyZWRdID0gc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnk7
CisgICAgICAgIG1fZW50cnlQb2ludHNbU3RhY2tBcmdzTXVzdENoZWNrQXJpdHldID0gc3RhY2tB
cmdzQ2hlY2tBcml0eUVudHJ5OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9S
RUdJU1RFUlMKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90
UmVxdWlyZWRdID0gcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVkRW50cnk7CisgICAgICAgIG1f
ZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NdID0gcmVnaXN0ZXJBcmdz
UG9zc2libGVFeHRyYUFyZ3NFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFy
Z3NNdXN0Q2hlY2tBcml0eV0gPSByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUzsgaSArKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbcmVnaXN0ZXJFbnRy
eVR5cGVGb3JBcmd1bWVudENvdW50KGkpXSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeTsK
KyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWlyZWRF
bnRyeSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJn
c0VudHJ5KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRy
eSk7CisjZW5kaWYKKworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3IoRW50cnlQb2ludFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VudHJ5UG9pbnRzW3R5cGVdOworICAg
IH0KKworICAgIHZvaWQgc2V0RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBl
bnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlIDwgTnVtYmVyT2ZFbnRyeVBvaW50VHlw
ZXMpOworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQorCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0b2YoSklURW50cnlQb2ludHMsIG1fZW50cnlQb2lu
dHNbdHlwZV0pOworICAgIH0KKworICAgIHN0YXRpYyBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVu
dHJ5VHlwZUZvckFyZ3VtZW50Q291bnQodW5zaWduZWQgYXJnQ291bnQpCisgICAgeworI2lmIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgQVNTRVJUKGFy
Z0NvdW50KTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJBcmdDb3VudCA9IG51bWJlck9mUmVn
aXN0ZXJBcmd1bWVudHNGb3IoYXJnQ291bnQpOworICAgICAgICBpZiAoIXJlZ2lzdGVyQXJnQ291
bnQgfHwgcmVnaXN0ZXJBcmdDb3VudCAhPSBhcmdDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBS
ZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RW50cnlQb2ludFR5cGU+KFJlZ2lzdGVyQXJnczEgKyByZWdpc3RlckFyZ0NvdW50IC0gMSk7Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oYXJnQ291bnQpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJp
dHk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5cGUgcmVnaXN0ZXJF
bnRyeVR5cGVGb3JBcmd1bWVudFR5cGUoQXJndW1lbnRzTG9jYXRpb24gdHlwZSkKKyAgICB7Cisj
aWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBBU1NF
UlQodHlwZSAhPSBTdGFja0FyZ3MpOworICAgICAgICBpZiAodHlwZSA9PSBSZWdpc3RlckFyZ3NX
aXRoRXh0cmFPblN0YWNrKQorICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9pbnRU
eXBlPihSZWdpc3RlckFyZ3MxICsgdHlwZSAtIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyk7Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsK
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAgICAg
IG1fZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisKKyAg
ICBKSVRFbnRyeVBvaW50cyYgb3BlcmF0b3I9KGNvbnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhlcikK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0t
OykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRzW2ld
OworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBDb2Rl
UHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKK2NsYXNzIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZiA6IHB1YmxpYyBKSVRFbnRyeVBvaW50cyB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKworICAgIEpJVEVudHJ5UG9p
bnRzV2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihj
b25zdCBKSVRFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgICAgICA6IEpJVEVudHJ5UG9p
bnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAgewor
ICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIGNvbnN0
IEpJVEVudHJ5UG9pbnRzJiBvdGhlcikKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhvdGhlcikK
KyAgICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorICAgIAorICAgIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQdHIgc3RhY2tBcmdzQXJp
dHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hlY2tB
cml0eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKENvZGVQdHIoKSwgQ29kZVB0cigp
LCBDb2RlUHRyKCksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LCBzdGFja0Fy
Z3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgewor
ICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQ
dHIgcmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRyIHJl
Z2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdzQ2hl
Y2tBcml0eUVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1
aXJlZEVudHJ5LCBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAgOiBK
SVRFbnRyeVBvaW50cyhyZWdpc3RlckFyZ3NOb0NoZWNrc1JlcXVpcmVkRW50cnksIHJlZ2lzdGVy
QXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksCisgICAgICAgICAgICByZWdpc3RlckFyZ3NDaGVj
a0FyaXR5RW50cnksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAgICAg
ICAgICAgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihjb2Rl
UmVmKQorICAgIHsKKyAgICB9CisKKyAgICBDb2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBtX2Nv
ZGVSZWY7IH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsKK307CisKK2lubGlu
ZSBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbkZvcih1bnNpZ25lZCBhcmd1bWVu
dENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICBpZiAoIWFyZ3VtZW50Q291bnQpCisgICAgICAgIHJldHVybiBTdGFja0FyZ3M7CisgICAg
CisgICAgYXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMgKyAxLCBhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXJndW1lbnRzTG9jYXRpb24+KEFyZ3VtZW50c0xvY2F0aW9uOjpSZWdpc3RlckFy
Z3MxSW5SZWdpc3RlcnMgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzOworI2VuZGlmCit9CisK
K2lubGluZSBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9yKHVuc2lnbmVk
IGFyZ3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgIGlmICghYXJndW1lbnRDb3VudCB8fCBhcmd1bWVudENvdW50ID4gTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmV0dXJuIFJlZ2lz
dGVyQXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRy
eVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6OlJlZ2lzdGVyQXJnczEgKyBhcmd1bWVudENvdW50
IC0gMSk7CisjZWxzZQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgVU5V
U0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGVG
b3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGFyZ3VtZW50TG9jYXRpb24g
PT0gU3RhY2tBcmdzKQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7Cisg
ICAgCisgICAgaWYgKGFyZ3VtZW50TG9jYXRpb24gPT0gUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25T
dGFjaykKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAgIAor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6OlJl
Z2lzdGVyQXJnczEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbiAtIFJl
Z2lzdGVyQXJnczFJblJlZ2lzdGVycykpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1l
bnRMb2NhdGlvbik7CisgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2VuZGlm
Cit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRUeXBlIHRodW5rRW50cnlQb2ludFR5cGVGb3Io
QXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgYXJndW1lbnRMb2NhdGlv
bkluZGV4ID0gc3RkOjptaW4oUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjayAtIDEsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihhcmd1bWVudExvY2F0aW9uKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGFyZ3VtZW50TG9jYXRpb25JbmRleCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudExvY2F0aW9uKTsKKyAgICByZXR1cm4gU3RhY2tBcmdz
RW50cnk7CisjZW5kaWYKK30KKworaW5saW5lIFRodW5rRW50cnlQb2ludFR5cGUgdGh1bmtFbnRy
eVBvaW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBhcmd1bWVudENvdW50ID0gbnVtYmVy
T2ZSZWdpc3RlckFyZ3VtZW50c0Zvcihhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oVGh1bmtFbnRyeVBvaW50VHlwZTo6UmVn
aXN0ZXIxQXJnRW50cnkgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzRW50cnk7CisjZW5kaWYK
K30KKworY2xhc3MgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgeworcHVibGljOgor
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIENvZGVQdHI7CisgICAgdHlwZWRlZiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtYmVyT2ZFbnRyeVR5cGVzID0gVGh1bmtFbnRyeVBvaW50VHlwZTo6VGh1bmtFbnRyeVBvaW50
VHlwZUNvdW50OworCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoKQorICAg
IHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVm
IGNvZGVSZWYpCisgICAgICAgIDogbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0KKwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvbnN0IEpJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAgOiBtX2NvZGVSZWYob3RoZXIubV9j
b2RlUmVmKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
RW50cnlUeXBlczsgaSsrKQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IG90aGVyLm1f
ZW50cnlQb2ludHNbaV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihUaHVua0VudHJ5
UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50c1t0eXBl
XTsKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3Vt
ZW50c0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5Rm9yKHRodW5rRW50cnlQ
b2ludFR5cGVGb3IoYXJndW1lbnRzTG9jYXRpb24pKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVu
dHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKKyAgICB7Cisg
ICAgICAgIG1fZW50cnlQb2ludHNbdHlwZV0gPSBlbnRyeTsKKyAgICB9CisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRW50cnlGb3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmLCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50cmll
cygpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlwZXM7
IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCk7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkgeyByZXR1cm4gbV9jb2RlUmVm
OyB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3BlcmF0b3I9KGNv
bnN0IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIG1fY29kZVJlZiA9IG90aGVyLm1fY29kZVJlZjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tp
XSA9IG90aGVyLm1fZW50cnlQb2ludHNbaV07CisgICAgICAgIAorICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCitwcml2YXRlOgorICAgIENvZGVSZWYgbV9jb2RlUmVmOworICAgIENvZGVQ
dHIgbV9lbnRyeVBvaW50c1tudW1iZXJPZkVudHJ5VHlwZXNdOworfTsKKworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVDo6Q29kZVJlZiBK
SVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmMpCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0cy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5CkBA
IC0xMjksNyArMTI5LDkgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRp
dgogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhVTktf
SUQpOwogCiAgICAgcGF0Y2hCdWZmZXIubGluayhuYXRpdmVDYWxsLCBGdW5jdGlvblB0cihmdW5j
KSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiSklUIENUSSBuYXRp
dmUgY2FsbCIpKTsKKyAgICBKSVQ6OkNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsICgiSklUIENUSSBuYXRpdmUgY2FsbCIpKTsKKyAgICAKKyAgICByZXR1cm4gSklU
RW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUo
KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKIAotSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElO
YXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYg
SklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0
aW9uKQogewotICAgIHJldHVybiB2bS0+Z2V0Q1RJU3R1YihuYXRpdmVDYWxsR2VuZXJhdG9yKTsK
KyAgICByZXR1cm4gdm0tPmdldEpJVEVudHJ5U3R1YihuYXRpdmVDYWxsR2VuZXJhdG9yKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MCwxMCArODkwLDE0IEBAIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+
c2NvcGVVbmNoZWNrZWQoKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxl
ZS0+ZXhlY3V0YWJsZSgpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIsIGNvZGVQdHJGb3JMaW5raW5nOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKSkgewotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihr
aW5kLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2luZyA9
IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJp
dHkpOworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKTsKIApAQCAtOTE0LDE3ICs5MTgsNDEgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2RlQmxv
Y2tTbG90OwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKLSAgICAgICAgaWYgKGV4ZWND
YWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygp
KQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAgICAg
ICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CisgICAgICAgIHNpemVfdCBjYWxsZXJBcmd1bWVu
dENvdW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICAg
ICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQg
PCBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpIHsKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAgICBp
ZiAoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAgICAg
ICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChj
YWxsZXJBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9yTGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHkp
OworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0Fy
Z3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1
bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUworICAgICAgICB9IGVsc2UgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdp
c3RlcnMoKSkgeworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2FsbGVl
QXJndW1lbnRDb3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtp
bmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9y
KGtpbmQsIEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQo
Y2FsbGVyQXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZvckxp
bmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFB
cmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUgZW50
cnkgcG9pbnRzIHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2b2lk
KSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVG
b3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAgIGVu
dHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vl
bk9uY2UoKSkKICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQotICAg
ICAgICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVl
LCBjb2RlUHRyKTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBj
b2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2luZyA6
IGNvZGVQdHIpOwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxN
b2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7
CiB9CkBAIC05NTksNyArOTg3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5r
RGlyZWN0Q2EKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0
aW9uKCkpCi0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQs
IE11c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQs
IGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011c3RD
aGVja0FyaXR5IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2RlUHRy
ID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eSk7CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKIApAQCAtOTcxLDEzICsxMDAzLDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25MaW5rRGlyZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBBcml0
eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwogICAg
ICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFy
Z3VtZW50cygpOwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0eSA9
IE11c3RDaGVja0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291bnQg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxs
TGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
bG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChhcmd1
bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAgICAg
ICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xv
Y2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAgICAg
IGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lzdGVy
QXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0ZXJF
bnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2UgaWYg
KGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UKKyAg
ICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQor
I2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7
Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2lu
ZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVja05v
dFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBv
aW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RGb3Io
ZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCArMTA2
OCwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAgICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAg
IH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAg
Ly8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkgaWYg
dGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdpbGwg
YmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2b2lk
KSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVja0Fy
aXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50
cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAg
ICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9p
bnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygp
LAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxs
TW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVua3Mo
KQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVDYWxs
KFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZl
Q2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRpdmVf
Y2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdlbmVy
YXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAgICAg
ICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIsIG5h
dGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0aXZl
Q2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6OmN0
aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtz
OjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNl
SklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50
Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVybiBj
dGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAoIXZt
LT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZlQ29u
c3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxs
aW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRFbnRy
eVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2ZUNv
bnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRpdmVD
b25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtz
OjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9y
LT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50cnlT
dHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkg
PSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhSZWYo
KSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRpb24g
dGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFTU0VS
VCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVl
ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1
ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpqaXRD
YWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBnZW5l
cmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxsVGh1
bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlTdHVi
TWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkpOwor
ICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRocmVh
ZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQoIWlz
Q29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9IGdl
bmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9
CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lk
KikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFi
bGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZlRXhl
Y3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rpb25T
dHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBudWxs
cHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rp
b25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMs
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkK
K05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50
cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJU
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgp
KTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9z
dEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5lcmF0
b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZt
KTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBl
bnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29k
ZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhvc3RD
YWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVj
dCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpI
b3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklUQ29k
ZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4
ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlv
biwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUp
OwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1
bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZl
RXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCi1O
YXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVu
a3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBj
YWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxw
dHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShy
ZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5o
IgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgogICAg
IEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGpp
dEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRFbnRy
eU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRp
dmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZl
VGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2ludHNX
aXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRKU0Nh
bGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBKSVRD
YWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVu
Y3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlv
blN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRo
dW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZN
KiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5lcmF0
b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVG
dW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3Mywx
MCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9jdGlT
dHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50cnlQ
b2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1faml0
RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdlbmVy
YXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0VudHJ5
U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtFbnRy
eVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1wSWZO
b3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihSZWdp
c3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQpOwor
ICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAgICAg
IHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRp
ZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQogICAg
IAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1
bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQg
PSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICB6
ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0
TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwg
ZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50MzIo
ZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZh
Y2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJl
Z2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2
ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVudFJl
Z2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8IE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAgICBH
UFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgpOwor
CisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
cmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAgIHN0
YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFj
aywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAg
IHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdXNl
ZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBSZWdp
c3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJz
IHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGljIFJl
Z2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVy
cyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRm
Z0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRo
ZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NDAsMjEgKzU0MCwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lkIGxp
bmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1bmtF
bnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxM
aW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJlZi5j
b2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5rSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBvaW50
cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAotc3Rh
dGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywg
VGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZt
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0b3Ig
Z2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5nZXRD
VElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZt
LT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0gICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwg
Y2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2aXJ0
dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Ns
b3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8u
c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51bGxw
dHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJv
dXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAK
IHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxs
ZWUpCkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBsaW5rU2xvd0ZvcigKICAgICBsaW5rU2xvd0Zv
cih2bSwgY2FsbExpbmtJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSogdm0s
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJl
ZikKK3N0YXRpYyB2b2lkIHJldmVydENhbGwoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY29kZVJlZikKIHsKICAgICBp
ZiAoY2FsbExpbmtJbmZvLmlzRGlyZWN0KCkpIHsKICAgICAgICAgY2FsbExpbmtJbmZvLmNsZWFy
Q29kZUJsb2NrKCk7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0mIHZtLCBD
YWxsTGlua0luZm8mIGNhbAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkKICAg
ICAgICAgZGF0YUxvZygiVW5saW5raW5nIGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLmhvdFBhdGhP
dGhlcigpLCAiXG4iKTsKICAgICAKLSAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2
bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKTsKKyAgICByZXZlcnRDYWxsKCZ2
bSwgY2FsbExpbmtJbmZvLCB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVu
a0dlbmVyYXRvcikpOwogfQogCiB2b2lkIGxpbmtWaXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlYywg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCkBAIC02ODMsOSArNjgzLDkgQEAgdm9pZCBsaW5r
VmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbAogICAgIGlmIChzaG91bGREdW1wRGlzYXNz
ZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAgZGF0YUxvZygiTGlua2luZyB2aXJ0
dWFsIGNhbGwgYXQgIiwgKmNhbGxlckNvZGVCbG9jaywgIiAiLCBjYWxsZXJGcmFtZS0+Y29kZU9y
aWdpbigpLCAiXG4iKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsg
PSB2aXJ0dWFsVGh1bmtGb3IoJnZtLCBjYWxsTGlua0luZm8pOworICAgIEpJVEpTQ2FsbFRodW5r
RW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcigmdm0sIGNh
bGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRo
dW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUo
dmlydHVhbFRodW5rLCB2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRT
bG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29kZVJlZigpLCB2bSwg
bnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNzQwLDYgKzc0MCw3IEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExpbmtJbmZvLnNldEhhc1NlZW5D
bG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNl
czsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBh
cmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtNzUxLDcgKzc1
Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIGNvZGVCbG9jayA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2Fs
bCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0aGVy
IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1pc21h
dGNoLAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hv
bGUgdGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVCbG9j
ayB8fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFyYXJn
cygpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENvdW50
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2Fs
bExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxGb3Io
ZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CkBAIC03NzUsNyArNzc2LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICB9
CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2FsbExp
bmtJbmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChjYWxsTGlua0luZm8uYXJndW1l
bnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBhcmd1bWVudFJl
Z2lzdGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoJnZtLCBjYWxs
ZXJDb2RlQmxvY2spOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd1BhdGg7
CkBAIC03OTcsNiArODAxLDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUjsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgICAg
ICBzY3JhdGNoR1BSID0gZnJhbWVTaHVmZmxlci0+YWNxdWlyZUdQUigpOworICAgICAgICBlbHNl
IGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgICAgIHNj
cmF0Y2hHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIwOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQ
Uik7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBmdW5jdGlvbiBhbmQgc3Rhc2gg
dGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KQEAgLTg2MiwxMyArODY4LDIzIEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBHUFJSZWcgZmFzdENvdW50c0Jhc2VHUFI7CiAgICAg
aWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0gZnJhbWVTaHVm
Zmxlci0+YWNxdWlyZUdQUigpOworICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVudHNJ
blJlZ2lzdGVycygpKQorI2lmIENQVShBUk02NCkKKyAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIg
PSBHUFJJbmZvOjpub25BcmdHUFIxOworI2Vsc2UKKyAgICAgICAgZmFzdENvdW50c0Jhc2VHUFIg
PSBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBmYXN0Q291bnRz
QmFzZUdQUiA9CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
Y2FsbGVlR1BSLCBjb21wYXJpc29uVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QzKTsKICAgICB9Ci0g
ICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihmYXN0Q291bnRzLmdl
dCgpKSwgZmFzdENvdW50c0Jhc2VHUFIpOworICAgIGlmIChmYXN0Q291bnRzKQorICAgICAgICBz
dHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkp
LCBmYXN0Q291bnRzQmFzZUdQUik7CiAgICAgaWYgKCFmcmFtZVNodWZmbGVyICYmIGNhbGxMaW5r
SW5mby5pc1RhaWxDYWxsKCkpCiAgICAgICAgIHN0dWJKaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOworCisgICAgaW5jcmVtZW50Q291bnRlcigmc3R1YkppdCwgVk06OlBvbHltb3JwaGljQ2Fs
bCk7CisKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25WYWx1ZUdQUiwg
Y2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsK
QEAgLTg3Nyw4ICs4OTMsMzIgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBD
YWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFudCgpOwogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9y
Q2FsbCgpKTsKKworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUgPSBTdGFja0FyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWQ7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0ZXJz
KCkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbENhc2VzW2Nhc2VJ
bmRleF0uY29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAg
ICAgICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVl
QXJndW1lbnRDb3VudCA9PSBjYWxsZXJBcmd1bWVudENvdW50IHx8IGNhbGxlZUFyZ3VtZW50Q291
bnQgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50
VHlwZSBlbnRyeUZvckFyZ0NvdW50ID0gSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBl
Rm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJl
c3NGb3JDYWxsKGVudHJ5Rm9yQXJnQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29k
ZVB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVudHJ5Rm9yQXJnQ291
bnQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVu
dHJ5VHlwZSA9IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9Ci0gICAgICAgICAgICB2YXJpYW50LmV4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlD
aGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChlbnRyeVR5cGUpOworICAgICAg
ICBBU1NFUlQoY29kZVB0cik7CiAgICAgICAgIAogICAgICAgICBpZiAoZmFzdENvdW50cykgewog
ICAgICAgICAgICAgc3R1YkppdC5hZGQzMigKQEAgLTg4Niw3ICs5MjYsNyBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGZh
c3RDb3VudHNCYXNlR1BSLCBjYXNlSW5kZXggKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKLSAgICAgICAgICAgIENhbGxGcmFtZVNo
dWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90KCkpLnByZXBhcmVGb3JUYWls
Q2FsbCgpOworICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVm
Zmxlci0+c25hcHNob3QoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKS5wcmVwYXJl
Rm9yVGFpbENhbGwoKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJK
aXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlzVGFp
bENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7
CkBAIC05MDcsMTkgKzk0NywxOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2FsbGVlSlNWYWx1ZVJl
Z3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKSk7CiAjZWxzZQot
ICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhH
UFJJbmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0
aW9uKCkgPT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2FsbGVl
SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7CiAj
ZW5kaWYKICAgICAgICAgZnJhbWVTaHVmZmxlci0+cHJlcGFyZUZvclNsb3dQYXRoKCk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDAp
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOwogI2Vu
ZGlmCiAgICAgfQotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
JmNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOwotICAgIAotICAgIHN0dWJKaXQu
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6cmVnVDQpOworICAgIHN0
dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIx
KTsKKyAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86
Om5vbkFyZ0dQUjEpOworCisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpKdW1wIHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcih2bSwgc3R1YkppdCwgb3duZXIsIEpJVENvbXBpbGF0aW9uQ2FuRmFp
bCk7CkBAIC05NDAsNyArOTgwLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24o
KS5sYWJlbEF0T2Zmc2V0KDApKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
ZG9uZSwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpLmxhYmVsQXRPZmZzZXQoMCkpOwotICAg
IHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1Yihs
aW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJ
bmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7CiAgICAgCiAgICAgYXV0byBzdHViUm91dGluZSA9
IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFM
SVpFX0NPREVfRk9SKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVj
aWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJ
VEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50
ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMg
SlNJbnRlcmZhY2VKSVQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBU
aGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGlu
dCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFjaywg
SW5SZWdpc3RlcnMgfTsKKworICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50
IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUgc3Bp
bGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFyZ0xv
Y2F0aW9uID0gT25TdGFjaykKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAgICBl
bWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwotICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQg
KyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQorICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9uID09
IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5ID0g
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJhbWVC
ZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNFbnRy
eSA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOworICAg
ICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9m
IGFyZ3VtZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhwZWN0
ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3Vt
ZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7CisgICAgICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdS
ZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4
cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFw
cGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRU
aHVua0pJVChWTSogdm0pCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVudHNF
bnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwog
ICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1lbnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7CiAg
ICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0ZXJJ
RCBhcmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZW1p
dEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBl
bmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLAorICAgICAgICAgICAgICAgIEFkZHJlc3MoYXJn
dW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgdm0u
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZv
aWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1wJiBmYWlsdXJlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJlKTsKICAgICAgICAgfQorCisgICAgICAgIHZv
aWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5s
aW5rKHRoaXMpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5jbGVhcigpOworICAgICAgICB9CisK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0ZXJJ
RCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwxMyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNv
bnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZpbmFs
aXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5k
KQogICAgICAgICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAq
dGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9m
YWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwot
ICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6
ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAgICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVudHNF
bnRyeS5pc1NldCgpKQorICAgICAgICAgICAgICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNFbnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsKKyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJn
dW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3RlckVudHJ5ID0gcGF0
Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkpOworCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOworCisgICAgICAg
ICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnksIHJl
Z2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5LmNv
ZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50cnkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRo
UmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIw
IGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
bV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJBcmd1
bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1bWVu
dHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+IG1f
Y2FsbHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAogbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2Ns
YXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2VuZXJh
dG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdlbmVy
YXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgKCpK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcikoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjMgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikp
OwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoQ0Nh
bGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVua0Vu
dHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAgIGVu
dHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQubGFi
ZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9n
dWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRl
eCk7CisgICAgfQorCisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xv
Z3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsK
KyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRS
ZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShqaXQpOworICAgIFVOVVNFRF9QQVJBTShlbnRyeVBv
aW50cyk7CisjZW5kaWYKKyAgICBlbnRyeVBvaW50c1tTdGFja0FyZ3NdID0gaml0LmxhYmVsKCk7
Cit9CisKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIENDYWxsSGVscGVycyYgaml0LCBW
TSogdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VDbGkgc2xvd1BhdGhGdW5jdGlvbikKIHsKQEAgLTg4
LDcgKzEwNSw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIC8vIE1vdmluZyB0aGUg
c3RhY2sgZG93biBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCBieXRlcyBnaXZlcyB1cyBy
b29tIGZvciBvdXIgMyBhcmd1bWVudHMKICAgICAvLyBhbmQgc3BhY2UgZm9yIHRoZSAxNiBieXRl
IHJldHVybiBhcmVhLgogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
LW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3Rlcik7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMy
KSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwpAQCAtMTAwLDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogI2Vsc2UK
ICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1
bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlv
bihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFy
Z0dQUjApOwpAQCAtMTI3LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAg
IGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxsVGh1bmtFbnRy
eVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgLy8g
VGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0aGUgbGluayByZWdpc3Rl
ci4gV2Ugd2lsbCBoZW5jZQogICAgIC8vIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRoZSBj
YWxsIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbApAQCAtMTM1LDQ1ICsx
NTIsMTUzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXIKICAgICAv
LyB0byBiZSBpbiByZWdUMC9yZWdUMSAocGF5bG9hZC90YWcpLCB0aGUgQ2FsbEZyYW1lIHRvIGhh
dmUgYWxyZWFkeQogICAgIC8vIGJlZW4gYWRqdXN0ZWQsIGFuZCBhbGwgb3RoZXIgcmVnaXN0ZXJz
IHRvIGJlIGF2YWlsYWJsZSBmb3IgdXNlLgogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwotICAg
IAorCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQb2lu
dFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnkoaml0
LCBlbnRyeVBvaW50cyk7CiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0Nh
bGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9U
SFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBj
YWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJl
ZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsi
KSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY2FsbEVudHJ5UG9pbnRz
ID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZik7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRy
eVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9pbnRz
LnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5kZXgp
LAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRyeUlu
ZGV4XSkpOworICAgIH0KKworICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7Cit9CisKK0pJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQoreworICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sgb3Ig
aW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKKyAgICAvLyBzYXZlIHRoZSByZXR1
cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0aW9u
IGNhbGwKKyAgICAvLyB0byBwZXJmb3JtIGxpbmtpbmcgYW5kIGxhenkgY29tcGlsYXRpb24gaWYg
bmVjZXNzYXJ5LiBXZSBleHBlY3QgdGhlIENhbGxMaW5rSW5mbworICAgIC8vIHRvIGJlIGluIEdQ
UkluZm86Om5vbkFyZ0dQUjAsIHRoZSBjYWxsZWUgdG8gYmUgaW4gYXJndW1lbnRSZWdpc3RlckZv
ckNhbGxlZSgpLAorICAgIC8vIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gYWRq
dXN0ZWQsIGFuZCBhcmd1bWVudHMgaW4gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgLy8gYW5kL29y
IGluIHRoZSBzdGFjayBhcyBhcHByb3ByaWF0ZS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsK
KyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBv
aW50VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShq
aXQsIGVudHJ5UG9pbnRzKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjpub25BcmdHUFIxKTsgLy8gU2F2ZSBjYWxsZWUncyBmcmFtZSBwb2ludGVy
CisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CisKKyAgICBpZiAobWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnNldHVwQXJndW1lbnRzKEdQ
UkluZm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaWYgKG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgIEdQUlJl
ZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAg
aml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKworICAgIC8vIGxvYWQgInRo
aXMiCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZSgw
LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKSk7CisKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZmlsbFVuZGVmaW5lZFtOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTXTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5k
ZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsr
KSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdID0gaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGFyZ0luZGV4KSk7CisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUFy
Z3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlv
bkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRv
bmVGaWxsaW5nID0gaml0Lmp1bXAoKTsKKworICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAx
OyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFy
Z0luZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVmaW5lZFthcmdJbmRleF0ubGluaygmaml0KTsK
KyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
YXJnSW5kZXgpKTsKKyAgICB9CisKKyAgICBkb25lRmlsbGluZy5saW5rKCZqaXQpOworI2VuZGlm
CisKKworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYg
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGRpcmVjdCBjYWxsIHRodW5rIikpOwor
ICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworICAgIAorICAgIGZvciAo
dW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0VudHJ5
UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2ludHMu
c2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRleCks
CisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5SW5k
ZXhdKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIC8v
IEZvciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2Ug
aWYgeW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgogLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVu
IHlvdSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxs
VGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKICAgICAKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsKKwor
ICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRzKTsK
KwogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwp
OwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVO
S19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBwb2x5
bW9ycGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMg
Y2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dp
dGhSZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYo
Y29kZVJlZik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tBcmdz
OyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsrKSB7
CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0Vu
dHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0
aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IGNhbGxFbnRyeVBvaW50czsKIH0KIAogLy8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIGEgbWVnYW1vcnBoaWMgdmlydHVhbCBjYWxsIHZzLiBhIHNsb3cKIC8vIHBhdGggdmly
dHVhbCBjYWxsIHNvIHRoYXQgd2UgY2FuIGVuYWJsZSBmYXN0IHRhaWwgY2FsbHMgZm9yIG1lZ2Ft
b3JwaGljCiAvLyB2aXJ0dWFsIGNhbGxzIGJ5IHVzaW5nIHRoZSBzaHVmZmxlci4KIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MzEKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bykKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSog
dm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAgIC8vIFRoZSBjYWxsZWUgaXMg
aW4gcmVnVDAgKGZvciBKU1ZBTFVFMzJfNjQsIHRoZSB0YWcgaXMgaW4gcmVnVDEpLgotICAgIC8v
IFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2ssIG9yIGluIHRoZSBsaW5rIHJlZ2lz
dGVyLiBXZSB3aWxsIGhlbmNlCi0gICAgLy8ganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRo
ZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZQotICAgIC8vIG1ha2Ug
YSBDKysgZnVuY3Rpb24gY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4KKyAg
ICAvLyBUaGUgY2FsbGVlIGlzIGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSAoZm9yIEpT
VkFMVUUzMl82NCwgaXQgaXMgaW4gcmVnVDE6cmVnVDApLgorICAgIC8vIFRoZSBDYWxsTGlua0lu
Zm8gaXMgaW4gR1BSSW5mbzo6bm9uQXJnR1BSMC4KKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3Mg
aXMgb24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayByZWdpc3Rlci4KKyAgICAvLy8gV2Ugd2ls
bCBoZW5jZSBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRv
IHRoZSBjYWxsCisgICAgLy8gZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxs
IHRvIHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgogCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dCh2bSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAK
LSAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4ZWN1dGlvbiwgYW5kIHJlZ1QyIGNvbnRhaW5z
IHRoZSBDYWxsTGlua0luZm8uIENvdW50IHRoZQotICAgIC8vIHNsb3cgcGF0aCBleGVjdXRpb24g
Zm9yIHRoZSBwcm9maWxlci4KKworICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJSZWcgY2FsbGVl
VGFnUmVnID0gR1BSSW5mbzo6cmVnVDE7CisjZW5kaWYKKyAgICBHUFJSZWcgdGFyZ2V0UmVnID0g
R1BSSW5mbzo6bm9uQXJnR1BSMTsKKyAgICAvLyBUaGlzIGlzIHRoZSBDYWxsTGlua0luZm8qIG9u
IGVudHJ5IGFuZCB1c2VkIGxhdGVyIGFzIGEgdGVtcC4KKyAgICBHUFJSZWcgY2FsbExpbmtJbmZv
QW5kVGVtcFJlZyA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisKKyAgICBqaXQuZmlsbEFyZ3VtZW50
UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcmVn
aXN0ZXJFbnRyeSA9IGppdC5sYWJlbCgpOworI2VuZGlmCisKKyAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpWaXJ0dWFsQ2FsbCk7CisKKyAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4
ZWN1dGlvbi4gQ291bnQgdGhlIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxlci4K
ICAgICBqaXQuYWRkMzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLAot
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5rSW5m
bzo6b2Zmc2V0T2ZTbG93UGF0aENvdW50KCkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0
aENvdW50KCkpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZvciBl
bGltaW5hdGluZyB0aGVzZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERGRyBr
bm93cyB0aGF0IHRoZSB2YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVseSBh
IGZ1bmN0aW9uLgpAQCAtMTgxLDU0ICszMDYsNjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZp
cnR1YWxUaHVua0ZvcihWTQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc2xvd0Nhc2UuYXBwZW5k
KAogICAgICAgICBqaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZVJlZywgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CiAjZWxzZQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJy
YW5jaDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVn
VDEsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVUYWdSZWcsCiAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OwogI2VuZGlmCi0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5m
bzo6cmVnVDAsIEpTRnVuY3Rpb25UeXBlKSk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFu
Y2hJZk5vdFR5cGUoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uVHlwZSkpOwogICAgIAogICAgIC8vIE5v
dyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogICAgIAogICAgIGppdC5sb2FkUHRyKAot
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246
Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4
ZWN1dGFibGUoKSksCisgICAgICAgIHRhcmdldFJlZyk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCi0gICAgICAgIEdQ
UkluZm86OnJlZ1Q0KTsKLSAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOworICAgICAgICAgICAgdGFyZ2V0UmVn
LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZvcigKKyAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksCisgICAgICAgICAgICAgICAgZW50cnlQb2lu
dFR5cGVGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSksCisgICAgICAgIHRh
cmdldFJlZyk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVs
cGVyczo6WmVybywgdGFyZ2V0UmVnKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3
ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QK
ICAgICAvLyBjYWxsLgogICAgIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCBy
ZXR1cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpyZWdUNCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgdGFyZ2V0UmVn
KTsKICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewotICAgICAgICBqaXQucHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0
LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQuc3Bp
bGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICBqaXQu
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcpOwor
ICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyh0YXJnZXRSZWcpOwogICAgIH0KLSAg
ICBqaXQuanVtcChHUFJJbmZvOjpyZWdUNCk7Ci0KKyAgICBqaXQuanVtcCh0YXJnZXRSZWcpOwog
ICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZq
aXQsIFZNOjpWaXJ0dWFsU2xvd0NhbGwpOworCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93IGFu
eXRoaW5nLCBzbyByZXZlcnQgdG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgorICAgIGppdC5zcGlsbEFy
Z3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCiAgICAgc2xvd1Bh
dGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uVmlydHVhbENhbGwpOwogICAgIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUoCi0gICAgICAgIHBhdGNoQnVmZmVyLAorICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsCiAgICAgICAgICgiVmlydHVh
bCAlcyBzbG93IHBhdGggdGh1bmsiLAogICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9
PSBDYWxsTW9kZTo6UmVndWxhciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09
IENhbGxNb2RlOjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0IikpOworICAgIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAgY2FsbEVudHJ5UG9pbnRzLnNl
dEVudHJ5Rm9yKFN0YWNrQXJnc0VudHJ5LCBjb2RlUmVmLmNvZGUoKSk7CisKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHJlZ2lzdGVyRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50
cnkpOworCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gUmVnaXN0ZXIxQXJnRW50cnk7
IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspCisg
ICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0VudHJ5
UG9pbnRUeXBlPihlbnRyeUluZGV4KSwgcmVnaXN0ZXJFbnRyeVB0cik7CisjZW5kaWYKKworICAg
IHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRl
clZpYUNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRT
YXZlZFRhZ3MgfTsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZW5l
cmF0b3IoVk0qIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBl
IGVudHJ5VHlwZSA9IEVudGVyVmlhQ2FsbCkKK3N0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhSZWYg
bmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBU
aHVua0VudHJ5VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5
CkBAIC0yMzcsOCArMzc3LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZl
Rm9yR2UKICAgICAKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogCisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIHN0YWNrQXJnc0VudHJ5OworCiAgICAgc3dpdGNoIChlbnRyeVR5cGUpIHsK
ICAgICBjYXNlIEVudGVyVmlhQ2FsbDoKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3Rl
cnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworICAgICAgICBzdGFja0FyZ3NFbnRyeSA9IGpp
dC5sYWJlbCgpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3M6CkBAIC0zNzksMjUg
KzUyNSwzMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAg
aml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsICgibmF0aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBFbnRl
clZpYUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRhaWwgV2l0aCBTYXZlZCBUYWdzICIgOiBlbnRyeVR5
cGUgPT0gRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2ZWQg
VGFncyAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVz
IHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJU
YWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRT
YXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2lu
ZCkuZGF0YSgpKSk7CisgICAgaWYgKGVudHJ5VHlwZSA9PSBFbnRlclZpYUNhbGwpIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mKHN0YWNrQXJnc0VudHJ5KTsKKworICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNX
aXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5j
b2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQdHIpOworICAgIH0KKworICAgIHJldHVy
biBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVSZWYu
Y29kZSgpKTsKKwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRv
cihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSog
dm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwpOwog
fQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0qIHZt
KQogewotICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBFbnRl
clZpYUp1bXBXaXRoU2F2ZWRUYWdzKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZt
LCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncykuY29kZVJlZigpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2Vu
ZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBDb2Rl
Rm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5hdGl2
ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRh
Z3MpLmNvZGVSZWYoKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVj
dEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3RydWN0
R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBD
b2RlRm9yQ29uc3RydWN0KTsKIH0KQEAgLTUzNiw2ICs2OTAsNDMgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHVucmVhY2hhYmxlR2VuZXJhdAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoInVucmVhY2hhYmxlIHRodW5rIikpOwogfQogCisjaWYgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWRSZWdD
YWxsKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtKQoreworICAgIC8vIGxvYWQgc3Ry
aW5nCisgICAgR1BSUmVnIHRoaXNSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1
bWVudCgwKTsKKyAgICBHUFJSZWcgaW5kZXhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rp
b25Bcmd1bWVudCgyKTsKKyAgICBHUFJSZWcgbGVuZ3RoUmVnID0gYXJndW1lbnRSZWdpc3RlckZv
ckZ1bmN0aW9uQXJndW1lbnQoMyk7CisgICAgR1BSUmVnIHRlbXBSZWcgPSBTcGVjaWFsaXplZFRo
dW5rSklUOjpub25BcmdHUFIwOworCisgICAgaml0LmNoZWNrSlNTdHJpbmdBcmd1bWVudCgqdm0s
IHRoaXNSZWcpOworCisgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3Rh
cnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKKyAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVscGVy
czo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIGxlbmd0aFJlZyk7CisgICAgaml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1Zh
bHVlT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNo
VGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wUmVnKSk7CisKKyAgICAvLyBsb2FkIGlu
ZGV4CisgICAgaml0Lm1vdmUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSks
IGluZGV4UmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdEludDMy
KGluZGV4UmVnKSk7CisKKyAgICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVsdGFu
ZW91c2x5IGZpbHRlciBuZWdhdGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0IGFy
ZSB0b28gbGFyZ2UKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIGxlbmd0aFJlZykpOworCisgICAgLy8gTG9h
ZCB0aGUgY2hhcmFjdGVyCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgaXMxNkJp
dDsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlzdCBjb250OEJpdDsKKyAgICAvLyBM
b2FkIHRoZSBzdHJpbmcgZmxhZ3MKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wUmVnLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwgbGVuZ3RoUmVnKTsKKyAg
ICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wUmVnLCBTdHJpbmdJbXBs
OjpkYXRhT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJhbmNo
VGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBsZW5ndGhSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSkpOworICAgIGppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHRlbXBSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNPbmUsIDApLCB0ZW1wUmVnKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1bXAo
KSk7CisgICAgaXMxNkJpdC5saW5rKCZqaXQpOworICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdv
LCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQubGluaygmaml0KTsKK30KKyNlbHNlCiBzdGF0
aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2bSkK
IHsKICAgICAvLyBsb2FkIHN0cmluZwpAQCAtNTY1LDYgKzc1Niw3IEBAIHN0YXRpYyB2b2lkIHN0
cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGgKICAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CiAgICAgY29udDhCaXQubGluaygmaml0KTsKIH0KKyNlbmRpZgogCiBzdGF0
aWMgdm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0sIE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHNyYywgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQg
ZHN0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzY3JhdGNoKQogewpAQCAtNTc0LDM0ICs3
NjYsNjkgQEAgc3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bgogICAgIGpp
dC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBk
c3QpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRv
cihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6U3Bp
bGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3RyaW5n
Q2hhckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXpl
ZFRodW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7CisgICAg
aml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6U3Bp
bGxFeGFjdGx5KTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hh
ckNvZGVBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAg
ICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNvZGVBdCIpOworI2VuZGlmCiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0LCB2
bSk7CisgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFy
Z0dQUjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lz
dGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFs
aXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgp
OworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBl
cnM6OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7Cisg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImNoYXJBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7
CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0s
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbmRpZgogfQogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklU
RW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsK
LSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisjaWYgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZt
LCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
SW5SZWdpc3RlcnMpOworICAgIC8vIGxvYWQgY2hhciBjb2RlCisgICAgaml0Lm1vdmUoYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5v
bkFyZ0dQUjApOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50MzIo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCkpOworCisgICAgY2hhclRvU3RyaW5nKGpp
dCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgz
KSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1
ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50
UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxsKTsKKyAgICBqaXQu
YXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZWxzZQor
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxs
QWxsKTsKICAgICAvLyBsb2FkIGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgw
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0s
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKKyNlbmRpZgogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
bkludEFyZ0p1bXA7CkBAIC02MjIsMTEgKzg0OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Y2x6MzJUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNsejMyIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIHNx
cnRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQo
dm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKLSAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0tPmpp
dFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAgICAgaml0LmxvYWREb3VibGVBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CiAgICAgaml0LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CkBAIC03ODIsMTIgKzEwMDksMTIgQEAg
ZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0aWMgY29uc3QgZG91Ymxl
IGhhbGZDb25zdGFudCA9IDAuNTsKICAgICAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91Ymxl
T3BXcmFwcGVyKGZsb29yKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0
U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50
KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0
dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIG5vbkludEp1bXAubGlu
aygmaml0KTsKQEAgLTgyNSwxMSArMTA1MiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxv
b3JUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0
aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNlaWxU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0s
IDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoY2VpbCkgfHwgIWppdC5zdXBwb3J0
c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkp
OworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFy
Z3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBq
aXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtODQ4LDExICsx
MDc1LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IKICAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAi
Y2VpbCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihW
TSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSogdm0p
CiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5hcnlE
b3VibGVPcFdyYXBwZXIodHJ1bmMpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJuIHZt
LT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg3MSwxMSArMTA5OCwxMSBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9p
bnRzV2l0aFJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihqc1Jv
dW5kKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVu
dHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsK
ICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CkBAIC05MDUsMzcgKzExMzIsMzcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5k
VGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVUYWlsQ2FsbCh2bSksICJyb3VuZCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZXhwVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkp
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJu
IHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJu
IHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZERvdWJs
ZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVy
bihVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJleHAiKTsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJl
ZiBsb2dUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3Jh
cHBlcihsb2cpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAg
ICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRp
bmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAg
ICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0
LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNl
cnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSk7CiAgICAgaml0LnJldHVybkRv
dWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFs
aXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAibG9nIik7CiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBv
aW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVk
VGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRB
YnMoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICBy
ZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICB1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCA9IENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXQoMCk7CkBAIC05ODgsNyArMTIxNSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhYnNUaHVua0dlbmVyYXRvcigKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiYWJzIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVm
IGltdWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZzBKdW1wOwpAQCAt
MTAxOSwxMSArMTI0NiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJh
dG9yCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxD
YWxsKHZtKSwgImltdWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDApOwogICAg
IGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5
TmF0aXZlQ2FsbCh2bSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5lbWl0UmFuZG9t
VGh1bmsoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QxLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDMsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtMTAzMSwxNiArMTI1OCwyMiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0CiAKICAgICByZXR1cm4g
aml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicmFuZG9t
Iik7CiAjZWxzZQotICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICByZXR1
cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogI2VuZGlmCiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3Io
Vk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bEdlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAgSlNJ
bnRlcmZhY2VKSVQgaml0KHZtKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWls
dXJlczsKKworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xv
Z3VlKCk7CiAgICAgCi0gICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6TGFiZWwgc3RhY2tBcmdzRW50cnkoJmppdCk7CiAgICAgCisgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUu
CiAgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
Q0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogICAg
IGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0xMTEwLDIwICsxMzQz
LDIzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW4KICAgICAgICAg
R1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9m
ZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCisgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoQ29kZUZv
ckNhbGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KSksCiAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApKTsKICAg
ICAKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
aml0LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOwogICAgIGppdC5yZXQoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
KnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgbGlua0J1ZmZlci5saW5rKG5vQ29kZSwg
Q29kZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRT
YXZlZFRhZ3Modm0pKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCi0gICAgICAgIGxpbmtC
dWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGgg
bm8gYXJndW1lbnRzIikpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVzLCBDb2RlTG9j
YXRpb25MYWJlbCh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
cyh2bSkpKTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNh
bGxzIHdpdGggbm8gYXJndW1lbnRzIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzdGFj
a0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisKKyAg
ICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBj
b2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQ
dHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVy
YXRvci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM2LDM0ICszNywzNSBAQCBjbGFzcyBDYWxs
TGlua0luZm87CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKFZNKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRo
dW5rKFZNKiwgQ2FsbExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwor
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dlbmVy
YXRvcihWTSopOworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3Jw
aGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0
dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2lu
dHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSosIENhbGxMaW5rSW5mbyYpOwogCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRo
UmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVU
YWlsQ2FsbEdlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRhaWxD
YWxsV2l0aG91dFNhdmVkVGFnc0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJlYWNo
YWJsZUdlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRo
dW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5l
cmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG9yKFZN
Kik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0q
KTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxv
b3JUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5rR2Vu
ZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihW
TSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJD
b2RlQXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJBdFRo
dW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVy
YXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJh
dG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qKTsK
K0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRo
UmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBsb2dU
aHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVu
dHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2lu
dHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0pOworSklURW50
cnlQb2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSop
OwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMTIgKzQ2LDI2IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2lu
dChWTSYgdm0KICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpIHsKICAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAg
ICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0
aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOworICAgICAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAor
ICAgICAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVyYXRv
cikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7
CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgICAg
ICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVy
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2Rl
KCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3Rl
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKQEAgLTU5LDEyICs3MywyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlv
bkVudHJ5cG9pbnQoVk0mIHZtCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUp
LAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50
Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENv
ZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBh
ZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRzV2l0
aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNy
ZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0
cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9j
ayogY29kZUJsb2NrKQpAQCAtNzIsMTQgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50
cnlwb2ludChWTSYgdm0sIENvCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklU
KCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRv
ciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkp
OworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAg
ICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5n
ZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAg
ICAgICAgIHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisg
ICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAg
ICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZXZhbF9wcm9sb2d1ZSkuY29kZSgpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSksCisg
ICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9p
ZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAt
ODcsMTQgKzEyOSwyOCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENv
ZGUodm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpLAorICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAg
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNX
aXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3By
b2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMDIsMTQgKzE1OCwyOCBAQCBzdGF0
aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAot
ICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1
bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERp
cmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdl
dENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdl
dENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbW9kdWxl
X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspKSk7CiB9CiAKIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOSArMzczLDkgQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIENPREVCTE9DS19MT0df
RVZFTlQoY29kZUJsb2NrLCAiT1NSIGVudHJ5IiwgKCJpbiBwcm9sb2d1ZSIpKTsKICAgICAKICAg
ICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxv
Y2stPmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJnc0Fy
aXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAgQVNTRVJU
KGtpbmQgPT0gQXJpdHlDaGVjayk7Ci0gICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmpp
dENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNz
KCksIDApOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJl
c3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAw
KTsKIH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVu
dHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgY2hhciosIEVudHJ5S2luZCkKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRyID0g
ZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIApA
QCAtMTMwNiwxMiArMTMwNiwxMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2Fs
bChFeGVjCiAgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGVycm9yKTsKICAgICAg
ICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2sp
OwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUg
ZW50cnlUeXBlOwogICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgIGVudHJ5
VHlwZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAgICBl
bnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBlKTsK
ICAgICB9CiAKICAgICBBU1NFUlQoISFjb2RlUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsMTAgKzUxLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnkK
IAogbmFtZXNwYWNlIExMSW50IHsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIg
KnRodW5rS2luZCkKK2VudW0gU2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSB7IENyZWF0ZVJlZ2lz
dGVyRW50cnksIERvbnRDcmVhdGVSZWdpc3RlckVudHJ5IH07CisKK3N0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0
KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQsIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkgc2hv
dWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9IERvbnRDcmVhdGVSZWdpc3RlckVudHJ5KQogewogICAg
IEpTSW50ZXJmYWNlSklUIGppdCh2bSk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGlmIChzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5ID09IENyZWF0ZVJlZ2lzdGVyRW50cnkpCisg
ICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5KTsKKyNl
bmRpZgorCiAgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRv
IGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDAp
OwpAQCAtNjMsMjQgKzcyLDQ0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJh
dGVUaHUKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMTEludCAlcyBw
cm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRD
b2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVuY3Rp
b24gZm9yIHJlZ2lzdGVyIGFyZ3MgY2FsbCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUp
LCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY2FsbCIpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6Omdl
dENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwg
ImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCIsIENyZWF0ZVJlZ2lzdGVyRW50
cnkpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVj
dEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0cnVj
dCIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY2FsbCIpOworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0ZXIg
YXJncyBjYWxsIHdpdGggYXJpdHkgY2hlY2siLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24gZm9y
IHN0YWNrIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0eUNo
ZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAiZnVu
Y3Rpb24gZm9yIHJlZ2lzdGVyIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siLCBDcmVh
dGVSZWdpc3RlckVudHJ5KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVjayksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBm
b3Igc3RhY2sgYXJncyBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDIwOTYyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxMCArNDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUg
dm1FbnRyeQogCiBuYW1lc3BhY2UgTExJbnQgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihW
TSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JS
ZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5l
cmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5o
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0
eUNoZWNrTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogZW51bSBBcml0eUNoZWNrTW9kZSB7CisgICAgUmVnaXN0ZXJFbnRyeSwKICAgICBB
cml0eUNoZWNrTm90UmVxdWlyZWQsCiAgICAgTXVzdENoZWNrQXJpdHkKIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCShyZXZp
c2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgdm9pZCBFeGVjdXRhYmxl
QmFzZTo6Y2xlYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKQogICAgIG1faml0Q29kZUZvckNhbGwg
PSBudWxscHRyOwogICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IG51bGxwdHI7Ci0gICAgbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0g
ICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOworICAgIG1f
aml0RW50cmllc0ZvckNvbnN0cnVjdC5jbGVhckVudHJpZXMoKTsKICNlbmRpZgogICAgIG1fbnVt
UGFyYW1ldGVyc0ZvckNhbGwgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAgICAgbV9u
dW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0ID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5o
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRGF0YS5o
IgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNp
bmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUg
IkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVHlwZVNldC5oIgpAQCAtMTQ1LDQ3ICsxNDUsNDIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgp
OwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCwgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2hlY2sg
aWYgd2UgaGF2ZSBhIGNhY2hlZCByZXN1bHQuIFdlIG9ubHkgaGF2ZSBpdCBmb3IgYXJpdHkgY2hl
Y2sgYmVjYXVzZSB3ZSB1c2UgdGhlCiAgICAgICAgIC8vIG5vLWFyaXR5IGVudHJ5cG9pbnQgaW4g
bm9uLXZpcnR1YWwgY2FsbHMsIHdoaWNoIHdpbGwgImNhY2hlIiB0aGlzIHZhbHVlIGRpcmVjdGx5
IGluCiAgICAgICAgIC8vIG1hY2hpbmUgY29kZS4KLSAgICAgICAgaWYgKGFyaXR5ID09IE11c3RD
aGVja0FyaXR5KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNh
c2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2Ug
Q29kZUZvckNhbGw6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3Vs
dCA9IG1faml0RW50cmllc0ZvckNhbGwuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29k
ZUZvckNvbnN0cnVjdDoKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVz
dWx0ID0gbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPQotICAgICAgICAgICAgZ2Vu
ZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkpOwotICAgICAgICBp
ZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAgICAgICAgIC8vIENhY2hlIHRoZSBy
ZXN1bHQ7IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGlt
aXphdGlvbnMuCi0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2Ug
Q29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
b2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNh
bGwoZW50cnlUeXBlKTsKKyAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBuZWNl
c3NhcnkgZm9yIHRoZSBKSVQncyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAgICAg
c3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBt
X2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAg
ICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Quc2V0RW50cnlGb3IoZW50cnlUeXBlLCByZXN1bHQp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNo
ZWNrRm9yKAotICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
RW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayk7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBt
X2ppdEVudHJpZXNGb3JDYWxsKSArIEpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9yKGVu
dHJ5UG9pbnRUeXBlKTsKICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihFeGVjdXRhYmxlQmFzZSwgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0KSArIEpJVEVudHJ5UG9p
bnRzOjpvZmZzZXRPZkVudHJ5Rm9yKGVudHJ5UG9pbnRUeXBlKTsKICAgICAgICAgfQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIz
Myw4ICsyMjgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50cmluc2ljIG1faW50cmluc2ljOwogICAg
IFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDYWxsOwogICAgIFJlZlB0cjxKSVRDb2RlPiBt
X2ppdENvZGVGb3JDb25zdHJ1Y3Q7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29k
ZUZvckNhbGxXaXRoQXJpdHlDaGVjazsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9qaXRF
bnRyaWVzRm9yQ2FsbDsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDb25zdHJ1
Y3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5NjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvdW5kVGhpc05vCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0YXJnZXRGdW5j
dGlvbi0+ZXhlY3V0YWJsZSgpOwogICAgIGlmIChleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yQ2Fs
bCgpKSB7CiAgICAgICAgIC8vIEZvcmNlIHRoZSBleGVjdXRhYmxlIHRvIGNhY2hlIGl0cyBhcml0
eSBlbnRyeXBvaW50LgotICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JD
YWxsLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
Q29kZUZvckNhbGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKICAgICB9CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXRG
dW5jdGlvbiwgY2FsbERhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw4ICs2Myw4IEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRp
b24oVk0KICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgbV9qaXRDb2RlRm9yQ2Fs
bCA9IGNhbGxUaHVuazsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RUaHVu
azsKLSAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDYWxs
LT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7Ci0gICAgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JDYWxs
KE11c3RDaGVja0FyaXR5KTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKFN0
YWNrQXJnc011c3RDaGVja0FyaXR5LCBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2FsbChT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOworICAgIG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5z
ZXRFbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ29uc3RydWN0
LT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOwogICAgIG1fbmFtZSA9
IG5hbWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDEyICsxMzksMTIgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYg
dgogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CiAgICAgICAgIG1f
aml0Q29kZUZvckNhbGwgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0
Q29kZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmllc0ZvckNhbGwu
Y2xlYXJFbnRyaWVzKCk7CiAgICAgICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBnZW5lcmlj
Q29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BBUkFN
RVRFUlNfTk9UX0NPTVBJTEVEOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6CiAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sg
PyBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRyOwotICAgICAgICBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOwor
ICAgICAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAgICAgICAg
IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmlj
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDIwOTYyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCwxMCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNp
emUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9w
KHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjbGVhckNv
dW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2
ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7CiAg
ICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdU
YWJsZSk7CkBAIC00NzYsNyArNDgwLDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06OmVuc3VyZVNh
bXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogI2lmIEVO
QUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5z
aWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRvciB0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIHN3aXRjaCAo
aW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAtOTIzLDQgKzky
NywzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291bnRlcnMoKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7IGkrKykKKyAg
ICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3VudGVycygpCit7
CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSArIGNv
dW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRhTG9n
KCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFRv
dGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQmFzZWxpbmUg
Y2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigiJTEw
enUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRhdGFMb2dGKCIl
MTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAgZGF0YUxvZ0Yo
IiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxsKSk7CisgICAg
ZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsKKyAg
ICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERpcmVjdENhbGwp
KTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJGb3Io
UG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNcbiIs
IGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVhbCBz
bG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAgIGRhdGFMb2dG
KCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NOb0Fy
aXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNvdW50
ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3RlciBh
cmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJlZ0Fy
Z3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNrXG4i
LCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFyaXR5
IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWlyZWQpKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjA5NjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwxNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAg
ICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHViKEpJVEVudHJ5
R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+aml0
RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENhbGxUaHVua0Vu
dHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+
aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0czsKICAgICAKQEAgLTU3Miw2ICs1ODIsNTAgQEAgcHVibGljOgogICAgIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJlbnRKU0xvY2sg
bV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAgZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAgICAg
ICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERGR0NhbGxlciwKKyAgICAgICAgRlRMQ2FsbGVy
LAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAgICAgVGFpbENhbGwsCisgICAgICAgIENhbGxF
dmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAgICAgICBQb2x5bW9ycGhpY0NhbGwsCisgICAg
ICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0dWFsU2xvd0NhbGwsCisgICAgICAgIFJlZ0Fy
Z3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NOb0FyaXR5LAorICAgICAgICBSZWdBcmdzRXh0
cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAgICAgICAgU3RhY2tBcmdzQXJpdHksCisgICAg
ICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAgICAgTnVtYmVyVk1Db3VudGVyCisgICAgfTsK
KworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBzaXplX3QgbV9jb3VudGVyc1tOdW1iZXJW
TUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNvdW50ZXJzKCk7CisKKyAgICBzaXplX3QqIGFk
ZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fY291bnRlcnNbY291bnRlclR5cGVdOworICAg
IH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUpCisg
ICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jb3VudGVyc1tjb3Vu
dGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291bnRl
cnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+
IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBBTFdBWVNfSU5MSU5FIEhhc093blByb3BlcnR5
Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5Q2Fj
aGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0
eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcu
Y3BwCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBXYXNtVG9KU1N0
dWIgaW1wb3J0U3R1YkdlbmVyYXRvcihWTSogdm0sCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBH
UFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgorICAgIEdQUlJlZyBpbXBvcnRK
U0NlbGxHUFJSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CiAgICAgQVNTRVJUKCF3
YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIAog
ICAgIC8vIEVhY2ggSlMgLT4gd2FzbSBlbnRyeSBzZXRzIHRoZSBXZWJBc3NlbWJseS5JbnN0YW5j
ZSB3aG9zZSBleHBvcnQgaXMgYmVpbmcgY2FsbGVkLiBXZSdyZSBjYWxsaW5nIG91dCBvZiB0aGlz
IEluc3RhbmNlLCBhbmQgY2FuIHRoZXJlZm9yZSBmaWd1cmUgb3V0IHRoZSBpbXBvcnQgYmVpbmcg
Y2FsbGVkLgpAQCAtMTQ4LDE1ICsxNDgsMTQgQEAgV2FzbVRvSlNTdHViIGltcG9ydFN0dWJHZW5l
cmF0b3IoVk0qIHZtLAogICAgIC8vIEZJWE1FIFRhaWwgY2FsbCBpZiB0aGUgd2FzbSByZXR1cm4g
dHlwZSBpcyB2b2lkIGFuZCBubyByZWdpc3RlcnMgd2VyZSBzcGlsbGVkLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDg4CiAKICAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mb3MuYWRkKCk7Ci0gICAgY2FsbExpbmtJbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKCksIGltcG9ydEpTQ2VsbEdQUlJl
Zyk7CisgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFj
a0FyZ3MsIENvZGVPcmlnaW4oKSwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKICAgICBKSVQ6OkRhdGFM
YWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgIEpJVDo6VHJ1c3RlZEltbVB0ciBpbml0aWFsUmln
aHRWYWx1ZSgwKTsKICAgICBKSVQ6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaW1wb3J0SlNDZWxsR1BSUmVnLCB0YXJnZXRU
b0NoZWNrLCBpbml0aWFsUmlnaHRWYWx1ZSk7CiAgICAgSklUOjpDYWxsIGZhc3RDYWxsID0gaml0
Lm5lYXJDYWxsKCk7CiAgICAgSklUOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogICAgIHNsb3dQ
YXRoLmxpbmsoJmppdCk7Ci0gICAgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwIGhlcmUu
Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZv
KSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIuCisg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25BcmdH
UFIwCiAgICAgSklUOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgZG9uZS5s
aW5rKCZqaXQpOwogCkBAIC0yMjQsNyArMjIzLDcgQEAgV2FzbVRvSlNTdHViIGltcG9ydFN0dWJH
ZW5lcmF0b3IoVk0qIHZtLAogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhz
bG93Q2FsbCwgRnVuY3Rpb25QdHIodm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRv
cikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNs
b3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQ
YXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZih0YXJnZXRUb0NoZWNrKSk7CiAgICAgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5l
YXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTA5ICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEpTVkFMVUU2NDog
UGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0gYXJndW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFraW5n
IEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIGEgbmV3IGJ1aWxkIG9wdGlvbiBFTkFCTEVfVk1fQ09VTlRFUlMgdG8g
ZW5hYmxlIEpJVCdhYmxlIGNvdW50ZXJzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyBmb3IgdGhl
IG9wdGlvbiB0byBiZSBvZmYuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAg
QWRkZWQgRU5BQkxFX1ZNX0NPVU5URVJTCisKIDIwMTYtMTItMDkgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0UG9zaXRpb24gYW5kIE9yZGluYWxOdW1i
ZXIgc2hvdWxkIGJlIG1vcmUgbGlrZSBpZGlvbWF0aWMgbnVtYmVycwpJbmRleDogU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CShyZXZpc2lvbiAyMDk2MjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OTUsNiArNjk1LDkgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYK
IAorLyogVGhpcyBlbmFibGVzIHBlciBWTSBjb3VudGVycyBhdmFpbGFibGUgZm9yIHVzZSBieSBK
SVQnZWQgY29kZS4gKi8KKyNkZWZpbmUgRU5BQkxFX1ZNX0NPVU5URVJTIDAKKwogLyogVGhlIEZU
TCAqZG9lcyBub3QqIHdvcmsgb24gMzItYml0IHBsYXRmb3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlm
IHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5hYmxlIGl0LiAqLwogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAjdW5kZWYgRU5BQkxFX0ZUTF9KSVQK
</data>
<flag name="review"
          id="319146"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296782</attachid>
            <date>2016-12-09 22:34:48 -0800</date>
            <delta_ts>2016-12-09 22:36:39 -0800</delta_ts>
            <desc>Addressed Phil&apos;s issues and rebased</desc>
            <filename>160355-3.patch</filename>
            <type>text/plain</type>
            <size>354253</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDk2NTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI0IEBACisyMDE2LTEyLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIEpTVkFMVUU2NDogUGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0g
YXJndW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFraW5nIEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBtaWNyb2JlbmNobWFy
a3MgdG8gbWVhc3VyZSBjYWxsIHR5cGUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2FsbGluZy1jb21wdXRlZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvY2FsbGluZy1tYW55LWNhbGxlZXMuanM6IEFkZGVkLgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUtZml4ZWQuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxsZWUuanM6IEFkZGVkLgorICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktY2FsbGVlcy5qczogQWRkZWQuCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctcG9seS1leHRyYS1hcml0eS1jYWxsZWVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1hcml0eS1m
aXh1cC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2FsbGlu
Zy12aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1jYWxsZWVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvY2FsbGluZy12aXJ0dWFsLWV4dHJhLWFyaXR5LWNhbGxlZXMuanM6
IEFkZGVkLgorCiAyMDE2LTEyLTA5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGltcGxlbWVudCBzdGFydCBmdW5jdGlvbgpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1jb21wdXRlZC1hcmdzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctY29tcHV0ZWQtYXJn
cy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLWNv
bXB1dGVkLWFyZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorZnVuY3Rpb24g
c3VtMihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMik7CisK
K2Z1bmN0aW9uIHN1bTJiKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGlu
ZShzdW0yYik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIg
KyBjOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtM2IoYSwgYiwgYykKK3sK
KyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGluZShzdW0zYik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGxldCBvMSA9IHsKKyAgICAgICAgb25lOiAxLAorICAgICAgICB0d286
IDIKKyAgICB9CisgICAgbGV0IG8yID0geworICAgICAgICB0aHJlZTogMywKKyAgICAgICAgZml2
ZTogNQorICAgIH07CisgICAgbGV0IG8zID0geworICAgICAgICBmb3VyOiA0LAorICAgICAgICBz
aXg6IDYKKyAgICB9OworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMjAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0yKG8xLm9uZSwgbzIuZml2ZSkg
KyBzdW0yYihvMS50d28sIG8xLm9uZSArIG8yLmZpdmUpCisgICAgICAgICAgICArIHN1bTMobzIu
dGhyZWUsIG8zLmZvdXIsIG8yLmZpdmUpICsgc3VtM2IobzEudHdvLCBvMi50aHJlZSArIG8yLmZp
dmUsIG8zLnNpeCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVz
dCgpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW1hbnktY2Fs
bGVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW1h
bnktY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
YWxsaW5nLW1hbnktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACitm
dW5jdGlvbiBzdW0yKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lubGluZShz
dW0yKTsKKworZnVuY3Rpb24gc3VtMmIoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGIgKyBiOwor
fQorCitub0lubGluZShzdW0yYik7CisKK2Z1bmN0aW9uIHN1bTMoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gYSArIGIgKyBjOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtM2Io
YSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
M2IpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDIwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gc3VtMigxLCAy
KSArIHN1bTJiKDIsIDMpICsgc3VtMyg1LCA1LCA1KSArIHN1bTNiKDIsIDQsIDYpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoKTsKK2lmIChyZXN1bHQgIT0g
NDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2FsbGVlLWZpeGVkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS1maXhlZC5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1j
YWxsZWUtZml4ZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24g
c3VtKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3Vt
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHN1bSgxLCAyLCAz
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KCk7CitpZiAo
cmVzdWx0ICE9IDYpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy1vbmUtY2FsbGVlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctb25lLWNhbGxlZS5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLW9uZS1jYWxs
ZWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gc3VtKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtKTsKKworZnVu
Y3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQorICAgICAgICByZXN1bHQgPSBzdW0oYSwgYiwgYyk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgxLCAyLCAzKTsK
K2lmIChyZXN1bHQgIT0gNikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktY2FsbGVlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXBvbHktY2Fs
bGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5n
LXBvbHktY2FsbGVlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlv
biBzdW0xKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUo
c3VtMSk7CisKK2Z1bmN0aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyBj
OworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAg
IHJldHVybiBjICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitsZXQgZnVuY3Rpb25z
ID0gWyBzdW0xLCBzdW0yLCBzdW0zIF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykK
KyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSAzXShhLCBiLCBjKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0
ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctcG9seS1leHRyYS1hcml0eS1jYWxsZWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctcG9seS1l
eHRyYS1hcml0eS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2NhbGxpbmctcG9seS1leHRyYS1hcml0eS1jYWxsZWVzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzUgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYikKK3sKKyAgICByZXR1cm4gYSAr
IGI7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIpCit7CisgICAg
cmV0dXJuIGIgKyBhOworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBi
KQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2xldCBmdW5j
dGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1bTMgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQor
eworICAgIGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsg
aSsrKQorICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDNdKGEsIGIsIGMpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoMiwgNDAsICJUZXN0Iik7Citp
ZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3Vs
dDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdGFpbGNhbGwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy10YWlsY2FsbC5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXRhaWxjYWxs
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVu
Y3Rpb24gc3VtKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9Jbmxp
bmUoc3VtKTsKKworZnVuY3Rpb24gdGFpbENhbGxlcihhLCBiLCBjKQoreworICAgIHJldHVybiBz
dW0oYiwgYSwgYyk7Cit9CisKK25vSW5saW5lKHRhaWxDYWxsZXIpOworCitmdW5jdGlvbiB0ZXN0
KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9IHRhaWxDYWxsZXIoYSwgYiwgYyk7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgcmVzdWx0ID0gdGVzdCgxLCAyLCAzKTsKK2lm
IChyZXN1bHQgIT0gNikKKyAgICB0aHJvdyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4
dXAtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxs
aW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtY2FsbGVlcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMp
Cit7CisgICAgcmV0dXJuIGEgKyBiICsgKGMgfCAwKTsKK30KKworbm9JbmxpbmUoc3VtMSk7CisK
K2Z1bmN0aW9uIHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyAoYyB8IDApOwor
fQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAgIHJl
dHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBz
dW00KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIChjIHwgMCkgKyBhICsgYjsKK30KKworbm9Jbmxp
bmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gKGMgfCAw
KSArIGEgKyBiOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBiLCBj
KQoreworICAgIHJldHVybiAoYyB8IDApICsgYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTYpOwor
CitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zLCBzdW00LCBzdW01LCBzdW02IF07
CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25z
W2kgJSA2XShhLCBiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0
ZXN0KDIsIDQwKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIlVuZXhwZWN0ZWQgcmVz
dWx0OiAiICsgcmVzdWx0OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FsbGluZy12
aXJ0dWFsLWFyaXR5LWZpeHVwLXN0YWNrYXJncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtYXJpdHktZml4dXAtc3RhY2thcmdzLmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1h
cml0eS1maXh1cC1zdGFja2FyZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAor
ZnVuY3Rpb24gc3VtMShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiBhICsgYiArIGMgKyAoZCB8
IDApOworfQorCitub0lubGluZShzdW0xKTsKKworZnVuY3Rpb24gc3VtMihhLCBiLCBjLCBkKQor
eworICAgIHJldHVybiBiICsgYSArIGMgKyAoZCB8IDApOworfQorCitub0lubGluZShzdW0yKTsK
KworZnVuY3Rpb24gc3VtMyhhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSAr
IGIgKyBjOworfQorCitub0lubGluZShzdW0zKTsKKworZnVuY3Rpb24gc3VtNChhLCBiLCBjLCBk
KQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGluZShzdW00
KTsKKworZnVuY3Rpb24gc3VtNShhLCBiLCBjLCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsg
YSArIGIgKyBjOworfQorCitub0lubGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBiLCBj
LCBkKQoreworICAgIHJldHVybiAoZCB8IDApICsgYSArIGIgKyBjOworfQorCitub0lubGluZShz
dW02KTsKKworbGV0IGZ1bmN0aW9ucyA9IFsgc3VtMSwgc3VtMiwgc3VtMywgc3VtNCwgc3VtNSwg
c3VtNiBdOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgbGV0IHJlc3VsdCA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDAwOyBpKyspCisgICAgICAgIHJlc3VsdCA9
IGZ1bmN0aW9uc1tpICUgNl0oYSwgYiwgYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCits
ZXQgcmVzdWx0ID0gdGVzdCgyLCAxMCwgMzApOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJv
dyAiVW5leHBlY3RlZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWxsaW5nLXZpcnR1YWwtY2FsbGVlcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACitmdW5jdGlvbiBzdW0xKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKworbm9JbmxpbmUoc3VtMSk7CisKK2Z1bmN0aW9u
IHN1bTIoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYiArIGEgKyBjOworfQorCitub0lubGluZShz
dW0yKTsKKworZnVuY3Rpb24gc3VtMyhhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7
Cit9CisKK25vSW5saW5lKHN1bTMpOworCitmdW5jdGlvbiBzdW00KGEsIGIsIGMpCit7CisgICAg
cmV0dXJuIGMgKyBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtNCk7CisKK2Z1bmN0aW9uIHN1bTUo
YSwgYiwgYykKK3sKKyAgICByZXR1cm4gYyArIGEgKyBiOworfQorCitub0lubGluZShzdW01KTsK
KworZnVuY3Rpb24gc3VtNihhLCBiLCBjKQoreworICAgIHJldHVybiBjICsgYSArIGI7Cit9CisK
K25vSW5saW5lKHN1bTYpOworCitsZXQgZnVuY3Rpb25zID0gWyBzdW0xLCBzdW0yLCBzdW0zLCBz
dW00LCBzdW01LCBzdW02IF07CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICBsZXQg
cmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDAwMDA7IGkrKykKKyAgICAg
ICAgcmVzdWx0ID0gZnVuY3Rpb25zW2kgJSA2XShhLCBiLCBjKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2xldCByZXN1bHQgPSB0ZXN0KDIsIDEwLCAzMCk7CitpZiAocmVzdWx0ICE9IDQy
KQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IEpTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhbGxpbmctdmlydHVhbC1l
eHRyYS1hcml0eS1jYWxsZWVzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2NhbGxpbmctdmlydHVhbC1leHRyYS1hcml0eS1jYWxsZWVzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIHN1bTEoYSwgYikKK3sKKyAgICByZXR1cm4g
YSArIGI7Cit9CisKK25vSW5saW5lKHN1bTEpOworCitmdW5jdGlvbiBzdW0yKGEsIGIpCit7Cisg
ICAgcmV0dXJuIGIgKyBhOworfQorCitub0lubGluZShzdW0yKTsKKworZnVuY3Rpb24gc3VtMyhh
LCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30KKworbm9JbmxpbmUoc3VtMyk7CisKK2Z1bmN0
aW9uIHN1bTQoYSwgYikKK3sKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK25vSW5saW5lKHN1bTQp
OworCitmdW5jdGlvbiBzdW01KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitub0lu
bGluZShzdW01KTsKKworZnVuY3Rpb24gc3VtNihhLCBiKQoreworICAgIHJldHVybiBhICsgYjsK
K30KKworbm9JbmxpbmUoc3VtNik7CisKK2xldCBmdW5jdGlvbnMgPSBbIHN1bTEsIHN1bTIsIHN1
bTMsIHN1bTQsIHN1bTUsIHN1bTYgXTsKKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAg
IGxldCByZXN1bHQgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwMDAwMDsgaSsrKQor
ICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnNbaSAlIDZdKGEsIGIsIGMpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworbGV0IHJlc3VsdCA9IHRlc3QoNDAsIDIsICJUZXN0Iik7CitpZiAocmVz
dWx0ICE9IDQyKQorICAgIHRocm93ICJVbmV4cGVjdGVkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBAQAor
MjAxNi0xMi0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAg
ICBKU1ZBTFVFNjQ6IFBhc3MgYXJndW1lbnRzIGluIHBsYXRmb3JtIGFyZ3VtZW50IHJlZ2lzdGVy
cyB3aGVuIG1ha2luZyBKYXZhU2NyaXB0IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgcGFzc2luZyBKYXZh
U2NyaXB0IGZ1bmN0aW9uIGFyZ3VtZW50cyBpbiByZWdpc3RlcnMgZm9yIDY0IGJpdCBwbGF0Zm9y
bXMuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGVkIGNvbnZlbnRpb24gZm9sbG93cyB0aGUgQUJJ
IGNvbnZlbnRpb25zIGZvciB0aGUgYXNzb2NpYXRlZCBwbGF0Zm9ybS4KKyAgICAgICAgVGhlIGZp
cnN0IHR3byBhcmd1bWVudHMgYXJlIHRoZSBjYWxsZWUgYW5kIGFyZ3VtZW50IGNvdW50LCB0aGUg
cmVzdCBvZiB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgICAgIGNvbnRhaW4gInRoaXMiIGFu
ZCBmb2xsb3dpbmcgYXJndW1lbnQgdW50aWwgYWxsIHBsYXRmb3JtIGFyZ3VtZW50IHJlZ2lzdGVy
cyBhcmUgZXhoYXVzdGVkLgorICAgICAgICBBcmd1bWVudHMgYmV5b25kIHdoYXQgZml0IGluIHJl
Z2lzdGVycyBhcmUgcGxhY2VkIG9uIHRoZSBzdGFjayBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcwor
ICAgICAgICBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICBGb3IgWDg2LTY0IG5vbi1XaW5k
b3dzIHBsYXRmb3JtcywgdGhlcmUgYXJlIDYgYXJndW1lbnQgcmVnaXN0ZXJzIHNwZWNpZmllZCBp
biB0aGUgcmVsYXRlZCBBQkkuCisgICAgICAgIEFSTTY0IGhhcyBoYWQgYXJndW1lbnQgcmVnaXN0
ZXJzLiAgVGhpcyBhbGxvd3MgZm9yIDQgb3IgNiBwYXJhbWV0ZXIgdmFsdWVzIHRvIGJlIHBsYWNl
ZCBpbgorICAgICAgICByZWdpc3RlcnMgb24gdGhlc2UgcmVzcGVjdGl2ZSBwbGF0Zm9ybXMuICBU
aGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IHBhc3NpbmcgYXJndW1lbnRzIGluCisgICAgICAg
IHJlZ2lzdGVycyBmb3IgMzIgYml0IHBsYXRmb3JtLCBzaW5jZSBtb3N0IHBsYXRmb3JtcyBoYXZl
IGF0IG1vc3QgNCBhcmd1bWVudCByZWdpc3RlcnMKKyAgICAgICAgc3BlY2lmaWVkIGFuZCAzMiBi
aXQgcGxhdGZvcm1zIHVzZSB0d28gMzIgYml0IHJlZ2lzdGVycy9tZW1vcnkgbG9jYXRpb25zIHRv
IHN0b3JlIG9uZSBKU1ZhbHVlLgorCisgICAgICAgIFRoZSBjYWxsIGZyYW1lIG9uIHRoZSBzdGFj
ayBpbiB1bmNoYW5nZWQgaW4gZm9ybWF0IGFuZCB0aGUgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3Nl
ZCBpbgorICAgICAgICByZWdpc3RlcnMgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGNhbGwgZnJhbWUg
bG9jYXRpb24gYXMgYSBzcGlsbCBsb2NhdGlvbi4gQXJndW1lbnRzIGNhbgorICAgICAgICBhbHNv
IGJlIHBhc3NlZCBvbiB0aGUgc3RhY2suIFRoZSBMTEludCwgYmFzZWxpbmUgSklUJ2VkIGNvZGUg
YXMgd2VsbCBhcyB0aGUgaW5pdGlhbCBlbnRyeQorICAgICAgICBmcm9tIEMrKyBjb2RlIGJhc2Ug
YXJndW1lbnRzIG9uIHRoZSBzdGFjay4gREZHIHMgYW5kIEZUTCBnZW5lcmF0ZWQgY29kZSBwYXNz
IGFyZ3VtZW50cworICAgICAgICB2aWEgcmVnaXN0ZXJzLiBBbGwgY2FsbGVlcyBjYW4gYWNjZXB0
IGFyZ3VtZW50cyBlaXRoZXIgaW4gcmVnaXN0ZXJzIG9yIG9uIHRoZSBzdGFjay4KKyAgICAgICAg
VGhlIGNhbGxlZSBpcyByZXNwb25zaWJsZSBmb3IgbW92aW5nIGFyZ3VtZW50IHRvIGl0cyBwcmVm
ZXJyZWQgbG9jYXRpb24uCisKKyAgICAgICAgVGhlIG11bHRpcGxlIGVudHJ5IHBvaW50cyB0byBK
YXZhU0NyaXB0IGNvZGUgaXMgbm93IGhhbmRsZWQgdmlhIHRoZSBKSVRFbnRyeVBvaW50cyBjbGFz
cyBhbmQKKyAgICAgICAgcmVsYXRlZCBjb2RlLiAgVGhhdCBjbGFzcyBub3cgaGFzIGVudHJpZXMg
Zm9yIFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICAgICAgU3RhY2tBcmdzTXVz
dENoZWNrQXJpdHkgYW5kIGZvciBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHJlZ2lzdGVycyBhcmd1
bWVudHMsCisgICAgICAgIFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgUmVnaXN0
ZXJBcmdzTXVzdENoZWNrQXJpdHkgYXMgd2VsbCBhcyBhbmQgYWRkaXRpb25hbAorICAgICAgICBS
ZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncyBlbnRyeSBwb2ludCB3aGVuIGV4dHJhIHJlZ2lz
dGVycyBhcmd1bWVudCBhcmUgcGFzc2VkLgorICAgICAgICBUaGlzIGxhc3QgY2FzZSBpcyBuZWVk
ZWQgdG8gc3BpbGwgdGhvc2UgZXh0cmEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNh
bGwgZnJhbWUKKyAgICAgICAgc2xvdHMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToK
KyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjpzZXRVcENhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmFyZ3VtZW50
c0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjphcmd1bWVudHNJblJlZ2lz
dGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNhbm9uaWNhbGl6
ZUxvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6
OnNwZWNpYWxDYXNlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpjb21wdXRlSXNGbHVzaGVkKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21t
b24uaDoKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkRDRVBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHZW5lcmF0aW9uSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25J
bmZvOjppbml0QXJndW1lbnRSZWdpc3RlclZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om5lZWRzRmx1c2hlZFRoaXMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJ
bnQzMik6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRW50cnkpOiBEZWxldGVkLgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjph
ZGRKU0RpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKU0RpcmVj
dENhbGxSZWNvcmQ6OkpTRGlyZWN0Q2FsbFJlY29yZCk6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OkpTRGlyZWN0Q2FsbFJlY29yZDo6aGFzU2xvd0NhbGwpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6
SklURmluYWxpemVyKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXpl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAgKiBkZmcvREZHTGl2ZUNh
dGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2U6OnRyZWF0UmVndWxhckJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZTo6dHJlYXRSb290QmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTWluaWZp
ZWROb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZE5vZGU6OmZyb21Ob2RlKToK
KyAgICAgICAgKiBkZmcvREZHTWluaWZpZWROb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6YmVs
b25nc0luTWluaWZpZWRHcmFwaCk6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphY2Nlc3Nlc1N0YWNrKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0FyZ3VtZW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6YXJndW1lbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpl
eGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVu
KToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6
Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2Ji
ZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRv
cjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvbkluamVjdGlvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUmVn
aXN0ZXJCYW5rLmg6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJCYW5rOjppdGVyYXRvcjo6
dW5sb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OnVubG9ja0F0SW5kZXgp
OgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRv
RXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OlNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2xlYXJHZW5lcmF0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6ZHVtcFJlZ2lzdGVy
SW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmR1bXApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2V0dXBBcmd1bWVudFJlZ2lzdGVyc0ZvckVu
dHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
b0Zyb21WaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVPcGVyYW5k
OjpKU1ZhbHVlT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZU9wZXJhbmQ6Omdw
clVzZVNwZWNpZmljKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RG
R1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlOjphbGxvY2F0ZVJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTEpJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkpJVENvZGU6On5KSVRDb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFs
aXplRW50cnlwb2ludFRodW5rKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjpzZXRFbnRy
eUZvcik6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6YWRkcmVzc0ZvckNhbGwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRy
eXBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAq
IGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkpJVEZpbmFsaXpl
cjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFyZ3VtZW50UmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENh
bGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAg
ICAqIGZ0bC9GVExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJlcGFyZU9TUkVu
dHJ5KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YXJn
dW1lbnRSZWdpc3RlckludDMyKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHA6CisgICAgICAgIChKU0M6OlNoYWRvd0No
aWNrZW46OnVwZGF0ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdER1bWJWaXJ0dWFsQ2FsbCk6CisgICAgICAg
ICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJh
bWVCZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1
dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJn
dW1lbnRCZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1p
dEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmluY3JlbWVudENvdW50ZXIpOgorICAgICAgICAqIGppdC9D
YWNoZWRSZWNvdmVyeS5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZFJlY292ZXJ5OjphZGRUYXJn
ZXRKU1ZhbHVlUmVncyk6CisgICAgICAgICogaml0L0NhY2hlZFJlY292ZXJ5Lmg6CisgICAgICAg
IChKU0M6OkNhY2hlZFJlY292ZXJ5OjpncHJUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
UmVjb3Zlcnk6OnNldFdhbnRlZEZQUik6CisgICAgICAgIChKU0M6OkNhY2hlZFJlY292ZXJ5Ojp3
YW50ZWRKU1ZhbHVlUmVncyk6CisgICAgICAgIChKU0M6OkNhY2hlZFJlY292ZXJ5OjpzZXRXYW50
ZWRKU1ZhbHVlUmVncyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVE
YXRhLmg6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVyKToKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXApOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxl
cjo6dHJ5V3JpdGVzKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVB
bnkpOgorICAgICAgICAqIGppdC9DYWxsRnJhbWVTaHVmZmxlci5oOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWVTaHVmZmxlcjo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVm
Zmxlcjo6YWRkTmV3KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmluaXREYW5n
ZXJGcm9udGllcik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjp1cGRhdGVEYW5n
ZXJGcm9udGllcik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpmaW5kRGFuZ2Vy
RnJvbnRpZXJGcm9tKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjplbWl0RGlzcGxhY2UpOgorICAgICAgICAq
IGppdC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpH
UFJJbmZvOjp0b0FyZ3VtZW50SW5kZXgpOgorICAgICAgICAoSlNDOjphcmd1bWVudFJlZ2lzdGVy
Rm9yKToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSk6CisgICAgICAg
IChKU0M6OmFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6
YXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KToKKyAgICAgICAgKEpT
Qzo6anNGdW5jdGlvbkFyZ3VtZW50Rm9yQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OmFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6bnVt
YmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAgICAgKEpTQzo6SklU
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbCk6IERlbGV0
ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVOYXRp
dmVDYWxsRW50cnlQb2ludHMpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVENvZGUuY3BwOgorICAgICAgICAo
SlNDOjpKSVRDb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6RGlyZWN0SklUQ29kZTo6RGly
ZWN0SklUQ29kZSk6CisgICAgICAgIChKU0M6OkRpcmVjdEpJVENvZGU6OmluaXRpYWxpemVFbnRy
eVBvaW50cyk6CisgICAgICAgIChKU0M6OkRpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwpOgorICAgICAgICAo
SlNDOjpEaXJlY3RKSVRDb2RlOjppbml0aWFsaXplQ29kZVJlZik6IERlbGV0ZWQuCisgICAgICAg
ICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJl
c3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRFbnRyeVBvaW50cy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SklURW50cnlQb2ludHM6OkpJVEVudHJ5UG9pbnRzKToKKyAgICAgICAgKEpT
Qzo6SklURW50cnlQb2ludHM6OmVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6SklURW50cnlQb2lu
dHM6OnNldEVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6SklURW50cnlQb2ludHM6Om9mZnNldE9m
RW50cnlGb3IpOgorICAgICAgICAoSlNDOjpKSVRFbnRyeVBvaW50czo6cmVnaXN0ZXJFbnRyeVR5
cGVGb3JBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6SklURW50cnlQb2ludHM6OnJlZ2lz
dGVyRW50cnlUeXBlRm9yQXJndW1lbnRUeXBlKToKKyAgICAgICAgKEpTQzo6SklURW50cnlQb2lu
dHM6OmNsZWFyRW50cmllcyk6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzOjpvcGVyYXRv
cj0pOgorICAgICAgICAoSlNDOjpKSVRFbnRyeVBvaW50c1dpdGhSZWY6OkpJVEVudHJ5UG9pbnRz
V2l0aFJlZik6CisgICAgICAgIChKU0M6OkpJVEVudHJ5UG9pbnRzV2l0aFJlZjo6Y29kZVJlZik6
CisgICAgICAgIChKU0M6OmFyZ3VtZW50c0xvY2F0aW9uRm9yKToKKyAgICAgICAgKEpTQzo6cmVn
aXN0ZXJFbnRyeVBvaW50VHlwZUZvcik6CisgICAgICAgIChKU0M6OmVudHJ5UG9pbnRUeXBlRm9y
KToKKyAgICAgICAgKEpTQzo6dGh1bmtFbnRyeVBvaW50VHlwZUZvcik6CisgICAgICAgIChKU0M6
OkpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmOjpKSVRKU0NhbGxUaHVua0VudHJ5UG9p
bnRzV2l0aFJlZik6CisgICAgICAgIChKU0M6OkpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRo
UmVmOjplbnRyeUZvcik6CisgICAgICAgIChKU0M6OkpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmOjpzZXRFbnRyeUZvcik6CisgICAgICAgIChKU0M6OkpJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmOjpvZmZzZXRPZkVudHJ5Rm9yKToKKyAgICAgICAgKEpTQzo6SklUSlNDYWxs
VGh1bmtFbnRyeVBvaW50c1dpdGhSZWY6OmNsZWFyRW50cmllcyk6CisgICAgICAgIChKU0M6OkpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmOjpjb2RlUmVmKToKKyAgICAgICAgKEpTQzo6
SklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY6Om9wZXJhdG9yPSk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSklU
RW50cnlOYXRpdmVDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5h
dGl2ZUNhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpqaXRFbnRyeU5hdGl2ZUNhbGwpOgorICAg
ICAgICAoSlNDOjpKSVRUaHVua3M6OmppdEVudHJ5TmF0aXZlQ29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6SklUVGh1bmtzOjpqaXRFbnRyeVN0dWIpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6
OmppdENhbGxUaHVua0VudHJ5U3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpTmF0aXZlQ2FsbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpTmF0aXZlQ29uc3RydWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogaml0L0pTSW50ZXJm
YWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SW50
MzIpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRJbnQzMik6CisgICAg
ICAgICogaml0L1JlZ2lzdGVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFy
Z3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtTbG93Rm9yKToKKyAgICAgICAg
KEpTQzo6cmV2ZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OnVubGlua0Zvcik6CisgICAgICAgIChK
U0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6
CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6CisgICAgICAgIChKU0M6OlNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmNoZWNrSlNTdHJpbmdBcmd1bWVudCk6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxpbmtGYWlsdXJlSGVyZSk6CisgICAgICAgIChKU0M6OlNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6
Y3JlYXRlUmVnaXN0ZXJBcmd1bWVudHNTcGlsbEVudHJ5KToKKyAgICAgICAgKEpTQzo6c2xvd1Bh
dGhGb3IpOgorICAgICAgICAoSlNDOjpsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6bGlua0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxpbmtQ
b2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVu
a0Zvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
Om5hdGl2ZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVUYWlsQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFnc0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OnN0cmluZ0NoYXJMb2FkUmVnQ2FsbCk6CisgICAgICAgIChKU0M6OmNoYXJDb2RlQXRU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpj
bHozMlRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3FydFRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Zmxvb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNlaWxU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnRydW5jVGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpyb3VuZFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6ZXhwVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpsb2dUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OmFic1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6aW11bFRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6cmFuZG9tVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpi
b3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoanNjbWFpbik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRFdmFsRW50
cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFtRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlP
U1IpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKiBsbGludC9M
TEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JTdGFja0Nh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9y
UmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmZ1bmN0aW9uRm9yU3RhY2tDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yU3RhY2tDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yUmVn
aXN0ZXJDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50
cnlUaHVua0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogcnVudGlt
ZS9Bcml0eUNoZWNrTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGVCYXNlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpl
bnRyeXBvaW50Rm9yKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50
cnlGb3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0
aEFyaXR5Q2hlY2tGb3IpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRp
dmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENv
ZGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyk6CisgICAgICAgIChKU0M6
OlZNOjpjbGVhckNvdW50ZXJzKToKKyAgICAgICAgKEpTQzo6Vk06OmR1bXBDb3VudGVycyk6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SklURW50cnlTdHVi
KToKKyAgICAgICAgKEpTQzo6Vk06OmdldEpJVENhbGxUaHVua0VudHJ5U3R1Yik6CisgICAgICAg
IChKU0M6OlZNOjphZGRyZXNzT2ZDb3VudGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmNvdW50ZXJG
b3IpOgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjppbXBvcnRTdHViR2VuZXJhdG9yKToKKwogMjAxNi0xMi0wOSAgS2FyaW0gSCAgPGthcmltQGth
cmhtLmNvbT4KIAogICAgICAgICBJdCBpcyBva2F5IHRvIHR1cm4gdW5kZWZpbmVkIGludG8gbnVs
bCBiZWNhdXNlIHdlIGFyZSBwcm9kdWNpbmcgdmFsdWVzIGZvciBhCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNTEsNiArMzI1MSw5IEBAIGludCBqc2NtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICBpbnQgcmVzdWx0OwogICAgIHJlc3VsdCA9IHJ1bkpTQyh2
bSwgb3B0aW9ucyk7CiAKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAgdm0tPmR1bXBDb3Vu
dGVycygpOworI2VuZGlmCiAgICAgaWYgKE9wdGlvbnM6OmdjQXRFbmQoKSkgewogICAgICAgICAv
LyBXZSBuZWVkIHRvIGhvbGQgdGhlIEFQSSBsb2NrIHRvIGRvIGEgR0MuCiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUwLDYgKzEzNTAs
NyBAQAogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYx
NzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJNjVDMDI4
NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFS
TXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oICovOyB9OworCQk2
NURCRjMwMjFEOTMzOTJCMDAzQUY0QjAgLyogSklURW50cnlQb2ludHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZE
NyAvKiBKSVRFbnRyeVBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZC
NTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovOyB9OwogCQk2NUZC
NjNBNDFDOEVBMDlDMDAyMDcxOUIgLyogWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBOTQ2MTQxQzhFOUY2
RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAqLzsgfTsKIAkJNkFEMkNC
NEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRDMTlCOTE0MDEwMDA2NTcx
OSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3MjAsNiArMzcyMSw3IEBACiAJCTYyRTNENUVGMUI4RDBC
NzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERhdGFGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
MkVDOUJCNDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkVDOUJCNTFCN0VCMDdDMDAzMDNBRDEg
LyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NjUwMzAwRjIxQzUwMjc0NjAwRDc4NkQ3IC8qIEpJVEVudHJ5UG9pbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEVudHJ5UG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFJlZ0V4cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAv
KiB0ZXN0UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSB0ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NTU1OCw2ICs1NTYwLDcgQEAKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlz
YXNzZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5jcHAgKi8sCiAJCQkJRkUxODdBMEIxQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oICovLAorCQkJCTY1MDMwMEYyMUM1MDI3NDYwMEQ3ODZENyAvKiBKSVRFbnRyeVBv
aW50cy5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
ICovLAogCQkJCTBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAgKi8sCkBAIC03NzE0LDYgKzc3MTcsNyBAQAogCQkJCTc5QjAwQ0JEMUM2QUIwN0Uw
MDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Q0NDRE
QzFEQUYwOEFCMDBCOTI3ODQgLyogQjNXYXNtQWRkcmVzc1ZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90
eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJNjVE
QkYzMDIxRDkzMzkyQjAwM0FGNEIwIC8qIEpJVEVudHJ5UG9pbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2MDAyQjA1MzQgLyogQjNQ
Q1RvT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNiArNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKHJlZy5pc1NldCgpKTsK
ICAgICB9CiAKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmlnaW4sIFJlZyByZWcsIFR5
cGUgdHlwZSkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBBcmd1bWVudFJlZywgdHlw
ZSwgb3JpZ2luKQorICAgICAgICAsIG1fcmVnKHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChy
ZWcuaXNTZXQoKSk7CisgICAgfQorCiAgICAgUmVnIG1fcmVnOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsOSArMTgyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgQXJndW1lbnRSZWc6CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGls
ZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAg
ICAgICAgICAgICAgICAgICAodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFyZ3VtZW50
UmVnKCkuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBEb3VibGUpCi0gICAgICAgICAgICAgICAg
ICAgID09IHZhbHVlLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3MTcK
KyAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBJbnQzMiBhcmd1bWVudHMgYW5k
IEludDY0IGFyZ3VtZW50cworICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgc2FtZSByZWdpc3Rl
ciBkaXN0aW5jdGx5LgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCh2YWx1ZS0+YXM8QXJndW1l
bnRSZWdWYWx1ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpCisgICAgICAgICAgICAgICAgICAg
ID8gKHZhbHVlLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSB8fCB2YWx1ZS0+dHlwZSgpID09IElu
dDMyKQorICAgICAgICAgICAgICAgICAgICA6IHZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
QWRkOgogICAgICAgICAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDYgKzYwLDcgQEAgQ2FsbExpbmtJbmZvOjpDYWxsTGlua0luZm8oKQogICAgICwg
bV9oYXNTZWVuQ2xvc3VyZShmYWxzZSkKICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAg
LCBtX2FsbG93U3R1YnModHJ1ZSkKKyAgICAsIG1fYXJndW1lbnRzTG9jYXRpb24oc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEFyZ3VtZW50c0xvY2F0aW9uOjpTdGFja0FyZ3MpKQogICAgICwgbV9pc0xp
bmtlZChmYWxzZSkKICAgICAsIG1fY2FsbFR5cGUoTm9uZSkKICAgICAsIG1fY2FsbGVlR1BSKDI1
NSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVk
ZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIu
aCIKICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBAIC0xNTcsOSArMTU4LDEy
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gbV9zdHViIHx8IG1fY2Fs
bGVlT3JDb2RlQmxvY2s7IH0KICAgICB2b2lkIHVubGluayhWTSYpOwogCi0gICAgdm9pZCBzZXRV
cENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQg
Y2FsbGVlR1BSKQorICAgIHZvaWQgc2V0VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBBcmd1bWVu
dHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbiwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNp
Z25lZCBjYWxsZWVHUFIpCiAgICAgeworICAgICAgICBBU1NFUlQoIWlzVmFyYXJnc0NhbGxUeXBl
KGNhbGxUeXBlKSB8fCAoYXJndW1lbnRzTG9jYXRpb24gPT0gU3RhY2tBcmdzKSk7CisKICAgICAg
ICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOworICAgICAgICBtX2FyZ3VtZW50c0xvY2F0aW9uID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50c0xvY2F0aW9uKTsKICAgICAgICAgbV9jb2Rl
T3JpZ2luID0gY29kZU9yaWdpbjsKICAgICAgICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CiAg
ICAgfQpAQCAtMjc1LDYgKzI3OSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSk7CiAgICAgfQogCisgICAgQXJndW1lbnRzTG9jYXRp
b24gYXJndW1lbnRzTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFyZ3VtZW50c0xvY2F0aW9uPihtX2FyZ3VtZW50c0xvY2F0aW9uKTsKKyAgICB9CisKKyAgICBi
b29sIGFyZ3VtZW50c0luUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50c0xvY2F0aW9uICE9IFN0YWNrQXJnczsKKyAgICB9CisKICAgICB1aW50MzJfdCogYWRkcmVz
c09mTWF4TnVtQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9tYXhOdW1Bcmd1
bWVudHM7CkBAIC0zMzksNiArMzUzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU2VlbkNs
b3N1cmUgOiAxOwogICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDE7CiAgICAgYm9vbCBtX2FsbG93
U3R1YnMgOiAxOworICAgIHVuc2lnbmVkIG1fYXJndW1lbnRzTG9jYXRpb24gOiA0OwogICAgIGJv
b2wgbV9pc0xpbmtlZCA6IDE7CiAgICAgdW5zaWduZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxU
eXBlCiAgICAgdW5zaWduZWQgbV9jYWxsZWVHUFIgOiA4OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lv
biAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5j
YWxsTGlua0luZm8tPmRpc2FsbG93U3R1YnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgQ2Fs
bExpbmtJbmZvOjpDYWxsLCBzdHViSW5mby5jb2RlT3JpZ2luLCBsb2FkZWRWYWx1ZUdQUik7Cisg
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsLCBTdGFja0FyZ3MsIHN0dWJJbmZvLmNv
ZGVPcmlnaW4sIGxvYWRlZFZhbHVlR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBkb25lOwogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICAvLyBXZSAqYWx3YXlzKiBrbm93IHRo
YXQgdGhlIGdldHRlci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwg
R1BSSW5mbzo6cmVnVDEpOwogI2VuZGlmCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9yYXJlRGF0YS0+Y2FsbExpbmtJbmZvLmdldCgpKSwgR1BSSW5m
bzo6cmVnVDIpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby5nZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAg
ICBpZiAobV90eXBlID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRz
KHZhbHVlUmVncyk7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAKICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKS5jb2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5l
bnRyeUZvcihTdGFja0FyZ3MpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1f
dHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0
ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3
MSwxNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
IC8vIG5vbi1jbGVhciB2YWx1ZS4KICAgICAgICAgQVNTRVJUKCFtX3N0YXRlLnZhcmlhYmxlcygp
Lm9wZXJhbmQobm9kZS0+bG9jYWwoKSkuaXNDbGVhcigpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIAorCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBBU1NFUlQoIW1f
c3RhdGUudmFyaWFibGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKS5pc0NsZWFyKCkpOworICAg
ICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkgPT0gRmx1
c2hlZEpTVmFsdWUpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9w
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShtX2dyYXBoLCB0eXBlRmlsdGVyRm9yKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb2FkVmFy
YXJnczoKICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOiB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3J3
YXJkVmFyYXJncyBzaG91bGQgY2hlY2sgaWYgdGhlIGNvdW50IGJlY29tZXMga25vd24sIGFuZCBp
ZiBpdCBkb2VzLCBpdCBzaG91bGQgdHVybgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjk3LDExICszNjk3LDU5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVudCBtYXkg
dXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQgdG8gdXNp
bmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0g
bV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwotICAgICAgICAvLyBXZSB3aWxs
IGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRo
ZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KLSAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KKyAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2sucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnJlc2l6ZShtX251bUFyZ3VtZW50
cyk7CisgICAgICAgIC8vIENyZWF0ZSBhbGwgR2V0QXJndW1lbnRSZWdpc3RlciBub2RlcyBmaXJz
dCBhbmQgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBNb3ZIaW50IG5vZGVzLAorICAgICAgICAvLyBm
b2xsb3dlZCBieSB0aGUgY29ycmVzcG9uZGluZyBTZXRMb2NhbCBub2RlcyBhbmQgZmluYWxseSBh
bnkgU2V0QXJndW1lbnQgbm9kZXMgZm9yCisgICAgICAgIC8vIHRoZSByZW1haW5pbmcgYXJndW1l
bnRzLgorICAgICAgICAvLyBXZSBkbyB0aGlzIHRvIG1ha2UgdGhlIGV4aXQgcHJvY2Vzc2luZyBj
b3JyZWN0LiBXZSBzdGFydCB3aXRoIG1fZXhpdE9LID0gdHJ1ZSBzaW5jZQorICAgICAgICAvLyBH
ZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzIGNhbiBleGl0LCBldmVuIHRob3VnaCB0aGV5IGRvbid0
LiBUaGUgTW92SGludCdzIHRlY2huaWNhbGx5IGNvdWxkCisgICAgICAgIC8vIGV4aXQgYnV0IHdv
bid0LiBUaGUgU2V0TG9jYWxzIGNhbiBleGl0IGFuZCB0aGVyZWZvcmUgd2Ugd2FudCBhbGwgdGhl
IE1vdkhpbnRzCisgICAgICAgIC8vIGJlZm9yZSB0aGUgZmlyc3QgU2V0TG9jYWwgc28gdGhhdCB0
aGUgcmVnaXN0ZXIgc3RhdGUgaXMgY29uc2lzdGVudC4KKyAgICAgICAgLy8gV2UgZG8gYWxsIHRo
aXMgcHJvY2Vzc2luZyBiZWZvcmUgY3JlYXRpbmcgYW55IFNldEFyZ3VtZW50IG5vZGVzIHNpbmNl
IHRoZXkgYXJlCisgICAgICAgIC8vIG1vcmFsbHkgZXF1aXZhbGVudCB0byB0aGUgU2V0TG9jYWxz
IGZvciBHZXRBcmd1bWVudFJlZ2lzdGVyIG5vZGVzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KSB7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1SZWdp
c3RlckFyZ3VtZW50cyA9IHN0ZDo6bWluKG1fbnVtQXJndW1lbnRzLCBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKTsKKworICAgICAgICBWZWN0b3I8Tm9kZSosIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM+IGdldEFyZ3VtZW50UmVnaXN0ZXJO
b2RlczsKKworICAgICAgICAvLyBGaXJzdCBjcmVhdGUgR2V0QXJndW1lbnRSZWdpc3RlciBub2Rl
cy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbnVtUmVn
aXN0ZXJBcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgIGdldEFyZ3VtZW50UmVn
aXN0ZXJOb2Rlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRBcmd1bWVu
dFJlZ2lzdGVyLCBPcEluZm8oMCksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVu
dFJlZ2lzdGVySW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSkpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ3JlYXRlIGFsbCB0aGUgTW92SGludCdzIGZvciB0aGUgR2V0QXJn
dW1lbnRSZWdpc3RlciBub2RlcyBjcmVhdGVkIGFib3ZlLgorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZ2V0QXJndW1lbnRSZWdpc3Rlck5vZGVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBOb2RlKiBnZXRBcmd1bWVudFJlZ2lzdGVyID0gZ2V0QXJndW1lbnRSZWdpc3Rlck5v
ZGVzW2ldOworICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8odmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpLCBnZXRBcmd1bWVudFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGV4aXQgYW55bW9yZS4KKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBFeGl0IGlzIG5vdyBva2F5LCBidXQg
d2UgbmVlZCB0byBmZW5jZSB3aXRoIGFuIEV4aXRPSyBub2RlLgorICAgICAgICBtX2V4aXRPSyA9
IHRydWU7CisgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAvLyBDcmVhdGUg
YWxsIHRoZSBTZXRMb2NhbHMncyBmb3IgdGhlIEdldEFyZ3VtZW50UmVnaXN0ZXIgbm9kZXMgY3Jl
YXRlZCBhYm92ZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdldEFyZ3VtZW50
UmVnaXN0ZXJOb2Rlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSogZ2V0QXJndW1l
bnRSZWdpc3RlciA9IGdldEFyZ3VtZW50UmVnaXN0ZXJOb2Rlc1tpXTsKKyAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NE
YXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIHZhcmlhYmxl
QWNjZXNzRGF0YS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1l
cmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4
aW5nVHlwZSkpOworICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBhZGRUb0dyYXBoKFNldExv
Y2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgZ2V0QXJndW1lbnRSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpID0g
c2V0TG9jYWw7CisgICAgICAgICAgICBnZXRBcmd1bWVudFJlZ2lzdGVyLT5zZXRWYXJpYWJsZUFj
Y2Vzc0RhdGEoc2V0TG9jYWwtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKTsKKyAgICAgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudHNPblN0YWNrW2ldID0gc2V0TG9jYWw7CisgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRzRm9yQ2hlY2tpbmdbaV0gPSBnZXRBcmd1bWVudFJlZ2lzdGVyOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSBjcmVhdGUgYW55IFNldEFyZ3VtZW50IG5vZGVz
LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVu
dCkgewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1Zhcmlh
YmxlQWNjZXNzRGF0YSgKICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChhcmd1bWVudCkpOwogICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tI
b2lzdGluZ0ZhaWxlZCgKQEAgLTM3MTAsNyArMzc1OCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFja1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsK
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRG
aXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4
MjAsOCArNDg2OSwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHVuYm94
IG91ciBhcmd1bWVudHMgaGVyZSBzaW5jZSB0aGF0IHdvbid0IGJlCiAgICAgICAgICAgICAvLyBk
b25lIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0IGNyZWF0aW9uIG5vZGUgYXMgdGhhdCBub2RlIG1h
eSBub3QgZXhpc3QuCiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAgICAg
ICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0
eSA9IGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGxGb3J3YXJk
VmFyYXJncywgQ2FsbE1vZGU6OlRhaWwpOworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBpbnNl
cnQgZmx1c2ggbm9kZXMgZm9yIG91ciBhcmd1bWVudHMgYWZ0ZXIgdGhlIFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3MKKyAgICAgICAgICAgIC8vIG5vZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgZmx1c2hl
ZCB0byB0aGUgc3RhY2sgYW5kIGtlcHQgYWxpdmUuCisgICAgICAgICAgICBmbHVzaEZvclJldHVy
bigpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlv
biA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhh
dmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAg
ICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyB0ZXJtaW5hbCB0aGVuIHdlIHNob3VsZCBub3Qg
cGFyc2UgYW55IGZ1cnRoZXIgYnl0ZWNvZGVzIGFzIHRoZSBUYWlsQ2FsbCB3aWxsIGV4aXQgdGhl
IGZ1bmN0aW9uLgogICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgbm90IHRlcm1pbmFsLCBo
b3dldmVyLCB0aGVuIHdlIHdhbnQgdGhlIHN1YnNlcXVlbnQgb3BfcmV0L29wX2p1bXAgdG8gdXBk
YXRlIG1ldGFkYXRhIGFuZCBjbGVhbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDk2NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTksMTQgKzI5OSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gVGhlIHJ1bGVzIGZvciB0aHJlYWRlZCBDUFMgZm9ybToKICAgICAgICAgICAgIC8vIAogICAg
ICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZTogZGVzY3JpYmVzIHdoYXQgaXMgbGl2ZSBhdCB0aGUg
aGVhZCBvZiB0aGUgYmFzaWMgYmxvY2suCi0gICAgICAgICAgICAvLyBIZWFkIHZhcmlhYmxlIGxp
bmtzIG1heSByZWZlciB0byBGbHVzaCwgUGhhbnRvbUxvY2FsLCBQaGksIG9yIFNldEFyZ3VtZW50
LgotICAgICAgICAgICAgLy8gU2V0QXJndW1lbnQgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSByb290
IGJsb2NrLgorICAgICAgICAgICAgLy8gSGVhZCB2YXJpYWJsZSBsaW5rcyBtYXkgcmVmZXIgdG8g
Rmx1c2gsIFBoYW50b21Mb2NhbCwgUGhpLCBHZXRBcmd1bWVudFJlZ2lzdGVyCisgICAgICAgICAg
ICAvLyBvciBTZXRBcmd1bWVudC4KKyAgICAgICAgICAgIC8vIEdldEFyZ3VtZW50UmVnaXN0ZXIg
YW5kIFNldEFyZ3VtZW50IG1heSBvbmx5IGFwcGVhciBpbiB0aGUgcm9vdCBibG9jay4KICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUYWlsIHZhcmlhYmxlOiB0aGUgbGFzdCB0aGluZyB0
aGF0IGhhcHBlbmVkIHRvIHRoZSB2YXJpYWJsZSBpbiB0aGUgYmxvY2suCi0gICAgICAgICAgICAv
LyBJdCBtYXkgYmUgYSBGbHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwgU2V0TG9jYWwsIFNl
dEFyZ3VtZW50LCBvciBQaGkuCi0gICAgICAgICAgICAvLyBTZXRBcmd1bWVudCBtYXkgb25seSBh
cHBlYXIgaW4gdGhlIHJvb3QgYmxvY2suIE5vdGUgdGhhdCBpZiB0aGVyZSBldmVyCi0gICAgICAg
ICAgICAvLyB3YXMgYSBHZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsIGFuZCBpdCB3YXMgZm9sbG93
ZWQgYnkgUGhhbnRvbUxvY2FscyBhbmQKLSAgICAgICAgICAgIC8vIEZsdXNoZXMgYnV0IG5vdCBT
ZXRMb2NhbHMsIHRoZW4gdGhlIHRhaWwgdmFyaWFibGUgd2lsbCBiZSB0aGUgR2V0TG9jYWwuCisg
ICAgICAgICAgICAvLyBJdCBtYXkgYmUgYSBGbHVzaCwgUGhhbnRvbUxvY2FsLCBHZXRMb2NhbCwg
U2V0TG9jYWwsIEdldEFyZ3VtZW50UmVnaXN0ZXIsCisgICAgICAgICAgICAvLyBTZXRBcmd1bWVu
dCwgb3IgUGhpLiBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBtYXkgb25seSBh
cHBlYXIKKyAgICAgICAgICAgIC8vIGluIHRoZSByb290IGJsb2NrLiBOb3RlIHRoYXQgaWYgdGhl
cmUgZXZlciB3YXMgYSBHZXRMb2NhbCB0byB0aGUgdmFyaWFibGUsCisgICAgICAgICAgICAvLyBh
bmQgaXQgd2FzIGZvbGxvd2VkIGJ5IFBoYW50b21Mb2NhbHMgYW5kIEZsdXNoZXMgYnV0IG5vdCBT
ZXRMb2NhbHMsIHRoZW4KKyAgICAgICAgICAgIC8vIHRoZSB0YWlsIHZhcmlhYmxlIHdpbGwgYmUg
dGhlIEdldExvY2FsLgogICAgICAgICAgICAgLy8gVGhpcyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0
IHlvdSBvbmx5IGNhcmUgdGhhdCB0aGUgdGFpbCB2YXJpYWJsZSBpcyBhCiAgICAgICAgICAgICAv
LyBGbHVzaCBvciBQaGFudG9tTG9jYWwgaWYgbm90aGluZyBlbHNlIGludGVyZXN0aW5nIGhhcHBl
bmVkLiBMaWtld2lzZSwgaWYKICAgICAgICAgICAgIC8vIHRoZXJlIGV2ZXIgd2FzIGEgU2V0TG9j
YWwgYW5kIGl0IHdhcyBmb2xsb3dlZCBieSBGbHVzaGVzLCB0aGVuIHRoZSB0YWlsCkBAIC0zNjcs
MTIgKzM2OSwxMyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY2lhbENhc2VBcmd1bWVu
dHMoKQogICAgIHsKLSAgICAgICAgLy8gTm9ybWFsbHksIGEgU2V0QXJndW1lbnQgZGVub3RlcyB0
aGUgc3RhcnQgb2YgYSBsaXZlIHJhbmdlIGZvciBhIGxvY2FsJ3MgdmFsdWUgb24gdGhlIHN0YWNr
LgotICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwg
YXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKLSAgICAgICAgLy8gc3BlY2lh
bC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5
cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCi0gICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBj
YXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtl
IElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1l
bnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxl
c0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsK
KyAgICAgICAgLy8gTm9ybWFsbHksIGEgU2V0QXJndW1lbnQgb3IgU2V0TG9jYWwgZGVub3RlcyB0
aGUgc3RhcnQgb2YgYSBsaXZlIHJhbmdlIGZvcgorICAgICAgICAvLyBhIGxvY2FsJ3MgdmFsdWUg
b24gdGhlIHN0YWNrLiBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIGFuZCBTZXRMb2NhbHMgdXNlZAor
ICAgICAgICAvLyBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJs
b2NrIGdldCBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlCisgICAgICAgIC8vIGluc3RlYWQg
dXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMgYXQg
dGhlIHByb2xvZ3VlIGNhc2UsCisgICAgICAgIC8vIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIg
dXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFja1tpXSk7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpAQCAtNDgwLDYgKzQ4Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNh
c2UgU2V0TG9jYWw6CiAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA2
LDYgKzQwNiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAg
ICBjYXNlIFBoaToKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICBjYXNlIFNldEFyZ3VtZW50
OgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2Fz
ZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgLy8gREZHIGJhY2tlbmQgcmVxdWlyZXMgdGhhdCB0aGUgbG9jYWxz
IHRoYXQgdGhpcyByZWFkcyBhcmUgZmx1c2hlZC4gRlRMIGJhY2tlbmQgY2FuIGhhbmRsZSB0aG9z
ZQogICAgICAgICAvLyBsb2NhbHMgYmVpbmcgcHJvbW90ZWQuCi0gICAgICAgIGlmICghaXNGVEwo
Z3JhcGgubV9wbGFuLm1vZGUpKQorICAgICAgICBpZiAoIWlzRlRMKGdyYXBoLm1fcGxhbi5tb2Rl
KSAmJiAhbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAg
IHJlYWQoU3RhY2spOwogICAgICAgICAKICAgICAgICAgLy8gRXZlbiB0aG91Z2ggaXQncyBwaGFu
dG9tLCBpdCBzdGlsbCBoYXMgdGhlIHByb3BlcnR5IHRoYXQgb25lIGNhbid0IGJlIHJlcGxhY2Vk
IHdpdGggYW5vdGhlci4KQEAgLTU1OSwxMSArNTYwLDE4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CiAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgY2FzZSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgogICAgICAgICByZWFkKFdvcmxkKTsKICAgICAgICAgd3JpdGUoU2lkZVN0
YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3M6CisgICAgICAgIC8vIFdlIHJlYWQgYWxsIGFyZ3VtZW50cyBhZnRlciAidGhpcyIu
CisgICAgICAgIGZvciAodW5zaWduZWQgYXJnID0gMTsgYXJnIDwgZ3JhcGgubV9hcmd1bWVudHNP
blN0YWNrLnNpemUoKTsgYXJnKyspCisgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFj
aywgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJnKSkpOworICAgICAgICByZWFkKFdvcmxk
KTsKKyAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fz
ZSBHZXRHZXR0ZXI6CiAgICAgICAgIHJlYWQoR2V0dGVyU2V0dGVyX2dldHRlcik7CiAgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oR2V0dGVyTG9jLCBHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw4IEBAIGVudW0gU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHsgU3RydWMKIAogZW51bSBPcHRpbWl6YXRpb25GaXhw
b2ludFN0YXRlIHsgQmVmb3JlRml4cG9pbnQsIEZpeHBvaW50Tm90Q29udmVyZ2VkLCBGaXhwb2lu
dENvbnZlcmdlZCB9OwogCitlbnVtIFN0cmVuZ3RoUmVkdWNlQXJndW1lbnRGbHVzaGVzIHsgRG9u
dE9wdGltaXplQXJndW1lbnRGbHVzaGVzLCBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlcyB9OworCiAv
LyBEZXNjcmliZXMgdGhlIGZvcm0geW91IGNhbiBleHBlY3QgdGhlIGVudGlyZSBncmFwaCB0byBi
ZSBpbi4KIGVudW0gR3JhcGhGb3JtIHsKICAgICAvLyBMb2FkU3RvcmUgZm9ybSBtZWFucyB0aGF0
IGJhc2ljIGJsb2NrcyBtYXkgZnJlZWx5IHVzZSBHZXRMb2NhbCwgU2V0TG9jYWwsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJs
b2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9h
cmd1bWVudHMpOworICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzT25T
dGFjayk7CisgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVj
a2luZyk7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4t
dXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9j
a3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAg
Y2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CisgICAgY2Fz
ZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBM
b2dTaGFkb3dDaGlja2VuUHJvbG9ndWU6CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuVGFpbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIw
OTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsOCArOTAsOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGls
ZUltcGwoCiAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9l
cyBmaW5hbGl6YXRpb24gb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZtLmdldENUSVN0dWIob3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpOwotICAgIHZtLmdldENUSVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcik7Ci0gICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWND
YWxsVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlu
a0RpcmVjdENhbGxUaHVua0dlbmVyYXRvcik7CisgICAgdm0uZ2V0SklUQ2FsbFRodW5rRW50cnlT
dHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgCiAgICAgaWYgKHZt
LnR5cGVQcm9maWxlcigpKQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xv
Z0VudHJpZXMoQVNDSUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OTEsNiArMTc5MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAg
IGNhc2UgR2V0Q2FsbGVlOgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgIGNhc2UgR2V0
UmVzdExlbmd0aDoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDIwOTY1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChmb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIs
IGZvcm1hdCk7CiAgICAgfQorCisgICAgdm9pZCBpbml0QXJndW1lbnRSZWdpc3RlclZhbHVlKE5v
ZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IHJlZ2lz
dGVyRm9ybWF0ID0gIERhdGFGb3JtYXRKUykKKyAgICB7CisgICAgICAgIG1fbm9kZSA9IG5vZGU7
CisgICAgICAgIG1fdXNlQ291bnQgPSB1c2VDb3VudDsKKyAgICAgICAgbV9yZWdpc3RlckZvcm1h
dCA9IHJlZ2lzdGVyRm9ybWF0OworICAgICAgICBtX3NwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdE5v
bmU7CisgICAgICAgIG1fY2FuRmlsbCA9IGZhbHNlOworICAgICAgICB1LmdwciA9IGdwcjsKKyAg
ICAgICAgbV9ib3JuRm9yT1NSID0gZmFsc2U7CisgICAgICAgIG1faXNDb25zdGFudCA9IGZhbHNl
OworICAgICAgICBBU1NFUlQobV91c2VDb3VudCk7CisgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICB2b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50
LCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQgPSBE
YXRhRm9ybWF0SlMpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDYgQEAgdm9pZCBHcmFwaDo6
ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9Ci0gICAg
QVNTRVJUKG5vZGUtPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgqdGhpcykgPT0gbm9kZS0+YWNjZXNz
ZXNTdGFjaygqdGhpcykpOwogICAgIGlmIChub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRo
aXMpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0g
bm9kZS0+dHJ5R2V0VmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZUFj
Y2Vzc0RhdGEpIHsKQEAgLTM3Myw2ICszNzIsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChk
YXRhLT5jYXNlc1tpXS52YWx1ZSwgY29udGV4dCksICI6IiwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0
KTsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZGVmYXVsdDoiLCBkYXRhLT5mYWxsVGhyb3Vn
aCk7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKSwgIigi
LCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4
KCkpLCAiKSIpOwogICAgIENsb2JiZXJTZXQgcmVhZHM7CiAgICAgQ2xvYmJlclNldCB3cml0ZXM7
CiAgICAgYWRkUmVhZHNBbmRXcml0ZXMoKnRoaXMsIG5vZGUsIHJlYWRzLCB3cml0ZXMpOwpAQCAt
Mzk2LDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV2FzSG9pc3RlZCIpOwogICAgIG91dC5wcmludCgi
KSIpOwogCi0gICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2soKnRoaXMpICYmIG5vZGUtPnRyeUdl
dFZhcmlhYmxlQWNjZXNzRGF0YSgpKQorICAgIGlmICgobm9kZS0+YWNjZXNzZXNTdGFjaygqdGhp
cykgfHwgbm9kZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKSAmJiBub2RlLT50cnlHZXRW
YXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgb3V0LnByaW50KCIgIHByZWRpY3RpbmcgIiwg
U3BlY3VsYXRpb25EdW1wKG5vZGUtPnRyeUdldFZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
aW9uKCkpKTsKICAgICBlbHNlIGlmIChub2RlLT5oYXNIZWFwUHJlZGljdGlvbigpKQogICAgICAg
ICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVh
cFByZWRpY3Rpb24oKSkpOwpAQCAtNTA2LDggKzUwNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAi
LCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3Rh
dGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNv
dW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJp
bnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAi
XG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3RE
dW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIG91dC5wcmludCgi
ICBBcmd1bWVudHMgZm9yIGNoZWNraW5nOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50c0ZvckNoZWNr
aW5nKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgb24gc3RhY2s6ICIs
IGxpc3REdW1wKG1fYXJndW1lbnRzT25TdGFjayksICJcbiIpOworICAgIH0KICAgICBvdXQucHJp
bnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtMTYyMCwx
MyArMTYyMywxMyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAg
ICAgICAgIGlmICghY3VycmVudE5vZGUgfHwgbm9kZS0+b3JpZ2luICE9IGN1cnJlbnROb2RlLT5v
cmlnaW4pIHsKICAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgICAgIGlmIChu
b2RlLT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vz
c2VzU3RhY2soKnRoaXMpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcikgewog
ICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gWyZdICgpIC0+IFZhbHVlUHJv
ZmlsZSogewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVu
dF07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQorICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c09uU3RhY2tbYXJndW1lbnRd
OworICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSB8fCAhYXJndW1lbnROb2Rl
LT5hY2Nlc3Nlc1N0YWNrKCp0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTksNyArODU5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9y
aWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwog
ICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNE
ZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KLSAgICBib29sIG5l
ZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsg
fQorICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdn
ZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAKICAgICBWTSYgbV92bTsK
ICAgICBQbGFuJiBtX3BsYW47CkBAIC04NzgsOSArODc4LDkgQEAgcHVibGljOgogICAgIAogICAg
IEJhZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKICAgICAKLSAgICAv
LyBJbiBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFy
Z3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrCi0gICAgLy8gdGhhdCBzdXJ2aXZlZCBE
Q0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVj
YXVzZSBvZiB0aGUgRmx1c2gKLSAgICAvLyBub2Rlcy4KKyAgICAvLyBJbiBDUFMsIHRoaXMgaXMg
YWxsIG9mIHRoZSBHZXRBcmd1bWVudFJlZ2lzdGVyIGFuZCBTZXRBcmd1bWVudCBub2RlcyBmb3Ig
dGhlIGFyZ3VtZW50cyBpbgorICAgIC8vIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdCBzdXJ2
aXZlZCBEQ0UuIEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERD
RSwKKyAgICAvLyBiZWNhdXNlIG9mIHRoZSBGbHVzaCBub2Rlcy4KICAgICAvLwogICAgIC8vIElu
IFNTQSwgdGhpcyBpcyBhbGwgb2YgdGhlIEdldFN0YWNrIG5vZGVzIGZvciB0aGUgYXJndW1lbnRz
IGluIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2sgdGhhdAogICAgIC8vIG1heSBoYXZlIHNvbWUgc3Bl
Y3VsYXRpb24gaW4gdGhlIHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBn
ZXQgdGhlIHNwZWN1bGF0aW9uCkBAIC05MDMsNyArOTAzLDggQEAgcHVibGljOgogICAgIC8vCiAg
ICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sg
b24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBW
ZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1
bWVudHNPblN0YWNrOworICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHNGb3JDaGVja2lu
ZzsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhp
cyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAg
VmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKQEAgLTk1NCw2ICs5NTUsNyBA
QCBwdWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1f
dW5pZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6
OkluaXRpYWwgfTsKKyAgICBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlcyBtX3N0cmVuZ3Ro
UmVkdWNlQXJndW1lbnRzID0geyBTdHJlbmd0aFJlZHVjZUFyZ3VtZW50Rmx1c2hlczo6RG9udE9w
dGltaXplQXJndW1lbnRGbHVzaGVzIH07CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3Rh
dGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0
aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0cmFj
dFN0YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkK
ICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNb
aV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c09uU3RhY2tb
aV07CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1
c2hlZEpTVmFsdWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQgfHwgbm9kZS0+b3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTksMTggKzk5LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICB9CiB9
CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCi17Ci0gICAgLy8gVGhpcyBjb2Rl
IGN1cnJlbnRseSBtYXRjaGVzIHRoZSBvbGQgSklULiBJbiB0aGUgZnVuY3Rpb24gaGVhZGVyIHdl
IG5lZWQgdG8KLSAgICAvLyBzYXZlIHJldHVybiBhZGRyZXNzIGFuZCBjYWxsIGZyYW1lIHZpYSB0
aGUgcHJvbG9ndWUgYW5kIHBlcmZvcm0gYSBmYXN0IHN0YWNrIGNoZWNrLgotICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTIKLSAgICAvLyBX
ZSdsbCBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlbWFpbmluZyBjdGlfIHN0eWxlIGNhbGxzIChzcGVj
aWZpY2FsbHkgdGhlIHN0YWNrCi0gICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50
IG9uIHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCi0gICAg
Ly8gYm90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRp
b24gaGFuZGxlcikuCi0gICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci19
Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsK
ICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CkBAIC0yNzcsNyArMjY1LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2pzQ2FsbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNDYWxsUmVjb3JkJiByZWNv
cmQgPSBtX2pzQ2FsbHNbaV07CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQu
aW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93Q2FsbCwgRnVuY3Rpb25Q
dHIobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxs
LCBGdW5jdGlvblB0cihtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxUaHVu
a0dlbmVyYXRvcikuZW50cnlGb3IoaW5mby5hcmd1bWVudHNMb2NhdGlvbigpKS5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5z
bG93Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC0yODcsNiArMjc1LDggQEAgdm9pZCBK
SVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGZvciAoSlNEaXJlY3RDYWxs
UmVjb3JkJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZv
JiBpbmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLmNh
bGwsIGxpbmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQuc2xvd1BhdGgpKTsKKyAgICAgICAgaWYg
KHJlY29yZC5oYXNTbG93Q2FsbCgpKQorICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29y
ZC5zbG93Q2FsbCwgRnVuY3Rpb25QdHIobV92bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxp
bmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKGluZm8uYXJndW1lbnRzTG9jYXRp
b24oKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlv
bnMoCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpLAogICAgICAgICAgICAgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKHJlY29yZC5zbG93UGF0aCksCkBAIC0zNTQsOCArMzQ0LDE0IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZSgpCiB7CisgICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCiAgICAgc2V0U3Rh
cnRPZkNvZGUoKTsKLSAgICBjb21waWxlRW50cnkoKTsKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOworCisgICAgTGFiZWwgZW50cnlQb2ludCh0aGlzKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisKICAgICBt
X3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwog
CiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxl
IGluIHRoZSBKU1N0YWNrLgpAQCAtMzgyLDYgKzM3OCwyMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlKCkKIAogICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9j
b2RlQmxvY2spOwogCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKyAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOworCisgICAgLy8gTG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVu
dCByZWdpc3RlcnMKKyAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50
Q291bnQoKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4
IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpICYm
IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJn
SW5kZXgrKykKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmdJbmRleCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoYXJnSW5kZXgpKTsKKyAgICAKKyAgICBqdW1wKGVudHJ5UG9pbnQpOworI2VuZGlmCisK
ICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5T
bG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRz
KCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC00
MDYsMjQgKzQxNiw4NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBjb2RlQmxv
Y2soKS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKIAogICAgIGRpc2Fzc2Vt
YmxlKCpsaW5rQnVmZmVyKTsKLSAgICAKKworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRz
OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBlbnRy
eXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxp
bmtCdWZmZXItPmxvY2F0aW9uT2YobWFpbkVudHJ5KSk7CisgICAgZW50cnlwb2ludHMuc2V0RW50
cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlv
bk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQorICAgIGVudHJ5cG9pbnRzLnNl
dEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbGlua0J1ZmZlci0+bG9j
YXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxp
emVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1f
cGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
ZW50cnlwb2ludHMpOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQog
ewogICAgIHNldFN0YXJ0T2ZDb2RlKCk7Ci0gICAgY29tcGlsZUVudHJ5KCk7CisKKyNpZiBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbnVtUGFy
YW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKTsKKyAgICBHUFJSZWcgYXJnQ291bnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1l
bnRDb3VudCgpOworICAgIEp1bXBMaXN0IGNvbnRpbnVlUmVnaXN0ZXJFbnRyeTsKKyAgICBMYWJl
bCByZWdpc3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMgKyAxXTsKKworICAgIGlmIChudW1QYXJhbWV0ZXJzIDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAvLyBTcGlsbCBhbnkg
ZXh0cmEgcmVnaXN0ZXIgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbiBvbnRvIHRoZSBzdGFj
ay4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCA9IE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgLSAxOworICAgICAgICAgICAg
ZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXggPj0gbnVtUGFyYW1ldGVyczsgZXh0cmFSZWdpc3Rl
ckFyZ3VtZW50SW5kZXgtLSkgeworICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBv
aW50c1tleHRyYVJlZ2lzdGVyQXJndW1lbnRJbmRleCArIDFdID0gbGFiZWwoKTsKKyAgICAgICAg
ICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdp
c3RlckZvckZ1bmN0aW9uQXJndW1lbnQoZXh0cmFSZWdpc3RlckFyZ3VtZW50SW5kZXgpLCBleHRy
YVJlZ2lzdGVyQXJndW1lbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5jcmVtZW50
Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgIGNvbnRpbnVlUmVnaXN0ZXJF
bnRyeS5hcHBlbmQoanVtcCgpKTsKKworICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFyaXR5Q2hlY2sg
PSBsYWJlbCgpOworICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlJlZ0FyZ3NBcml0eSk7
CisKKyAgICBMYWJlbCByZWdpc3RlckFyZ3NDaGVja0FyaXR5KHRoaXMpOworCisgICAgSnVtcCBy
ZWdpc3RlckNoZWNrQXJpdHk7CisKKyAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0
eSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBhcmdDb3VudFJlZywgVHJ1c3RlZEltbTMyKG51bVBhcmFt
ZXRlcnMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVnaXN0ZXJDaGVja0FyaXR5ID0gYnJhbmNo
MzIoQmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobnVtUGFyYW1ldGVycykpOworICAg
ICAgICBtX3JlZ2lzdGVyQXJnc1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisgICAg
fQorICAgIAorICAgIExhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5KHRoaXMpOworCisgICAgaWYg
KG51bVBhcmFtZXRlcnMgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UykKKyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1tudW1QYXJhbWV0ZXJzXSA9
IHJlZ2lzdGVyRW50cnlOb0FyaXR5OworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6
UmVnQXJnc05vQXJpdHkpOworCisgICAgY29udGludWVSZWdpc3RlckVudHJ5LmxpbmsodGhpcyk7
CisjZW5kaWYgLy8gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworCisg
ICAgTGFiZWwgbWFpbkVudHJ5KHRoaXMpOworCisgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsK
IAogICAgIC8vID09PSBGdW5jdGlvbiBoZWFkZXIgY29kZSBnZW5lcmF0aW9uID09PQogICAgIC8v
IFRoaXMgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIHdpdGhvdXQgcGVyZm9ybWluZyBhbiBhcml0
eSBjaGVjay4KICAgICAvLyBJZiB3ZSBuZWVkZWQgdG8gcGVyZm9ybSBhbiBhcml0eSBjaGVjayB3
ZSB3aWxsIGFscmVhZHkgaGF2ZSBtb3ZlZCB0aGUgcmV0dXJuIGFkZHJlc3MsCiAgICAgLy8gc28g
ZW50ZXIgYWZ0ZXIgdGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKKworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBzdG9yZVB0cihh
cmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKSk7CisgICAgc3RvcmUzMihhcmdDb3VudFJlZywgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSk7CisKKyAgICBMYWJlbCBmcm9tU3RhY2tFbnRyeSh0aGlzKTsKKyNl
bmRpZgorICAgIAorICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKwogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZm
aWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KLSAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3JhcGgucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpIC0gMSkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0
ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBK
dW1wIHN0YWNrT3ZlcmZsb3cgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3Zt
LT5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9ncmFwaC5yZXF1aXJlZFJl
Z2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCkgLSAxKS5vZmZzZXQoKSAqIHNpemVvZihS
ZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgSnVtcCBzdGFja092ZXJmbG93ID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFk
ZHJlc3MobV92bS0+YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwogCiAgICAgLy8gTW92ZSB0aGUgc3RhY2sgcG9pbnRlciBkb3duIHRvIGFjY29tbW9kYXRl
IGxvY2FscwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9ncmFwaC5zdGFja1BvaW50ZXJPZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtNDUyLDI4ICs1MjUsMTA1IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAg
bV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisKKyAg
ICBKdW1wTGlzdCBhcml0eU9LOwogICAgIAotICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGlu
dG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1l
bnRzCi0gICAgLy8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhl
IGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKLSAgICAvLyBkZXRlcm1p
bmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBo
YXZlIGFscmVhZHkgY2hlY2tlZCkuCi0gICAgLy8gSW4gY2FzZXMgd2hlcmUgYW4gYXJpdHkgY2hl
Y2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgotICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhp
cyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBERkcgc3R5bGUgb3BlcmF0aW9uIChub3JtYWwgQyBjYWxs
aW5nIGNvbnZlbnRpb25zKS4KLSAgICBtX2FyaXR5Q2hlY2sgPSBsYWJlbCgpOwotICAgIGNvbXBp
bGVFbnRyeSgpOworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICBqdW1wKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHkpOworCisgICAgSnVtcExpc3QgcmVnaXN0
ZXJBcml0eU5lZWRzRml4dXA7CisgICAgaWYgKG51bVBhcmFtZXRlcnMgPCBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgIHJlZ2lzdGVyQ2hlY2tBcml0
eS5saW5rKHRoaXMpOworICAgICAgICByZWdpc3RlckFyaXR5TmVlZHNGaXh1cC5hcHBlbmQoYnJh
bmNoMzIoQmVsb3csIGFyZ0NvdW50UmVnLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkpKTsKKworICAgICAgICAvLyBXZSBoYXZlIGV4dHJhIHJlZ2lzdGVyIGFyZ3Vt
ZW50cy4KKworICAgICAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24g
ZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCisgICAg
ICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBmYXN0
IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5CisgICAgICAgIC8vIGRldGVybWlu
ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXNzZWQsIG9yIGhh
dmUgYWxyZWFkeSBjaGVja2VkKS4KKyAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUgYW4gYXJpdHkg
Y2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgorICAgICAgICBtX3JlZ2lzdGVyQXJn
c1dpdGhQb3NzaWJsZUV4dHJhQXJncyA9IGxhYmVsKCk7CisKKyAgICAgICAgaW5jcmVtZW50Q291
bnRlcih0aGlzLCBWTTo6UmVnQXJnc0V4dHJhKTsKKworICAgICAgICAvLyBTcGlsbCBleHRyYSBh
cmdzIHBhc3NlZCB0byBmdW5jdGlvbgorICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOyBhcmdJ
bmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4
KyspIHsKKyAgICAgICAgICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWws
IGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSkubGlu
a1RvKG1haW5FbnRyeSwgdGhpcyk7CisgICAgICAgICAgICBlbWl0UHV0QXJndW1lbnRUb0NhbGxG
cmFtZUJlZm9yZVByb2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFy
Z0luZGV4KSwgYXJnSW5kZXgpOworICAgICAgICB9CisgICAgICAgIGp1bXAobWFpbkVudHJ5KTsK
KyAgICB9CisKKyAgICAvLyBGYWxsIHRocm91Z2gKKyAgICBpZiAobnVtUGFyYW1ldGVycyA+IDAp
IHsKKyAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhICJ0aGlzIiBwYXJhbWV0ZXIu
CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQXJndW1lbnRGaXh1cENvdW50ID0gc3RkOjptaW4o
bnVtUGFyYW1ldGVycyAtIDEsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlMpOworICAgICAgICBMYWJlbCByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gbGFi
ZWwoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJnSW5kZXggPD0g
cmVnaXN0ZXJBcmd1bWVudEZpeHVwQ291bnQ7IGFyZ0luZGV4KyspCisgICAgICAgICAgICByZWdp
c3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0luZGV4XSA9IHJlZ2lzdGVyQXJndW1lbnRzTmVl
ZEFyaXR5Rml4dXA7CisgICAgfQorCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVn
QXJnc0FyaXR5KTsKKworICAgIHJlZ2lzdGVyQXJpdHlOZWVkc0ZpeHVwLmxpbmsodGhpcyk7CisK
KyAgICBpZiAobnVtUGFyYW1ldGVycyA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTKQorICAgICAgICByZWdpc3RlckNoZWNrQXJpdHkubGluayh0aGlzKTsKKworICAg
IHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIEVO
QUJMRShWTV9DT1VOVEVSUykKKyAgICBKdW1wIGNvbnRpbnVlVG9TdGFja0FyaXR5Rml4dXAgPSBq
dW1wKCk7CisjZW5kaWYKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisKKyAgICBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrID0gbGFiZWwoKTsKKyAg
ICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpTdGFja0FyZ3NBcml0eSk7CisKKyNpZiBFTkFC
TEUoVk1fQ09VTlRFUlMpCisgICAgY29udGludWVUb1N0YWNrQXJpdHlGaXh1cC5saW5rKHRoaXMp
OworI2VuZGlmCisKKyAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgbG9hZDMyKEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGFyaXR5T0suYXBwZW5k
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworCisgICAgaW5jcmVtZW50Q291bnRlcih0aGlz
LCBWTTo6QXJpdHlGaXh1cFJlcXVpcmVkKTsKKwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29k
ZU9yaWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9u
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlD
aGVjaywgR1BSSW5mbzo6cmVnVDApOwogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBicmFuY2hUZXN0MzIoWmVybywg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7Cisg
ICAgYXJpdHlPSy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKSk7CisKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIG1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAg
bV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICBKdW1wIHRvRmlsbFJlZ2lzdGVycyA9IGp1bXAoKTsKKwor
ICAgIG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5ID0gbGFiZWwoKTsKKworICAgIGluY3JlbWVudENv
dW50ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CisKKyAgICBhcml0eU9LLmxpbmsodGhpcyk7CisgICAgdG9GaWxsUmVnaXN0ZXJzLmxp
bmsodGhpcyk7CisKKyAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGFyZ3VtZW50IHJl
Z2lzdGVycworICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSAmJiBhcmdJbmRl
eCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4Kysp
CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoQ2Fs
bEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJnSW5kZXgpICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGFy
Z0luZGV4KSk7CisKKyAgICBqdW1wKGZyb21TdGFja0VudHJ5KTsKKyNlbHNlCisgICAgYXJpdHlP
Sy5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2sp
OworI2VuZGlmCiAgICAgCiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9z
cGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyKTsKQEAgLTUwMiwxMCArNjUyLDM1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiAgICAgCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZiht
X2FyaXR5Q2hlY2spOworICAgIEpJVEVudHJ5UG9pbnRzIGVudHJ5cG9pbnRzOworI2lmIE5VTUJF
Ul9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyNpZiBFTkFCTEUoVk1fQ09VTlRF
UlMpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1haW5FbnRyeUNvZGVQdHIgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1haW5FbnRyeSk7CisjZW5kaWYKKyAgICBlbnRyeXBvaW50cy5zZXRFbnRyeUZvcihSZWdpc3Rl
ckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIG1haW5FbnRyeUNvZGVQdHIpOworICAgIGVudHJ5
cG9pbnRzLnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzLCBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKG1fcmVnaXN0ZXJBcmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzKSk7Cisg
ICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJpdHksIGxp
bmtCdWZmZXItPmxvY2F0aW9uT2YobV9yZWdpc3RlckFyZ3NXaXRoQXJpdHlDaGVjaykpOworCisg
ICAgZm9yICh1bnNpZ25lZCBhcmdDb3VudCA9IDE7IGFyZ0NvdW50IDw9IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0NvdW50KyspIHsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGVudHJ5OworICAgICAgICBpZiAoYXJnQ291bnQgPT0gbnVtUGFyYW1l
dGVycykKKyAgICAgICAgICAgIGVudHJ5ID0gbWFpbkVudHJ5Q29kZVB0cjsKKyAgICAgICAgZWxz
ZSBpZiAocmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdDb3VudF0uaXNTZXQoKSkKKyAg
ICAgICAgICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50
c0VudHJ5cG9pbnRzW2FyZ0NvdW50XSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsK
KyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQb2ludHM6OnJlZ2lzdGVy
RW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5KTsKKyAgICB9CisgICAg
ZW50cnlwb2ludHMuc2V0RW50cnlGb3IoU3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBs
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fc3RhY2tBcmdzQXJpdHlPS0VudHJ5KSk7CisjZWxzZQor
ICAgIGVudHJ5cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJl
ZCwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihtYWluRW50cnkpKTsKKyNlbmRpZgorICAgIGVudHJ5
cG9pbnRzLnNldEVudHJ5Rm9yKFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBsaW5rQnVmZmVyLT5s
b2NhdGlvbk9mKG1fc3RhY2tBcmdzV2l0aEFyaXR5Q2hlY2spKTsKIAogICAgIG1fZ3JhcGgubV9w
bGFuLmZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
d2l0aEFyaXR5Q2hlY2spOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENv
ZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCBlbnRyeXBvaW50cyk7CiB9CiAKIHZvaWQgSklUQ29t
cGlsZXI6OmRpc2Fzc2VtYmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMDk2NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pzRGlyZWN0Q2FsbHMu
YXBwZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93UGF0aCwgaW5mbykpOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIGFkZEpTRGlyZWN0Q2FsbChDYWxsIGNhbGwsIENhbGwgc2xvd0NhbGws
IExhYmVsIHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgeworICAgICAgICBtX2pz
RGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChjYWxsLCBzbG93Q2FsbCwgc2xv
d1BhdGgsIGluZm8pKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0RpcmVjdFRhaWxDYWxs
KFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCwgQ2FsbCBjYWxsLCBMYWJlbCBzbG93UGF0aCwg
Q2FsbExpbmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9qc0RpcmVjdFRhaWxDYWxscy5h
cHBlbmQoSlNEaXJlY3RUYWlsQ2FsbFJlY29yZChwYXRjaGFibGVKdW1wLCBjYWxsLCBzbG93UGF0
aCwgaW5mbykpOwpAQCAtMjY3LDcgKzI3Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI7CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50
YXRpb24gdG8gY29tcGlsZS4KLSAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29t
cGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVFbnRyeUV4ZWN1
dGlvbkZsYWcoKTsKICAgICB2b2lkIGNvbXBpbGVCb2R5KCk7CkBAIC0zMTgsNyArMzIyLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgSlNEaXJl
Y3RDYWxsUmVjb3JkKENhbGwgY2FsbCwgQ2FsbCBzbG93Q2FsbCwgTGFiZWwgc2xvd1BhdGgsIENh
bGxMaW5rSW5mbyogaW5mbykKKyAgICAgICAgICAgIDogY2FsbChjYWxsKQorICAgICAgICAgICAg
LCBzbG93Q2FsbChzbG93Q2FsbCkKKyAgICAgICAgICAgICwgc2xvd1BhdGgoc2xvd1BhdGgpCisg
ICAgICAgICAgICAsIGluZm8oaW5mbykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBoYXNTbG93Q2FsbCgpIHsgcmV0dXJuIHNsb3dDYWxsLm1fbGFiZWwuaXNTZXQoKTsgfQor
CiAgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgQ2FsbCBzbG93Q2FsbDsKICAgICAgICAgTGFi
ZWwgc2xvd1BhdGg7CiAgICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwpAQCAtMzU1
LDcgKzM3MCwxMiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJPU1JFeGl0Q2FsbFNpdGVzOwogICAgIAogICAgIENh
bGwgbV9jYWxsQXJpdHlGaXh1cDsKLSAgICBMYWJlbCBtX2FyaXR5Q2hlY2s7CisjaWYgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIExhYmVsIG1fcmVnaXN0ZXJB
cmdzV2l0aFBvc3NpYmxlRXh0cmFBcmdzOworICAgIExhYmVsIG1fcmVnaXN0ZXJBcmdzV2l0aEFy
aXR5Q2hlY2s7CisgICAgTGFiZWwgbV9zdGFja0FyZ3NBcml0eU9LRW50cnk7CisjZW5kaWYKKyAg
ICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
cGVjdWxhdGl2ZUpJVD4gbV9zcGVjdWxhdGl2ZTsKICAgICBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywxMSArMzcsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCi1KSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcihQbGFuJiBwbGFuLCBQYXNzUmVmUHRyPEpJ
VENvZGU+IGppdENvZGUsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCitKSVRGaW5hbGl6ZXI6OkpJVEZp
bmFsaXplcihQbGFuJiBwbGFuLCBQYXNzUmVmUHRyPEpJVENvZGU+IGppdENvZGUsCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIEpJVEVudHJ5UG9pbnRzJiBlbnRy
eXBvaW50cykKICAgICA6IEZpbmFsaXplcihwbGFuKQogICAgICwgbV9qaXRDb2RlKGppdENvZGUp
CiAgICAgLCBtX2xpbmtCdWZmZXIoV1RGTW92ZShsaW5rQnVmZmVyKSkKLSAgICAsIG1fd2l0aEFy
aXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCisgICAgLCBtX2VudHJ5cG9pbnRzKGVudHJ5cG9pbnRz
KQogewogfQogCkBAIC01Niw5ICs1Nyw4IEBAIHNpemVfdCBKSVRGaW5hbGl6ZXI6OmNvZGVTaXpl
KCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIHsKLSAgICBtX2ppdENvZGUtPmlu
aXRpYWxpemVDb2RlUmVmKAotICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVy
LCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUo
bV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSksCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJl
ZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAl
cyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRD
b2RlOjpERkdKSVQpKS5kYXRhKCkpKTsKKyAgICBtX2ppdENvZGUtPmluaXRpYWxpemVFbnRyeVBv
aW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgbV9lbnRyeXBvaW50cykpOwogICAg
IAogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKICAgICAKQEAg
LTY5LDEwICs2OSwxMSBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogCiBib29sIEpJ
VEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1f
d2l0aEFyaXR5Q2hlY2suaXNFbXB0eVZhbHVlKCkpOwotICAgIG1faml0Q29kZS0+aW5pdGlhbGl6
ZUNvZGVSZWYoCi0gICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZH
IEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4u
Y29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKLSAgICAgICAgbV93aXRoQXJp
dHlDaGVjayk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZW50cnlwb2ludHMuZW50cnlGb3IoU3Rh
Y2tBcmdzTXVzdENoZWNrQXJpdHkpLmlzRW1wdHlWYWx1ZSgpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZH
IEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4u
Y29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKTsKKworICAgIG1faml0Q29kZS0+
aW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZihjb2RlUmVmLCBtX2Vu
dHJ5cG9pbnRzKSk7CisKICAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29k
ZSk7CiAgICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJ
VEZpbmFsaXplciA6IHB1YmxpYyBGaW5hbGl6ZXIgewogcHVibGljOgotICAgIEpJVEZpbmFsaXpl
cihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpFbXB0eVZhbHVlKSk7CisgICAgSklURmluYWxp
emVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENvZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZl
cj4sIEpJVEVudHJ5UG9pbnRzJik7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAg
CiAgICAgc2l6ZV90IGNvZGVTaXplKCkgb3ZlcnJpZGU7CkBAIC00OCw3ICs0OCw3IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtX3dpdGhBcml0eUNoZWNrOworICAgIEpJVEVudHJ5UG9pbnRzIG1fZW50cnlwb2ludHM7CiB9
OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJv
b2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYm
IG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50
c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzT25TdGFj
a1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAg
ICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9k
ZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50IHx8IG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgICAg
ICYmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgfHwgbm9kZSAhPSBtX2dyYXBoLm1fYXJn
dW1lbnRzT25TdGFja1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV0pKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJy
ZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghZmx1c2hBY2Nlc3NEYXRhKQpAQCAtMTE3LDcgKzExNyw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGlmIChpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUs
IG5vZGUtPm9wKCkgIT0gU2V0TG9jYWwpOyAvLyBXZSBzaG91bGQgaGF2ZSBpbnNlcnRlZCBhIEZs
dXNoIGJlZm9yZSB0aGlzIQogICAgICAgICAgICAgaW5pdGlhbEFjY2Vzc0RhdGEub3BlcmFuZChv
cGVyYW5kKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgaW5pdGlh
bEFjY2Vzc05vZGVzLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIwOTY1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDYgKzcyLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBO
b2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBH
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0
ZXI6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlm
aWVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
aW5pZmllZE5vZGUuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw4
IEBAIE1pbmlmaWVkTm9kZSBNaW5pZmllZE5vZGU6OmZyb21Ob2RlKE5vZGUKICAgICByZXN1bHQu
bV9vcCA9IG5vZGUtPm9wKCk7CiAgICAgaWYgKGhhc0NvbnN0YW50KG5vZGUtPm9wKCkpKQogICAg
ICAgICByZXN1bHQubV9pbmZvID0gSlNWYWx1ZTo6ZW5jb2RlKG5vZGUtPmFzSlNWYWx1ZSgpKTsK
KyAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAg
IHJlc3VsdC5tX2luZm8gPSBub2RlLT5hcmd1bWVudFJlZ2lzdGVySW5kZXgoKTsKICAgICBlbHNl
IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cyB8
fCBub2RlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMpOwogICAgICAgICByZXN1bHQu
bV9pbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlm
aWVkTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWlu
aWZpZWROb2RlLmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWluaWZpZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMs
NiArNDMsNyBAQCBpbmxpbmUgYm9vbCBiZWxvbmdzSW5NaW5pZmllZEdyYXBoKE5vZGVUCiAgICAg
Y2FzZSBEb3VibGVDb25zdGFudDoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAg
ICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdp
c3RlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNzEsNiArNzIsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxJbmxpbmVDYWxsRnJhbWUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1f
aW5mbykpOwogICAgIH0KKworICAgIGJvb2wgaGFzQXJndW1lbnRJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIGhhc0FyZ3VtZW50SW5kZXgobV9vcCk7IH0KKworICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KICAgICAKICAgICBzdGF0aWMgTWluaWZpZWRJ
RCBnZXRJRChNaW5pZmllZE5vZGUqIG5vZGUpIHsgcmV0dXJuIG5vZGUtPmlkKCk7IH0KICAgICBz
dGF0aWMgYm9vbCBjb21wYXJlQnlOb2RlSW5kZXgoY29uc3QgTWluaWZpZWROb2RlJiBhLCBjb25z
dCBNaW5pZmllZE5vZGUmIGIpCkBAIC04OCw2ICs5MywxMSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHR5cGUgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cyB8fCB0eXBlID09IFBo
YW50b21DbG9uZWRBcmd1bWVudHM7CiAgICAgfQorCisgICAgc3RhdGljIGJvb2wgaGFzQXJndW1l
bnRJbmRleChOb2RlVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gR2V0
QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9CiAgICAgCiAgICAgTWluaWZpZWRJRCBtX2lkOwogICAg
IHVpbnQ2NF90IG1faW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBib29sIE5vZGU6Omhhc1Zhcmlh
YmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExv
Y2FsOgogICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVy
OgogICAgIGNhc2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIHJldHVy
biB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIw
OTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MjgsNiArODI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmFyaWFibGVBY2Nl
c3NEYXRhKEdyYXBoJik7CiAgICAgYm9vbCBhY2Nlc3Nlc1N0YWNrKEdyYXBoJiBncmFwaCkKICAg
ICB7CisgICAgICAgIGlmIChvcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgcmV0dXJuIGhhc1ZhcmlhYmxlQWNjZXNzRGF0YShn
cmFwaCk7CiAgICAgfQogICAgIApAQCAtODQ2LDYgKzg0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX29wSW5mby5hczxWYXJpYWJsZUFjY2Vzc0RhdGEqPigpLT5maW5kKCk7CiAgICAg
fQogICAgIAorICAgIHZvaWQgc2V0VmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUpCisgICAgeworICAgICAgICBtX29wSW5mbyA9IHZhcmlhYmxlOworICAgIH0K
KyAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHZhcmlhYmxlQWNjZXNzRGF0YSgpLT5sb2NhbCgpOwpAQCAtMTIxNCw2ICsxMjIyLDE3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgp
KTsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcjsKKyAgICB9Cisg
ICAgCisgICAgdW5zaWduZWQgYXJndW1lbnRSZWdpc3RlckluZGV4KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29w
SW5mbzIuYXM8dW5zaWduZWQ+KCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiAhIXJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVUaGlz
LCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdl
J3JlIHJldHVybmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2Rl
UmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudFJlZ2lzdGVyLCBOb2RlUmVzdWx0
SlMgLyogfCBOb2RlTXVzdEdlbmVyYXRlICovKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBs
b2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNp
bmcgUGhpIG5vZGVzLiAqL1wKICAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2Yg
dGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw2ICsxNDQsMTEgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0
b3I6OmV4ZQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFyZ3VtZW50UmVn
aXN0ZXI6IHsKKyAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2RlLT5s
b2NhbCgpKS5zZXROb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IE1vdkhpbnQ6IHsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChub2Rl
LT51bmxpbmtlZExvY2FsKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjA5NjUwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDMyIEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgw
KS0+b3JpZ2luOwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAg
ICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1l
bnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSnVz
dCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3Qg
bmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2Fy
Z3VtZW50XTsKKyAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZl
IGFuIGFyZ3VtZW50IG5vZGUgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAg
ICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmd1bWVudF07CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9k
ZSgKLSAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdp
biwKLSAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
KTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAg
ICAgICAgICAgIE5vZGUqIG5vZGU7CisgICAgICAgICAgICBOb2RlKiBzdGFja05vZGU7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnQgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVH
SVNURVJTKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBHZXRBcmd1bWVudFJlZ2lzdGVy
LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcmd1bWVudFJlZ2lzdGVy
SW5kZXhGb3JKU0Z1bmN0aW9uQXJndW1lbnQoYXJndW1lbnQpKSk7CisgICAgICAgICAgICAgICAg
c3RhY2tOb2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksCisgICAgICAgICAgICAgICAgICAg
IEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2Rl
ID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3Bl
Y05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhv
bGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAgICAgIHN0YWNrTm9k
ZSA9IG5vZGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNGb3JDaGVja2luZ1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c09uU3RhY2tbYXJndW1lbnRdID0gc3RhY2tOb2RlOwogICAgICAgICB9CiAKICAgICAg
ICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fs
czsgKytsb2NhbCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShy
ZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDkgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRo
IFBsYW46OmNvbXBpbGVJblRocgogICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICBwZXJmb3JtQ29u
c3RhbnRGb2xkaW5nKGRmZyk7CiAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZGZnLm1f
c3RyZW5ndGhSZWR1Y2VBcmd1bWVudHMgPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1c2hlczsKICAgICBj
aGFuZ2VkIHw9IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOworICAgIGNoYW5nZWQgfD0g
cGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKGRmZyk7CiAgICAgY2hhbmdlZCB8PSBwZXJmb3JtTG9j
YWxDU0UoZGZnKTsKICAgICAKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAg
ICAgICAvLyBBbGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUg
ZGVmaW5pdGVseSByZWFkLgorICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3Qgc3Rh
Y2sgYXJndW1lbnRzLCBleGNlcHQgdGhpcywgYXJlIGRlZmluaXRlbHkgcmVhZC4KICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNGb3JDaGVja2luZ1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGlj
dCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFjY2Vz
c2VzU3RhY2sobV9ncmFwaCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hY2Nlc3Nl
c1N0YWNrKG1fZ3JhcGgpIHx8IG5vZGUtPm9wKCkgPT0gR2V0QXJndW1lbnRSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1fZ3JhcGgubV9wbGFuLm11c3RI
YW5kbGVWYWx1ZXNbaV0pKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAg
ICBjYXNlIEdldEFyZ3VtZW50UmVnaXN0ZXI6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAg
ICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0
aW9uICYgU3BlY0ludDUyT25seSkpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVk
aWN0aW9uIHwgU3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAg
ICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChu
b2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtOTY4LDYgKzk3OCw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgY2FzZSBTZXRMb2NhbDoK
KyAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgICAgICBjYXNlIFVJbnQzMlRv
TnVtYmVyOgogICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Np
bmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NyArMTQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIH0gd2hpbGUgKGNoYW5n
ZWQpOwogICAgICAgICAKLSAgICAgICAgLy8gQWxsIG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJl
IGxpdmUgYXQgaGVhZCBvZiByb290LiBOb3RlIHRoYXQgd2UgbWF5IGZpbmQgdGhhdCBzb21lCisg
ICAgICAgIC8vIEFsbCBvZiB0aGUgc3RhY2sgYXJndW1lbnRzIHNob3VsZCBiZSBsaXZlIGF0IGhl
YWQgb2Ygcm9vdC4gTm90ZSB0aGF0IHdlIG1heSBmaW5kIHRoYXQgc29tZQogICAgICAgICAvLyBs
b2NhbHMgYXJlIGxpdmUgYXQgaGVhZCBvZiByb290LiBUaGlzIHNlZW1zIHdyb25nIGJ1dCBpc24n
dC4gVGhpcyB3aWxsIGhhcHBlbiBmb3IgZXhhbXBsZQogICAgICAgICAvLyBpZiB0aGUgZnVuY3Rp
b24gYWNjZXNzZXMgY2xvc3VyZSB2YXJpYWJsZSAjNDIgZm9yIHNvbWUgb3RoZXIgZnVuY3Rpb24g
YW5kIHdlIGVpdGhlciBkb24ndAogICAgICAgICAvLyBoYXZlIHZhcmlhYmxlICM0MiBhdCBhbGwg
b3Igd2UgaGF2ZW4ndCBzZXQgaXQgYXQgcm9vdCwgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFzaWNh
bGx5IHRoaXMKQEAgLTE1Nyw4ICsxNTcsMTIgQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAg
ICAvLyBGb3Igb3VyIHB1cnBvc2VzIGhlcmUsIHRoZSBpbXByZWNpc2lvbiBpbiB0aGUgYWxpYXNp
bmcgaXMgaGFybWxlc3MuIEl0IGp1c3QgbWVhbnMgdGhhdCB3ZQogICAgICAgICAvLyBtYXkgbm90
IGRvIGFzIG11Y2ggUGhpIHBydW5pbmcgYXMgd2Ugd2FudGVkLgotICAgICAgICBmb3IgKHNpemVf
dCBpID0gbGl2ZUF0SGVhZC5hdEluZGV4KDApLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspCi0g
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGxpdmVBdEhlYWQuYXRJbmRl
eCgwKS5hcmd1bWVudChpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsaXZlQXRIZWFkLmF0
SW5kZXgoMCkubnVtYmVyT2ZBcmd1bWVudHMoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGkg
Pj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAg
ICAgICAgIC8vIFN0YWNrIGFyZ3VtZW50cyBhcmUgbGl2ZSBhdCB0aGUgaGVhZCBvZiByb290Lgor
ICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbGl2ZUF0SGVhZC5h
dEluZGV4KDApLmFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gTmV4dCBpZGVudGlmeSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIHNpbmsg
UHV0U3RhY2tzIHRvLiBXZSBzYXkgdGhhdCB0aGVyZSBpcyBhIGRlZmVycmVkCiAgICAgICAgIC8v
IGZsdXNoIGlmIHdlIGhhZCBhIFB1dFN0YWNrIHdpdGggYSBnaXZlbiBGbHVzaEZvcm1hdCBidXQg
aXQgaGFzbid0IGJlZW4gbWF0ZXJpYWxpemVkIHlldC4KQEAgLTM1OCw3ICszNjIsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNr
OgotICAgICAgICAgICAgICAgICAgICBwdXRTdGFja3NUb1NpbmsuYWRkKG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9hcmd1bWVudHNPblN0YWNrLmNvbnRhaW5zKG5v
ZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcHV0U3RhY2tzVG9TaW5rLmFkZChub2RlKTsK
ICAgICAgICAgICAgICAgICAgICAgc3NhQ2FsY3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kVG9WYXJpYWJsZS5vcGVyYW5kKG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5sb2NhbCksCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgbm9kZS0+Y2hpbGQx
KCkubm9kZSgpKTsKQEAgLTQ4MywxMSArNDg4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBt
YXBwaW5nLm9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB3ZSBkb24ndCBkZWxldGUgYXJndW1lbnQgUHV0U3RhY2tzLCBubyBuZWVkIHRvIGFkZCBvbmUg
YmFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fYXJndW1lbnRzT25T
dGFjay5jb250YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFj
ay4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0YWNrIGZvciAiLCBvcGVyYW5k
LCAiIGF0ICIsIG5vZGUsICJcbiIpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBp
bmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgaW5jb21pbmcpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtNTM4LDYgKzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5j
b21pbmc7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbmNyZXRlKGRlZmVycmVkLm9wZXJh
bmQob3BlcmFuZCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyA9IG1hcHBp
bmcub3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fYXJndW1lbnRzT25TdGFjay5jb250YWlucyhpbmNvbWluZykpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIHBoaU5vZGUsIGluY29taW5nKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgR2V0U3RhY2sgdG8gZ2V0IHRo
ZSB2YWx1ZS4gVGhpcyBtaWdodCBpbnRyb2R1Y2Ugc29tZSByZWR1bmRhbmN5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDIwOTY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzNiw2ICsyMzYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IG1fYmFuay0+aXNMb2NrZWRBdEluZGV4KG1faW5kZXgpOwogICAgICAgICB9CiAKKyAgICAgICAg
dm9pZCB1bmxvY2soKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9iYW5r
LT51bmxvY2tBdEluZGV4KG1faW5kZXgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2
b2lkIHJlbGVhc2UoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBtX2JhbmstPnJlbGVh
c2VBdEluZGV4KG1faW5kZXgpOwpAQCAtMjk4LDYgKzMwMywxMyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbV9kYXRhW2luZGV4XS5sb2NrQ291bnQ7CiAgICAgfQogCisgICAgdm9pZCB1bmxv
Y2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwg
TlVNX1JFR1MpOworICAgICAgICBBU1NFUlQobV9kYXRhW2luZGV4XS5sb2NrQ291bnQpOworICAg
ICAgICAtLW1fZGF0YVtpbmRleF0ubG9ja0NvdW50OworICAgIH0KKwogICAgIFZpcnR1YWxSZWdp
c3RlciBuYW1lQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChpbmRleCA8IE5VTV9SRUdTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIC8vIEZpbmQgYWxsIFNldExvY2FscyBhbmQgY3JlYXRlIERlZnMgZm9yIHRoZW0u
IFdlIGhhbmRsZSBTZXRBcmd1bWVudCBieSBjcmVhdGluZyBhCi0gICAgICAgIC8vIEdldExvY2Fs
LCBhbmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBmb3JtYXQuCisgICAgICAgIC8vIEdldFN0YWNrLCBh
bmQgcmVjb3JkaW5nIHRoZSBmbHVzaCBmb3JtYXQuIFdlIGhhbmRsZSBHZXRBcmd1bWVudFJlZ2lz
dGVyIGJ5IGRpcmVjdGx5CisgICAgICAgIC8vIGFkZGluZyB0aGUgbm9kZSB0byBtX2FyZ3VtZW50
TWFwcGluZyBoYXNoIG1hcC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBt
X2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAo
IWJsb2NrKQpAQCAtODMsMTQgKzg0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIGFzc2ln
bm1lbnQgZm9yIGV2ZXJ5IGxvY2FsLgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5k
ZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCAmJiBub2RlLT5vcCgpICE9IFNldEFyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsICYmIG5vZGUt
Pm9wKCkgIT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+b3AoKSAhPSBHZXRBcmd1bWVudFJlZ2lzdGVy
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogY2hp
bGROb2RlOworICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCiAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVnaXN0ZXIpCisgICAgICAgICAgICAg
ICAgICAgIG1fYXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBub2RlKTsKICAgICAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKApAQCAtMTAxLDkgKzEwNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FyZ3VtZW50R2V0dGVycy5hZGQoY2hpbGROb2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9hcmd1bWVudE1hcHBpbmcuYWRkKG5vZGUsIGNoaWxkTm9kZSk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5u
ZXdEZWYoCi0gICAgICAgICAgICAgICAgICAgIG1fc3NhVmFyaWFibGVGb3JWYXJpYWJsZS5nZXQo
dmFyaWFibGUpLCBibG9jaywgY2hpbGROb2RlKTsKKworICAgICAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWxjdWxhdG9yLm5ld0RlZigKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc3NhVmFyaWFibGVGb3JWYXJpYWJsZS5nZXQodmFyaWFibGUp
LCBibG9jaywgY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpA
QCAtMjk0LDcgKzI5OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlRm9y
T3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IGNoaWxkOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAor
CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOiB7CisgICAgICAgICAg
ICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQo
dmFyaWFibGUtPmxvY2FsKCkpID0gbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazogewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmd1bWVudEdldHRlcnMuY29udGFpbnMobm9kZSkp
OwogICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZChub2RlLT5zdGFj
a0FjY2Vzc0RhdGEoKS0+bG9jYWwpID0gbm9kZTsKQEAgLTM4MiwxNyArMzkzLDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykg
eworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJn
dW1lbnRzRm9yQ2hlY2tpbmcuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
Rmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9h
cmd1bWVudHNGb3JDaGVja2luZ1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGUpOwotICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NE
YXRhKCktPmZvcm1hdDsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50
UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0g
dmFyaWFibGUtPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0Owot
ICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUg
bG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJv
ZmlsaW5nLgorICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2ldID0g
bm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhl
IGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiAr
MTQ3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNh
c2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBj
YXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2Fs
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzIs
NyArOTMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRl
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoZHluYW1pY09yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2Nr
KCktPmFkZENhbGxMaW5rSW5mbygpOwotICAgIGluZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXlsb2FkR1BSKTsKKyAgICBpbmZvLT5zZXRVcENh
bGwoY2FsbFR5cGUsIFN0YWNrQXJncywgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXls
b2FkR1BSKTsKICAgICAKICAgICBhdXRvIHNldFJlc3VsdEFuZFJlc2V0U3RhY2sgPSBbJl0gKCkg
ewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAt
MTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAot
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93
Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTU2
MjQsNiArNTYyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBjYXNlIEdldFN0YWNrOgogICAgIGNhc2UgR2V0TXlB
cmd1bWVudEJ5VmFsOgorICAgIGNhc2UgR2V0QXJndW1lbnRSZWdpc3RlcjoKICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6
CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NTIo
R1BSUmVnIHNvdQogICAgIHVubG9jayhmcHIpOwogfQogCi1HUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUoRWRnZSBlZGdlLCBHUFJSZWcgZ3ByVG9Vc2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3Rlcik7CiAgICAgCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBj
YXNlIERhdGFGb3JtYXROb25lOiB7Ci0gICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwor
ICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoZ3ByVG9Vc2UpOwogCiAgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdl
LT5hc0pTVmFsdWUoKTsKQEAgLTEyMCw3ICsxMjAsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAvLyBJZiB0aGUgcmVnaXN0ZXIgaGFzIGFscmVh
ZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0YWtlIGEgY29weS4KICAgICAgICAgLy8gSWYgbm90
LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFjZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0aGF0IHRo
aXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdEludDMyLCBub3QgRGF0YUZvcm1hdEpTSW50MzIuCiAg
ICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgewotICAgICAgICAgICAgR1BSUmVnIHJl
c3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUo
Z3ByVG9Vc2UpOworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGdwclRvVXNlICE9IEludmFsaWRHUFJSZWcgJiYgZ3ByICE9IGdw
clRvVXNlKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoZ3ByVG9Vc2Up
OwogICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IGdwciwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAg
LTEzOCw2ICsxNDMsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdl
IAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xl
YW46IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGlmIChncHJU
b1VzZSAhPSBJbnZhbGlkR1BSUmVnICYmIGdwciAhPSBncHJUb1VzZSkgeworICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKGdwclRvVXNlKTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQog
ICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KQEAg
LTYzMiw2ICs2NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVx
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewogICAgIENhbGxM
aW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7CisgICAgQXJndW1lbnRzTG9jYXRpb24gYXJndW1l
bnRzTG9jYXRpb24gPSBTdGFja0FyZ3M7CiAgICAgYm9vbCBpc1ZhcmFyZ3MgPSBmYWxzZTsKICAg
ICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxzZTsKICAgICBib29sIGlzVGFpbCA9IGZhbHNl
OwpAQCAtNzE0LDcgKzcyNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKLSAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPEpT
VmFsdWVPcGVyYW5kPiB0YWlsQ2FsbGVlOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBjYWxsZWVHUFJUZW1wb3Jhcnk7CisKKyAgICBpbmNyZW1lbnRDb3VudGVyKCZtX2ppdCwgVk06
OkRGR0NhbGxlcik7CisKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7
CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgIGlmIChpc0RpcmVjdCkgewpAQCAtNzMzLDYgKzc0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUjsKICAgICAg
ICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSBtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hp
bmVMb2NhbDsKICAgICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6
Q2FsbFZhcmFyZ3MpOwogICAgICAgICBpZiAoaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKQEAg
LTg0MSwxNSArODU3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1RhaWwpIHsKKyAgICAgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJm1faml0LCBWTTo6VGFpbENhbGwpOwogICAgICAgICAgICAgRWRnZSBjYWxs
ZWVFZGdlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKTsKLSAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKLSAgICAgICAgICAgIGNhbGxlZUdQ
UiA9IGNhbGxlZS5ncHIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGdldCB0aGUgYSBzcGVj
aWZpYyByZWdpc3RlciBmb3IgdGhlIGNhbGxlZSwgc2luY2UgdGhhdCB3aWxsIGp1c3QgbW92ZQor
ICAgICAgICAgICAgLy8gZnJvbSBhbnkgY3VycmVudCByZWdpc3Rlci4gIFdoZW4gd2Ugc2lsZW50
IGZpbGwgaW4gdGhlIHNsb3cgcGF0aCB3ZSdsbCBmaWxsCisgICAgICAgICAgICAvLyB0aGUgb3Jp
Z2luYWwgcmVnaXN0ZXIgYW5kIHdvbid0IGhhdmUgdGhlIGNhbGxlZSBpbiB0aGUgcmlnaHQgcmVn
aXN0ZXIuCisgICAgICAgICAgICAvLyBUaGVyZWZvcmUgd2UgYWxsb2NhdGUgYSB0ZW1wIHJlZ2lz
dGVyIGZvciB0aGUgY2FsbGVlIGFuZCBtb3ZlIG91cnNlbHZlcy4KKyAgICAgICAgICAgIHRhaWxD
YWxsZWUuZW1wbGFjZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyB0YWls
Q2FsbGVlR1BSID0gdGFpbENhbGxlZS0+Z3ByKCk7CisgICAgICAgICAgICBjYWxsZWVHUFIgPSBh
cmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgICAgICBpZiAodGFpbENhbGxlZUdQ
UiAhPSBjYWxsZWVHUFIpCisgICAgICAgICAgICAgICAgY2FsbGVlR1BSVGVtcG9yYXJ5ID0gR1BS
VGVtcG9yYXJ5KHRoaXMsIGNhbGxlZUdQUik7CiAgICAgICAgICAgICBpZiAoIWlzRGlyZWN0KQot
ICAgICAgICAgICAgICAgIGNhbGxlZS51c2UoKTsKKyAgICAgICAgICAgICAgICB0YWlsQ2FsbGVl
LT51c2UoKTsKIAorICAgICAgICAgICAgYXJndW1lbnRzTG9jYXRpb24gPSBhcmd1bWVudHNMb2Nh
dGlvbkZvcihudW1BbGxvY2F0ZWRBcmdzKTsKKyAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3Vt
ZW50c0luUmVnaXN0ZXJzID0gYXJndW1lbnRzTG9jYXRpb24gIT0gU3RhY2tBcmdzOwogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcjsKICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IG1faml0LmdyYXBo
KCkuZnJhbWVSZWdpc3RlckNvdW50KCk7Ci0gICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUg
PSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVHUFIsIERhdGFGb3JtYXRKUyk7CisgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUih0YWlsQ2FsbGVl
R1BSLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5yZXNpemUo
bnVtQWxsb2NhdGVkQXJncyk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1QYXNzZWRBcmdzOyArK2kpIHsKQEAgLTg2NCw3ICs4OTAsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEu
YXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
ICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9qaXQuY29kZUJs
b2NrKCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkg
PT0gQ2FsbEV2YWwpIHsKKyAgICAgICAgICAgIC8vIENhbGxFdmFsIGlzIGhhbmRsZWQgd2l0aCB0
aGUgYXJndW1lbnRzIGluIHRoZSBzdGFjawogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsK
QEAgLTg3OCwxNSArOTA1LDU3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFz
c2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21waWxlcjo6Y2FsbGVlQXJn
dW1lbnRTbG90KGkpKTsKKworICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmbV9qaXQsIFZN
OjpDYWxsRXZhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1QYXNzZWRBcmdzOyBpLS0gPiAwOykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBw
bGF0Zm9ybUFyZ0dQUiA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpOwor
ICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGls
ZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CisgICAgICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYXJnKHRoaXMsIGFyZ0VkZ2UsIHBsYXRmb3JtQXJnR1BSKTsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgYXJnR1BSID0gYXJnLmdwcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChh
cmdHUFIgPT0gcGxhdGZvcm1BcmdHUFIgfHwgcGxhdGZvcm1BcmdHUFIgPT0gSW52YWxpZEdQUlJl
Zyk7CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGZyZWUgdGhlIG5vbi1hcmd1bWVudCByZWdp
c3RlcnMgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1BcmdHUFIg
PT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICB1c2UoYXJnRWRnZSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYXJnR1BSLCBKSVRDb21waWxlcjo6Y2Fs
bGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFVzZSB0aGUgYXJndW1lbnQgZWRnZXMgZm9yIGFyZ3VtZW50cyBwYXNz
ZWQgaW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2Vk
QXJnczsgaS0tID4gMDspIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJnR1BSID0gYXJndW1l
bnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSk7CisgICAgICAgICAgICAgICAgaWYgKGFy
Z0dQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRn
ZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAx
ICsgaV07CisgICAgICAgICAgICAgICAgICAgIHVzZShhcmdFZGdlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdDb3VudCh0
aGlzLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBhcmdDb3VudEdQUiA9IGFyZ0NvdW50LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIGFyZ0NvdW50R1BSKTsKKyAgICAgICAgICAg
IGFyZ3VtZW50c0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQWxsb2NhdGVkQXJn
cyk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBu
dW1BbGxvY2F0ZWRBcmdzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcGxhdGZvcm1B
cmdHUFIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKworICAgICAg
ICAgICAgICAgIGlmIChwbGF0Zm9ybUFyZ0dQUiA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBKSVRDb21w
aWxlcjo6Y2FsbGVlQXJndW1lbnRTbG90KGkpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3VtZW50VGVtcCh0aGlzLCBwbGF0Zm9y
bUFyZ0dQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGFyZ3VtZW50VGVtcC5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IGlmICghaXNUYWlsIHx8IGlzVmFyYXJncyB8fCBpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAg
IEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCk7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdlKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxlZUVkZ2UsIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxs
ZWUoKSk7CiAgICAgICAgIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgY2FsbGVl
LnVzZSgpOwotICAgICAgICBtX2ppdC5zdG9yZTY0KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNh
bGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgICAgIG1faml0LnN0b3JlNjQoY2Fs
bGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSkpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgfQpAQCAtOTEzLDcgKzk4Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICB9OwogICAg
IAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwotICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBt
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CisgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxlZUdQUik7CiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBD
YWxsRXZhbCkgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNhbGwgb3BlcmF0aW9uQ2FsbEV2YWwg
YnV0IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBwYXJhbWV0ZXIgYXJlYSBpbgpAQCAt
OTU0LDggKzEwMjMsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogICAgICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2Rl
LT5vcCgpID09IERpcmVjdFRhaWxDYWxsKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgICAgICAgICAgbV9q
aXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIoKSk7CisK
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBt
X2ppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgbWFp
blBhdGggPSBtX2ppdC5sYWJlbCgpOworCisgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZt
X2ppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0
LCBWTTo6RGlyZWN0Q2FsbCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmVtaXRT
dG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgICAgICAgICAgCkBAIC05NzEsNiArMTA0
Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNhbGxMaW5rSW5mbywg
Y2FsbGVlR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQ
UlJlZyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAg
aWYgKGNhbGxlZUdQUlRlbXBvcmFyeSAhPSBzdGQ6Om51bGxvcHQpCisgICAgICAgICAgICAgICAg
bV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVtcG9yYXJ5LT5ncHIoKSk7
CiAgICAgICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKQEAgLTk4MSw2ICsxMDU4
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAK
ICAgICAgICAgSklUQ29tcGlsZXI6OkxhYmVsIG1haW5QYXRoID0gbV9qaXQubGFiZWwoKTsKICAg
ICAgICAgCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJm1faml0LCBWTTo6RGlyZWN0Q2FsbCk7
CisKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7CiAgICAg
ICAgIAogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQubmVhckNhbGwoKTsK
QEAgLTk4OCwyMCArMTA2NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6TGFiZWwgc2xvd1BhdGggPSBt
X2ppdC5sYWJlbCgpOwogICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgIG1faml0LnBv
cChKSVRDb21waWxlcjo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIpKTsKKyAgICAgICAgICAg
IG1faml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsKKworICAgICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFy
Z0dQUjApOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gbm9uQXJnR1BSMAorICAgICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgY2FsbExpbmtJbmZvLCBjYWxs
ZWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBtX2ppdC5q
dW1wKCkubGlua1RvKG1haW5QYXRoLCAmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7
Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5hZGRKU0RpcmVjdENhbGwoY2FsbCwgc2xvd1BhdGgs
IGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgbV9qaXQuYWRkSlNEaXJlY3RDYWxsKGNhbGwsIHNs
b3dDYWxsLCBzbG93UGF0aCwgY2FsbExpbmtJbmZvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKKworICAgIGlmIChpc1RhaWwgJiYgY2FsbGVlR1BSVGVtcG9yYXJ5ICE9IHN0ZDo6bnVs
bG9wdCkKKyAgICAgICAgbV9qaXQubW92ZSh0YWlsQ2FsbGVlLT5ncHIoKSwgY2FsbGVlR1BSVGVt
cG9yYXJ5LT5ncHIoKSk7CisKICAgICBtX2ppdC5lbWl0U3RvcmVDYWxsU2l0ZUluZGV4KGNhbGxT
aXRlKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7
CkBAIC0xMDI1LDIzICsxMTA5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKIAogICAgIGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsKSB7CiAgICAgICAgIENh
bGxGcmFtZVNodWZmbGVyIGNhbGxGcmFtZVNodWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSk7Ci0g
ICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdz
KEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChhcmd1bWVudHNMb2NhdGlvbiA9PSBTdGFj
a0FyZ3MpCisgICAgICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVn
cyhKU1ZhbHVlUmVncyhhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpKTsKICAgICAgICAgY2Fs
bEZyYW1lU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRz
IHRvIGJlIGluIHJlZ1QwCi0KLSAgICAgICAgaWYgKGlzVGFpbCkKLSAgICAgICAgICAgIG1faml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIg
d2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCi0gICAgfQorICAgIH0gZWxzZSBpZiAoaXNUYWls
KQorICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86
OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCisgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKIAotICAgIGlmIChpc1RhaWwpCisgICAgaWYgKGlzVGFpbCkgeworICAg
ICAgICB0YWlsQ2FsbGVlID0gc3RkOjpudWxsb3B0OworICAgICAgICBjYWxsZWVHUFJUZW1wb3Jh
cnkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRS
ZXR1cm5Gcm9tVGFpbENhbGwpOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgc2V0UmVz
dWx0QW5kUmVzZXRTdGFjaygpOwogCiAgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93
Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbExpbmtJbmZvKTsKQEAgLTQxNjYsNiArNDI0OSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewogICAgICAgICBjb21waWxl
R2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA5NjUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZl
SklUKEpJVENvbXBpbAogICAgICwgbV9sYXN0R2VuZXJhdGVkTm9kZShMYXN0Tm9kZVR5cGUpCiAg
ICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5ncmFw
aCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpKQorICAgICwgbV9hcmd1bWVudEdlbmVyYXRpb25JbmZv
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSArIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnMpCiAgICAgLCBtX3N0YXRlKG1faml0LmdyYXBoKCkpCiAgICAgLCBtX2ludGVycHJldGVyKG1f
aml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAgLCBtX3N0cmVhbSgmaml0LmppdENvZGUoKS0+dmFy
aWFibGVFdmVudFN0cmVhbSkKQEAgLTQwNyw2ICs0MDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjbGVhckdlbmVyYXRpb25JbmZvCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Z2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9baV0g
PSBHZW5lcmF0aW9uSW5mbygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3Vt
ZW50R2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYXJndW1lbnRHZW5lcmF0
aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CiAgICAgbV9ncHJzID0gUmVnaXN0ZXJCYW5r
PEdQUkluZm8+KCk7CiAgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+KCk7CiB9CkBA
IC0xMTk5LDYgKzEyMDIsMjUgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJpbmco
RGF0YQogICAgIHJldHVybiBzdHJpbmdzW2Zvcm1hdF07CiB9CiAKK3N0YXRpYyB2b2lkIGR1bXBS
ZWdpc3RlckluZm8oR2VuZXJhdGlvbkluZm8mIGluZm8sIHVuc2lnbmVkIGluZGV4KQoreworICAg
IGlmIChpbmZvLmFsaXZlKCkpCisgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDolcyVzIiwgaW5k
ZXgsIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0
cmluZyhpbmZvLnNwaWxsRm9ybWF0KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFMb2dGKCIg
ICAgJSAzZDpbX19dW19fXSIsIGluZGV4KTsKKyAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAgIGRhdGFMb2dGKCI6ZnByJWRcbiIsIGluZm8u
ZnByKCkpOworICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0
Tm9uZQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICYmICEoaW5mby5yZWdpc3RlckZv
cm1hdCgpICYgRGF0YUZvcm1hdEpTKQorI2VuZGlmCisgICAgICAgICkgeworICAgICAgICBBU1NF
UlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZGF0YUxvZ0YoIjolc1xu
IiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmR1bXAoY29uc3QgY2hh
ciogbGFiZWwpCiB7CiAgICAgaWYgKGxhYmVsKQpAQCAtMTIwOCwyNSArMTIzMCwxNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhCiAgICAgbV9ncHJzLmR1bXAoKTsK
ICAgICBkYXRhTG9nRigiICBmcHJzOlxuIik7CiAgICAgbV9mcHJzLmR1bXAoKTsKLSAgICBkYXRh
TG9nRigiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2ldOwotICAgICAgICBpZiAoaW5mby5hbGl2ZSgp
KQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAlIDNkOiVzJXMiLCBpLCBkYXRhRm9ybWF0U3Ry
aW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5zcGlsbEZv
cm1hdCgpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgJSAzZDpb
X19dW19fXSIsIGkpOwotICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGUpCi0gICAgICAgICAgICBkYXRhTG9nRigiOmZwciVkXG4iLCBpbmZvLmZwcigp
KTsKLSAgICAgICAgZWxzZSBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRO
b25lCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICYmICEoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKQotI2VuZGlmCi0gICAgICAgICAgICApIHsKLSAgICAg
ICAgICAgIEFTU0VSVChpbmZvLmdwcigpICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAg
ZGF0YUxvZ0YoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICB9CisKKyAgICBkYXRh
TG9nRigiICBBcmd1bWVudCBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAg
ICAgZHVtcFJlZ2lzdGVySW5mbyhtX2FyZ3VtZW50R2VuZXJhdGlvbkluZm9baV0sIGkpOworCisg
ICAgZGF0YUxvZ0YoIiAgTG9jYWwgVmlydHVhbFJlZ2lzdGVyczpcbiIpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBk
dW1wUmVnaXN0ZXJJbmZvKG1fZ2VuZXJhdGlvbkluZm9baV0sIGkpOworCiAgICAgaWYgKGxhYmVs
KQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVsKTsKIH0KQEAgLTE2NzcsNiArMTY4
OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAKICAg
ICBtX2ppdC5ibG9ja0hlYWRzKClbbV9ibG9jay0+aW5kZXhdID0gbV9qaXQubGFiZWwoKTsKIAor
ICAgIGlmICghbV9ibG9jay0+aW5kZXgpCisgICAgICAgIGNoZWNrQXJndW1lbnRUeXBlcygpOwor
CiAgICAgaWYgKCFtX2Jsb2NrLT5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpIHsKICAgICAg
ICAgLy8gRG9uJ3QgZ2VuZXJhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2tzIHRoYXQgYXJlIHVucmVh
Y2hhYmxlIGFjY29yZGluZyB0byBDRkEuCiAgICAgICAgIC8vIEJ1dCB0byBiZSBzdXJlIHRoYXQg
bm9ib2R5IGhhcyBnZW5lcmF0ZWQgYSBqdW1wIHRvIHRoaXMgYmxvY2ssIGRyb3AgaW4gYQpAQCAt
MTY4Nyw2ICsxNzAyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9j
awogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsK
ICAgICAKKyAgICBpZiAoIW1fYmxvY2stPmluZGV4KQorICAgICAgICBzZXR1cEFyZ3VtZW50UmVn
aXN0ZXJzRm9yRW50cnkoKTsKKyAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxG
cmFtZSgpOwogICAgIG1faml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CiAgICAgbV9qaXQuaml0
QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKTsKQEAgLTE2OTYsNiArMTcxNCwyMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgCiAgICAgZm9yIChzaXplX3Qg
aSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplKCk7IGktLTspIHsKICAgICAgICAgaW50
IG9wZXJhbmQgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZEZvckluZGV4KGkpOwor
ICAgICAgICBpZiAoIW1fYmxvY2stPmluZGV4ICYmIG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQp
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG1fYmxvY2stPnZhcmlhYmxlc0F0
SGVhZC5hcmd1bWVudEZvckluZGV4KGkpOworICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2Rl
ID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c0ZvckNoZWNraW5nW2FyZ3VtZW50XTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGFyZ3VtZW50Tm9kZSAmJiBhcmd1bWVudE5vZGUtPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAgICAgIGlmICghYXJndW1l
bnROb2RlLT5yZWZDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gTm8g
bmVlZCB0byByZWNvcmQgZGVhZCBHZXRBcmd1bWVudFJlZ2lzdGVycydzLgorICAgICAgICAgICAg
ICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coCisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxl
RXZlbnQ6Om1vdkhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBNaW5pZmllZElEKGFyZ3Vt
ZW50Tm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudE5vZGUtPmxvY2FsKCkp
KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWRbaV07CiAgICAg
ICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29y
ZCBkZWFkIFNldExvY2FsJ3MuCkBAIC0xNzgyLDEzICsxODE1LDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29k
ZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBO
b2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNGb3JDaGVja2luZ1tpXTsKICAgICAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9u
J3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQpOworICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudAorICAg
ICAgICAgICAgfHwgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgJiYgbm9kZS0+Y2hpbGQxKCktPm9w
KCkgPT0gR2V0QXJndW1lbnRSZWdpc3RlcikKKyAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0g
R2V0QXJndW1lbnRSZWdpc3Rlcik7CiAgICAgICAgIEFTU0VSVChub2RlLT5zaG91bGRHZW5lcmF0
ZSgpKTsKIAogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwpAQCAtMTc5OSwyMyArMTgzNCw0NCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgICAgIAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2Nh
bCgpOwogCi0gICAgICAgIEpTVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNl
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOwotICAgICAgICAKKyAg
ICAgICAgSlNWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyID0gSW52YWxpZEdQUlJlZzsKKworI2lmIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpKSA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJ
U1RFUlMpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVy
Rm9yRnVuY3Rpb25Bcmd1bWVudChpKTsKKyAgICAgICAgICAgIHZhbHVlU291cmNlID0gSlNWYWx1
ZVNvdXJjZShhcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyNlbmRp
ZgorICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOworCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6IHsKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgYXJndW1lbnRSZWdpc3RlciwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGFyZ3VtZW50UmVnaXN0ZXIsIHRlbXAuZ3ByKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAg
ICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZh
bHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEp
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVk
Q2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudFJlZ2lzdGVyICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmd1
bWVudFJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNl
LCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
QEAgLTE4NDYsMTAgKzE5MDIsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVu
dFR5cGVzKAogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbigpOwogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpzZXR1cEFyZ3VtZW50UmVnaXN0ZXJzRm9yRW50cnkoKQoreworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBCYXNpY0Jsb2NrKiBmaXJzdEJs
b2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jaygwKTsKKworICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzIwCisgICAgLy8gV2Ugc2hvdWxkIHNj
YW4gbV9hcmd1ZW1udHNGb3JDaGVja2luZyBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIEdldEFyZ3Vt
ZW50UmVnaXN0ZXIKKyAgICAvLyBub2RlcyBpbiB0aGUgcm9vdCBibG9jay4KKyAgICBmb3IgKHNp
emVfdCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBmaXJzdEJsb2NrLT5zaXplKCk7
ICsraW5kZXhJbkJsb2NrKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBmaXJzdEJsb2NrLT5hdChp
bmRleEluQmxvY2spOworCisgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50UmVn
aXN0ZXIpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBu
b2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZv
ID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRSZWcgPSBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0
ZXIobm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBBU1NFUlQoYXJndW1lbnRSZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFTU0VSVCghbV9ncHJzLmlzTG9ja2VkKGFyZ3VtZW50UmVnKSk7CisgICAg
ICAgICAgICBtX2dwcnMuYWxsb2NhdGVTcGVjaWZpYyhhcmd1bWVudFJlZyk7CisgICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGFyZ3VtZW50UmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJK
Uyk7CisgICAgICAgICAgICBpbmZvLmluaXRBcmd1bWVudFJlZ2lzdGVyVmFsdWUobm9kZSwgbm9k
ZS0+cmVmQ291bnQoKSwgYXJndW1lbnRSZWcsIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBp
bmZvLm5vdGljZU9TUkJpcnRoKCptX3N0cmVhbSwgbm9kZSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIC8vIERvbid0IGxlYXZlIGFyZ3VtZW50IHJlZ2lzdGVycyBsb2NrZWQuCisgICAg
ICAgICAgICBtX2dwcnMudW5sb2NrKGFyZ3VtZW50UmVnKTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZgorfQorCiBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKCkKIHsKLSAgICBjaGVja0Fy
Z3VtZW50VHlwZXMoKTsKLSAgICAKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1faml0LmdyYXBoKCku
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICBtX2ppdC5zZXRGb3JCbG9ja0lu
ZGV4KGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4
LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlJl
ZyBmaWxsSlNWYWx1ZShFZGdlKTsKKyAgICBHUFJSZWcgZmlsbEpTVmFsdWUoRWRnZSwgR1BSUmVn
IGdwclRvVXNlID0gSW52YWxpZEdQUlJlZyk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IGJvb2wgZmlsbEpTVmFsdWUoRWRnZSwgR1BSUmVnJiwgR1BSUmVnJiwgRlBSUmVnJik7CiAjZW5k
aWYKQEAgLTIwMCw2ICsyMDAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9B
TExPQ0FUSU9OX1ZBTElEQVRJT04pCiAgICAgICAgIG1faml0LmFkZFJlZ2lzdGVyQWxsb2NhdGlv
bkF0T2Zmc2V0KG1faml0LmRlYnVnT2Zmc2V0KCkpOwogI2VuZGlmCisgICAgICAgIGlmIChzcGVj
aWZpYyA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWUgPSBtX2dwcnMuYWxsb2NhdGVTcGVjaWZp
YyhzcGVjaWZpYyk7CiAgICAgICAgIGlmIChzcGlsbE1lLmlzVmFsaWQoKSkgewogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCkBAIC0zMTUsNiArMzE4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjaGVj
a0FyZ3VtZW50VHlwZXMoKTsKIAorICAgIHZvaWQgc2V0dXBBcmd1bWVudFJlZ2lzdGVyc0ZvckVu
dHJ5KCk7CisKICAgICB2b2lkIGNsZWFyR2VuZXJhdGlvbkluZm8oKTsKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nICd1bmV4cGVjdGVkJwpAQCAtNDg1LDYg
KzQ5MCw5IEBAIHB1YmxpYzoKICAgICAvLyBTcGlsbCBhIFZpcnR1YWxSZWdpc3RlciB0byB0aGUg
SlNTdGFjay4KICAgICB2b2lkIHNwaWxsKFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lKQogICAgIHsK
KyAgICAgICAgaWYgKHNwaWxsTWUuaXNBcmd1bWVudCgpICYmIG1fYmxvY2stPmluZGV4ID4gMCkK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdl
bmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3RlcihzcGlsbE1lKTsKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCkBAIC0yODczLDcgKzI4ODEsMTAgQEAgcHVibGljOgogCiAgICAgR2VuZXJhdGlv
bkluZm8mIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9b
dmlydHVhbFJlZ2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIu
aXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJl
Z2lzdGVyLnRvTG9jYWwoKV07CisgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNBcmd1
bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRHZW5lcmF0aW9uSW5mb1t2aXJ0dWFs
UmVnaXN0ZXIub2Zmc2V0KCldOwogICAgIH0KICAgICAKICAgICBHZW5lcmF0aW9uSW5mbyYgZ2Vu
ZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKQEAgLTI4OTYsNiArMjkwNyw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICAvLyBWaXJ0dWFsIGFuZCBwaHlzaWNhbCBy
ZWdpc3RlciBtYXBzLgogICAgIFZlY3RvcjxHZW5lcmF0aW9uSW5mbywgMzI+IG1fZ2VuZXJhdGlv
bkluZm87CisgICAgVmVjdG9yPEdlbmVyYXRpb25JbmZvLCA4PiBtX2FyZ3VtZW50R2VuZXJhdGlv
bkluZm87CiAgICAgUmVnaXN0ZXJCYW5rPEdQUkluZm8+IG1fZ3ByczsKICAgICBSZWdpc3RlckJh
bms8RlBSSW5mbz4gbV9mcHJzOwogCkBAIC0yOTk0LDYgKzMwMDYsMjAgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNpdCBKU1ZhbHVlT3Bl
cmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIEdQUlJlZyByZWdUb1VzZSkKKyAg
ICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9n
cHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7
CisgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGpp
dC0+aXNGaWxsZWQobm9kZSgpKSB8fCByZWdUb1VzZSAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAg
ICAgICAgZ3ByVXNlU3BlY2lmaWMocmVnVG9Vc2UpOworICAgIH0KKyNlbmRpZgorICAgIAogICAg
IH5KU1ZhbHVlT3BlcmFuZCgpCiAgICAgewogICAgICAgICBpZiAoIW1fZWRnZSkKQEAgLTMwMzAs
NiArMzA1NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0
LT5maWxsSlNWYWx1ZShtX2VkZ2UpOwogICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CiAg
ICAgfQorICAgIEdQUlJlZyBncHJVc2VTcGVjaWZpYyhHUFJSZWcgcmVnVG9Vc2UpCisgICAgewor
ICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxKU1ZhbHVlKG1fZWRnZSwgcmVnVG9Vc2UpOwor
ICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQogICAgIEpTVmFsdWVSZWdzIGpz
VmFsdWVSZWdzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3Niw2ICsyNzYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBu
dWxscHRyOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gbV9ub2RlLT5sb2Nh
bCgpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobG9jYWwuaXNBcmd1bWVudCgpICYm
IG1fZ3JhcGgubV9zdHJlbmd0aFJlZHVjZUFyZ3VtZW50cyAhPSBPcHRpbWl6ZUFyZ3VtZW50Rmx1
c2hlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9ub2RlSW5kZXg7IGktLTspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
bV9ibG9jay0+YXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9j
YWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2NhbCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTUgKzEzMCwz
MCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyCiAgICAgaml0LnN0
b3JlMzIoR1BSSW5mbzo6cmVnVDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19j
YXN0PGludHB0cl90PihzaXplb2YoaW50MzJfdCkpKSk7CiAgICAgaml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkpLmxpbmtUbyhsb29wLCAmaml0KTsKICAg
ICAKLSAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZv
OjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkpKSk7CisgICAgaml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9mZnNldE9mVGFyZ2V0UEMpLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBHUFJJbmZvOjpub25BcmdHUFIwLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGlu
dHB0cl90PigxMDAwKSkpKTsKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJs
ZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyNpZiBO
VU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgLy8gTG9hZCBhcmd1
bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKyAgICBqaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSk7CisgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKTsKKyAgICBqaXQubG9hZDMyKEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgYXJnQ291bnRS
ZWcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lTG9hZGluZ0FyZ3M7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ0luZGV4KSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudChhcmdJbmRleCkpOworICAgIAorICAgIGRvbmVMb2FkaW5nQXJncy5saW5rKCZqaXQp
OworI2VuZGlmCisgICAgCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcigpOwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOwogCi0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5qdW1w
KEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
KnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsICgiREZHIE9TUiBlbnRyeSB0aHVuayIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkocmV2aXNp
b24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMywxMyBAQCB2b2lkIFZhcmlh
YmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIGlmICghaW5kZXgpIHsKICAgICAgICAg
dmFsdWVSZWNvdmVyaWVzID0gT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4oY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2YWx1ZVJlY292
ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCi0gICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVyYW5kRm9ySW5kZXgoaSkp
LCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJ
T05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAgICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVz
W2ldID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJl
Y292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3Rlcih2YWx1ZVJlY292ZXJpZXMub3BlcmFuZEZvckluZGV4KGkpKSwgRGF0YUZvcm1hdEpT
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTYxLDYgKzE2NiwxMiBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAog
ICAgICAgICAgICAgTWluaWZpZWRHZW5lcmF0aW9uSW5mbyBpbmZvOwogICAgICAgICAgICAgaW5m
by51cGRhdGUoZXZlbnQpOwogICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9zLmFkZChldmVudC5p
ZCgpLCBpbmZvKTsKKyAgICAgICAgICAgIE1pbmlmaWVkTm9kZSogbm9kZSA9IGdyYXBoLmF0KGV2
ZW50LmlkKCkpOworICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzQXJndW1lbnRJbmRl
eCgpKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnQgPSBub2RlLT5hcmd1bWVu
dEluZGV4KCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50UmVnID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgIG9w
ZXJhbmRTb3VyY2VzLnNldE9wZXJhbmQoYXJndW1lbnRSZWcsIFZhbHVlU291cmNlKGV2ZW50Lmlk
KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRmlsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lz
dGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMzMgQEAg
cHVibGljOgogICAgICAgICA6IFBoYXNlKGdyYXBoLCAidmlydHVhbCByZWdpc3RlciBhbGxvY2F0
aW9uIikKICAgICB7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBhbGxvY2F0ZVJlZ2lzdGVyKFNj
b3JlQm9hcmQmIHNjb3JlQm9hcmQsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBGaXJz
dCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJlbiwgdGhlbgor
ICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBk
byBzbyBpbiB0aGlzCisgICAgICAgIC8vIG9yZGVyIHNvIHRoYXQgaWYgYSBjaGlsZCBpcyBvbiBp
dHMgbGFzdCB1c2UsIGFuZCBhCisgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwg
dGhlbiBpdCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgorICAgICAgICBpZiAobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5v
ZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2VJZkhhc1Jlc3VsdChtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5vZGUt
PmNoaWxkMygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IHNjb3JlQm9hcmQuYWxsb2NhdGUoKTsKKyAgICAgICAgbm9kZS0+c2V0VmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIC8vICdtdXN0R2VuZXJhdGUnIG5v
ZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5IGVsZXZhdGVkLAorICAgICAgICAv
LyBjYWxsIHVzZSBub3cgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAgICAgICAgaWYgKG5vZGUtPm11
c3RHZW5lcmF0ZSgpKQorICAgICAgICAgICAgc2NvcmVCb2FyZC51c2Uobm9kZSk7CisgICAgfQor
CiAgICAgYm9vbCBydW4oKQogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxs
cHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CkBAIC01OSw2ICs4NSwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXNhZ2Ugb2YgaGlnaGVzdC1udW1iZXJl
ZCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnNvcnRGcmVl
KCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBHZXRBcmd1bWVudFJl
Z2lzdGVyIE5vZGVzIGZpcnN0IGFzIHRoZSByZWdpc3RlciBpcyBhbGl2ZSBvbiBlbnRyeQorICAg
ICAgICAgICAgLy8gdG8gdGhlIGZ1bmN0aW9uIGFuZCBtYXkgbmVlZCB0byBiZSBzcGlsbGVkIGJl
Zm9yZSBhbnkgdXNlLgorICAgICAgICAgICAgaWYgKCFibG9ja0luZGV4KSB7CisgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2st
PnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBHZXRBcmd1bWVudFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAg
YWxsb2NhdGVSZWdpc3RlcihzY29yZUJvYXJkLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9IDA7
IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAK
QEAgLTczLDMyICsxMTAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9j
YWw6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+Y2hpbGQxKCktPmhhc1Jlc3Vs
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRBcmd1bWVudFJlZ2lzdGVyOgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRmlyc3QsIGNhbGwgdXNlIG9uIGFsbCBv
ZiB0aGUgY3VycmVudCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KLSAgICAgICAgICAgICAgICAvLyBh
bGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBzbyBpbiB0aGlz
Ci0gICAgICAgICAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9uIGl0cyBs
YXN0IHVzZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAvLyBWaXJ0dWFsUmVnaXN0ZXIgaXMgZnJl
ZWQsIHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4KLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2NvcmVCb2FyZC51c2VJZkhhc1Jlc3VsdChub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlSWZIYXNSZXN1bHQobm9kZS0+Y2hp
bGQyKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZUlmSGFzUmVzdWx0KG5v
ZGUtPmNoaWxkMygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IW5vZGUtPmhhc1Jlc3VsdCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJk
LmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0VmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMg
aGF2ZSB0aGVpciB1c2VDb3VudCBhcnRpZmljaWFsbHkgZWxldmF0ZWQsCi0gICAgICAgICAgICAg
ICAgLy8gY2FsbCB1c2Ugbm93IHRvIGFjY291bnQgZm9yIHRoaXMuCi0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPm11c3RHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJk
LnVzZShub2RlKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0ZVJlZ2lzdGVyKHNjb3JlQm9hcmQs
IG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2NvcmVCb2FyZC5hc3NlcnRDbGVh
cigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIs
NyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBHZXRDYWxsZWU6Cisg
ICAgY2FzZSBHZXRBcmd1bWVudFJlZ2lzdGVyOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAyMDk2
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw4IEBAIEpJVENvZGU6On5KSVRDb2RlKCkKICAgICAgICAgZGF0
YUxvZygiRGVzdHJveWluZyBGVEwgSklUIGNvZGUgYXQgIik7CiAgICAgICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKICAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9iM0NvZGUpOwotICAgICAgICBkYXRh
TG9nKGNvbW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgZGF0YUxvZyhjb21t
YSwgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJnc0VudHJ5UG9pbnQpOworICAgICAgICBk
YXRhTG9nKGNvbW1hLCBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeVBvaW50KTsKICAgICAg
ICAgZGF0YUxvZygiXG4iKTsKICAgICB9CiB9CkBAIC02MCwzMSArNjEsMzAgQEAgdm9pZCBKSVRD
b2RlOjppbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZAogICAgIG1fYjNCeXByb2R1Y3RzID0gV1RG
TW92ZShieXByb2R1Y3RzKTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0Zv
ckNhbGwoQ29kZVB0ciBhZGRyZXNzKQordm9pZCBKSVRDb2RlOjppbml0aWFsaXplRW50cnlwb2lu
dFRodW5rKENvZGVSZWYgZW50cnlwb2ludFRodW5rKQogewotICAgIG1fYWRkcmVzc0ZvckNhbGwg
PSBhZGRyZXNzOworICAgIG1fZW50cnlwb2ludFRodW5rID0gZW50cnlwb2ludFRodW5rOwogfQog
Ci12b2lkIEpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludChDb2RlUmVmIGVu
dHJ5cG9pbnQpCit2b2lkIEpJVENvZGU6OnNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUs
IENvZGVQdHIgZW50cnkpCiB7Ci0gICAgbV9hcml0eUNoZWNrRW50cnlwb2ludCA9IGVudHJ5cG9p
bnQ7CisgICAgbV9lbnRyeXBvaW50cy5zZXRFbnRyeUZvcih0eXBlLCBlbnRyeSk7CiB9Ci0KLUpJ
VENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJp
dHlDaGVjaykKKyAgICAKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwo
RW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogewotICAgIHN3aXRjaCAoYXJpdHlDaGVjaykgewot
ICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgotICAgICAgICByZXR1cm4gbV9hZGRyZXNz
Rm9yQ2FsbDsKLSAgICBjYXNlIE11c3RDaGVja0FyaXR5OgotICAgICAgICByZXR1cm4gbV9hcml0
eUNoZWNrRW50cnlwb2ludC5jb2RlKCk7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIENvZGVQdHIoKTsKKyAgICBDb2RlUHRyIGVudHJ5ID0gbV9l
bnRyeXBvaW50cy5lbnRyeUZvcihlbnRyeVR5cGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5
KTsKKyAgICByZXR1cm4gZW50cnk7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5
Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisjZWxzZQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzRm9yQ2FsbChTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0Owor
I2VuZGlmCiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHJldmlzaW9uIDIwOTY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CiAgICAgfkpJVENv
ZGUoKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJy
aWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50cnlQb2ludFR5cGUpIG92ZXJyaWRl
OwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVy
cmlkZTsKICAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJy
aWRlOwpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVCM0Nv
ZGUoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0ZDo6dW5pcXVl
X3B0cjxCMzo6T3BhcXVlQnlwcm9kdWN0cz4pOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFkZHJlc3NG
b3JDYWxsKENvZGVQdHIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50
KENvZGVSZWYpOwotICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5cG9pbnRUaHVuayhDb2Rl
UmVmKTsKKyAgICB2b2lkIHNldEVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlLCBDb2RlUHRyKTsKKwog
ICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgb3Zl
cnJpZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0
aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsK
QEAgLTc3LDcgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxs
OwogICAgIENvZGVSZWYgbV9iM0NvZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEIzOjpPcGFxdWVC
eXByb2R1Y3RzPiBtX2IzQnlwcm9kdWN0czsKLSAgICBDb2RlUmVmIG1fYXJpdHlDaGVja0VudHJ5
cG9pbnQ7CisgICAgQ29kZVJlZiBtX2VudHJ5cG9pbnRUaHVuazsKKyAgICBKSVRFbnRyeVBvaW50
cyBtX2VudHJ5cG9pbnRzOworICAgIENvZGVQdHIgbV9yZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJh
QXJnc0VudHJ5UG9pbnQ7CisgICAgQ29kZVB0ciBtX3JlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRy
eVBvaW50OworICAgIENvZGVQdHIgbV9zdGFja0FyZ3NBcml0eU9LRW50cnlQb2ludDsKKyAgICBD
b2RlUHRyIG1fc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5cG9pbnQ7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZp
bmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgZHVt
cERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIEIzIGNv
ZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxv
Y2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsKIAotICAgIGppdENvZGUtPmluaXRpYWxp
emVBcml0eUNoZWNrRW50cnlwb2ludCgKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplRW50cnlwb2lu
dFRodW5rKAogICAgICAgICBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICAgICAgZHVtcERpc2Fz
c2VtYmx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBv
aW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkp
LmRhdGEoKSwgZnVuY3Rpb24pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDExMCBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgIAogICAgIHN3aXRjaCAoZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAg
ICBjYXNlIEZUTE1vZGU6IHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0
aEp1bXBzOwotICAgIAotICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgZnJhbWUud2l0
aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCks
Ci0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1haW5QYXRoSnVtcHMuYXBw
ZW5kKGppdC5icmFuY2gzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFs
LCBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoOworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHRvTWFpblBhdGg7CisKKyAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
CisgICAgICAgIHVuc2lnbmVkIG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKG51
bVBhcmFtZXRlcnMsIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOwor
CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVu
dENvdW50KCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCByZWdpc3RlckFyZ3VtZW50
c0VudHJ5cG9pbnRzW05VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgKyAx
XTsKKworICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpIHsKKyAgICAgICAgICAgIC8vIFNwaWxsIGFueSBleHRyYSByZWdp
c3RlciBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uIG9udG8gdGhlIHN0YWNrLgorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMgLSAxOyBhcmdJbmRleCA+PSBudW1QYXJhbWV0ZXJzOyBhcmdJbmRleC0t
KSB7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNFbnRyeXBvaW50c1thcmdJbmRl
eCArIDFdID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVu
dFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
bmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpSZWdBcmdzRXh0cmEpOworICAgICAgICAgICAgdG9N
YWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGNvbnRpbnVlVG9Bcml0eUZpeHVwOworCisgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5ID0gaml0LmxhYmVsKCk7CisgICAg
ICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlN0YWNrQXJnc0FyaXR5KTsKKyAgICAgICAg
aml0LmxvYWQzMihmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBjb250aW51ZVRv
QXJpdHlGaXh1cC5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpCZWxvdywgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihudW1QYXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWVUb1N0YWNrQXJpdHlPayA9IGppdC5qdW1w
KCk7CisjZW5kaWYKKworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YWNrQXJnc0FyaXR5
T0tFbnRyeSA9IGppdC5sYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwg
Vk06OlN0YWNrQXJnc0FyaXR5KTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICAgICAg
Y29udGludWVUb1N0YWNrQXJpdHlPay5saW5rKCZqaXQpOworI2VuZGlmCisKKyAgICAgICAgLy8g
TG9hZCBhcmd1bWVudCB2YWx1ZXMgaW50byBhcmd1bWVudCByZWdpc3RlcnMKKworICAgICAgICAv
LyBGSVhNRTogV291bGQgbGlrZSB0byBlbGltaW5hdGUgdGhlc2UgdG8gbG9hZCwgYnV0IHdlIGN1
cnJlbnRseSBjYW4ndCBqdW1wIGludG8KKyAgICAgICAgLy8gdGhlIEIzIGNvbXBpbGVkIGNvZGUg
YXQgYW4gYXJiaXRyYXJ5IHBvaW50IGZyb20gdGhlIHNsb3cgZW50cnkgd2hlcmUgdGhlCisgICAg
ICAgIC8vIHJlZ2lzdGVycyBhcmUgc3RvcmVkIHRvIHRoZSBzdGFjay4KKyAgICAgICAgaml0LmVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgICAgICBqaXQuZW1pdEdldFBh
eWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCwgYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSk7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgbWF4UmVnaXN0ZXJBcmd1
bWVudENvdW50OyBhcmdJbmRleCsrKQorICAgICAgICAgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1ZShhcmdJbmRleCwgYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpKTsKKworICAgICAgICB0b01haW5QYXRoLmFwcGVuZChq
aXQuanVtcCgpKTsKKworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyQXJnc0No
ZWNrQXJpdHlFbnRyeSA9IGppdC5sYWJlbCgpOworICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZq
aXQsIFZNOjpSZWdBcmdzQXJpdHkpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
Y29udGludWVUb1JlZ2lzdGVyQXJpdHlGaXh1cDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBjaGVja0ZvckV4dHJhUmVnaXN0ZXJBcmd1bWVudHM7CisKKyAgICAgICAgaWYgKG51bVBhcmFt
ZXRlcnMgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKSB7CisgICAg
ICAgICAgICB0b01haW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpFcXVhbCwgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG51bVBhcmFtZXRlcnMpKSk7CisgICAgICAgICAgICBjb250aW51ZVRvUmVnaXN0ZXJBcml0
eUZpeHVwLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpCZWxvdywgYXJnQ291bnRSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG51bVBhcmFt
ZXRlcnMpKSk7CisgICAgICAgICAgICAvLyAgRmFsbCB0aHJvdWdoIHRvIHRoZSAiZXh0cmEgcmVn
aXN0ZXIgYXJpdHkiIGNhc2UuCisKKyAgICAgICAgICAgIGNoZWNrRm9yRXh0cmFSZWdpc3RlckFy
Z3VtZW50cyA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgLy8gU3BpbGwgYW55IGV4dHJhIHJl
Z2lzdGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnVuY3Rpb24gb250byB0aGUgc3RhY2suCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gbnVtUGFyYW1ldGVyczsgYXJnSW5kZXgg
PCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRleCsrKSB7
CisgICAgICAgICAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QmVsb3dPckVxdWFsLCBhcmdDb3VudFJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoYXJnSW5kZXgpKSk7CisgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2Fs
bEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
YXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluY3Jl
bWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NFeHRyYSk7CisgICAgICAgICAgICB0b01haW5Q
YXRoLmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0b01h
aW5QYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBYm92ZU9yRXF1YWwsIGFyZ0NvdW50UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
dW1QYXJhbWV0ZXJzKSkpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBjb250
aW51ZVRvUmVnaXN0ZXJBcml0eUZpeHVwLmFwcGVuZChqaXQuanVtcCgpKTsKKyNlbmRpZgorCisg
ICAgICAgIGlmIChudW1QYXJhbWV0ZXJzID4gMCkgeworICAgICAgICAgICAgLy8gIFRoZXJlIHNo
b3VsZCBhbHdheXMgYmUgYSAidGhpcyIgcGFyYW1ldGVyLgorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCByZWdpc3RlckFyZ3VtZW50c05lZWRBcml0eUZpeHVwID0gaml0LmxhYmVsKCk7
CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAxOyBhcmdJbmRleCA8IG51
bVBhcmFtZXRlcnMgJiYgYXJnSW5kZXggPD0gbWF4UmVnaXN0ZXJBcmd1bWVudENvdW50OyBhcmdJ
bmRleCsrKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzRW50cnlwb2ludHNbYXJn
SW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNOZWVkQXJpdHlGaXh1cDsKKyAgICAgICAgfQorCisj
aWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZN
OjpSZWdBcmdzQXJpdHkpOworI2VuZGlmCisKKyAgICAgICAgY29udGludWVUb1JlZ2lzdGVyQXJp
dHlGaXh1cC5saW5rKCZqaXQpOworCisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJz
VG9GcmFtZUJlZm9yZVByb2xvZ3VlKG1heFJlZ2lzdGVyQXJndW1lbnRDb3VudCk7CisKKyAgICAg
ICAgY29udGludWVUb0FyaXR5Rml4dXAubGluaygmaml0KTsKKworICAgICAgICBpbmNyZW1lbnRD
b3VudGVyKCZqaXQsIFZNOjpBcml0eUZpeHVwUmVxdWlyZWQpOworCiAgICAgICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKQEAgLTE1NSwxMSAr
MjUxLDIwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChq
aXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmFwcGVuZChqaXQu
YnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAo
KSk7CisKKyAgICAgICAgZmlsbFJlZ2lzdGVyc0FuZENvbnRpbnVlTWFpblBhdGguYXBwZW5kKGpp
dC5qdW1wKCkpOworCisgICAgICAgIGZpbGxSZWdpc3RlcnNBbmRDb250aW51ZU1haW5QYXRoLmxp
bmtUbyhzdGFja0FyZ3NBcml0eU9LRW50cnksICZqaXQpOworCisjaWYgRU5BQkxFKFZNX0NPVU5U
RVJTKQorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHJlZ2lzdGVyRW50cnlOb0FyaXR5ID0g
aml0LmxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OlJlZ0FyZ3NO
b0FyaXR5KTsKKyAgICAgICAgdG9NYWluUGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CisjZW5kaWYK
IAogICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwg
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlmIChsaW5r
QnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CkBAIC0xNjksOSArMjc0LDM1IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hl
Y2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGlu
ayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0
aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2Fs
bEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0
b3IpKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICBsaW5rQnVmZmVyLT5s
aW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsodG9N
YWluUGF0aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5l
cmF0ZWRGdW5jdGlvbikpKTsKKworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihT
dGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFja0FyZ3ND
aGVja0FyaXR5RW50cnkpKTsKKyAgICAgICAgc3RhdGUuaml0Q29kZS0+c2V0RW50cnlGb3IoU3Rh
Y2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkLCBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YWNr
QXJnc0FyaXR5T0tFbnRyeSkpOwogCi0gICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVB
ZGRyZXNzRm9yQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRW50cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlv
bk9mKHJlZ2lzdGVyRW50cnlOb0FyaXR5KTsKKyNlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBtYWluRW50cnkgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpOworI2VuZGlmCisgICAgICAgIHN0YXRlLmpp
dENvZGUtPnNldEVudHJ5Rm9yKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwgbWFp
bkVudHJ5KTsKKworICAgICAgICBpZiAoY2hlY2tGb3JFeHRyYVJlZ2lzdGVyQXJndW1lbnRzLmlz
U2V0KCkpCisgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihSZWdpc3RlckFy
Z3NQb3NzaWJsZUV4dHJhQXJncywgbGlua0J1ZmZlci0+bG9jYXRpb25PZihjaGVja0ZvckV4dHJh
UmVnaXN0ZXJBcmd1bWVudHMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUuaml0
Q29kZS0+c2V0RW50cnlGb3IoUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3MsIG1haW5FbnRy
eSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRy
eUZvcihSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eSwgbGlua0J1ZmZlci0+bG9jYXRpb25PZihy
ZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnkpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFy
Z0NvdW50ID0gMTsgYXJnQ291bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgYXJnQ291bnQrKykgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGVudHJ5OworICAgICAgICAgICAgaWYgKGFyZ0NvdW50ID09IG51bVBhcmFtZXRlcnMpCisgICAg
ICAgICAgICAgICAgZW50cnkgPSBtYWluRW50cnk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdp
c3RlckFyZ3VtZW50c0VudHJ5cG9pbnRzW2FyZ0NvdW50XS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIGVudHJ5ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihyZWdpc3RlckFyZ3VtZW50c0VudHJ5
cG9pbnRzW2FyZ0NvdW50XSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50
cnkgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRyeSk7
CisgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zZXRFbnRyeUZvcihKSVRFbnRyeVBvaW50czo6
cmVnaXN0ZXJFbnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGFyZ0NvdW50KSwgZW50cnkpOworICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xODEsNyArMzEyLDIw
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIHBvaW50IHdlJ3ZlIGV2ZW4g
ZG9uZSB0aGUgc3RhY2sgY2hlY2suIEJhc2ljYWxseSB3ZSBqdXN0IGhhdmUgdG8gbWFrZSB0aGUK
ICAgICAgICAgLy8gY2FsbCB0byB0aGUgQjMtZ2VuZXJhdGVkIGNvZGUuCiAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgc3RhcnQgPSBqaXQubGFiZWwoKTsKKwogICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKKworICAgICAgICAvLyBMb2FkIGFyZ3VtZW50IHZhbHVlcyBpbnRv
IGFyZ3VtZW50IHJlZ2lzdGVycworCisgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRvIGVs
aW1pbmF0ZSB0aGVzZSB0byBsb2FkLCBidXQgd2UgY3VycmVudGx5IGNhbid0IGp1bXAgaW50bwor
ICAgICAgICAvLyB0aGUgQjMgY29tcGlsZWQgY29kZSBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgZnJv
bSB0aGUgc2xvdyBlbnRyeSB3aGVyZSB0aGUKKyAgICAgICAgLy8gcmVnaXN0ZXJzIGFyZSBzdG9y
ZWQgdG8gdGhlIHN0YWNrLgorICAgICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50UmVnaXN0ZXJGb3JD
YWxsZWUoKSk7CisgICAgICAgIGppdC5lbWl0R2V0UGF5bG9hZEZyb21DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZShDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBhcmd1bWVudFJlZ2lz
dGVyRm9yQXJndW1lbnRDb3VudCgpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4
ID0gMDsgYXJnSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JF
R0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFt
ZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1h
aW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgaml0LCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CkBAIC0xOTEsNyArMzM1LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgfQogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
bikpKTsKIAotICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0ZvckNhbGwo
bGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5z
ZXRFbnRyeUZvcihSZWdpc3RlckFyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsIGxpbmtCdWZmZXIt
PmxvY2F0aW9uT2Yoc3RhcnQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJl
dmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAg
ICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAor
ICAgICAgICAvLyBTdG9yZSBvdXQgY2FsbGVlIGFuZCBhcmd1bWVudCBjb3VudCBmb3IgcG9zc2li
bGUgT1NSIGV4aXQuCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmFyZ3VtZW50UmVnaXN0ZXJJ
bnQzMihhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpKSwgcGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jaykpOwogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgpAQCAtMjQ3LDIw
ICsyNTEsMzQgQEAgcHVibGljOgogICAgICAgICAvLyBDaGVjayBBcmd1bWVudHMuCiAgICAgICAg
IGF2YWlsYWJpbGl0eU1hcCgpLmNsZWFyKCk7CiAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1f
bG9jYWxzID0gT3BlcmFuZHM8QXZhaWxhYmlsaXR5Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpLCAwKTsKKworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50Tm9kZXM7CisgICAg
ICAgIFZlY3RvcjxMVmFsdWUsIDg+IGFyZ3VtZW50VmFsdWVzOworCisgICAgICAgIGFyZ3VtZW50
Tm9kZXMucmVzaXplKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOworICAgICAgICBhcmd1
bWVudFZhbHVlcy5yZXNpemUoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAg
ICAgbV9oaWdoQmxvY2sgPSBtX2dyYXBoLmJsb2NrKDApOworCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAg
IGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0KLSAgICAgICAgICAgICAg
ICBBdmFpbGFiaWxpdHkoRmx1c2hlZEF0KEZsdXNoZWRKU1ZhbHVlLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSkpOwotICAgICAgICB9Ci0gICAgICAgIG1fbm9kZSA9IG51bGxwdHI7Ci0g
ICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDAp
LCB0cnVlKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFt
ZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1
bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c0Zv
ckNoZWNraW5nW2ldOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZh
bHVlIGpzVmFsdWUgPSBtX291dC5sb2FkNjQoYWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAg
ICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBqc1ZhbHVlID0gbnVsbHB0cjsKKwogICAgICAgICAg
ICAgaWYgKG5vZGUpIHsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUs
IG9wZXJhbmQgPT0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCk7CisgICAg
ICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTKSB7CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFy
Z3VtZW50KGkpID0gQXZhaWxhYmlsaXR5KG5vZGUpOworICAgICAgICAgICAgICAgICAgICBqc1Zh
bHVlID0gbV9vdXQuYXJndW1lbnRSZWdpc3RlcihHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
bm9kZS0+YXJndW1lbnRSZWdpc3RlckluZGV4KCkpKTsKKworICAgICAgICAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKG5vZGUsIGpzVmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLmFyZ3VtZW50KGkpID0K
KyAgICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eShGbHVzaGVkQXQoRmx1c2hlZEpT
VmFsdWUsIG9wZXJhbmQpKTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZSA9IG1fb3V0Lmxv
YWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBub2RlLCBub2RlLT5oYXNBcmd1bWVudFJlZ2lzdGVySW5kZXgoKSB8fCBvcGVyYW5kID09
IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5tYWNoaW5lTG9jYWwpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLCBidXQgaXQncyBhbiBlZmZlY3Rp
dmUgb25lLiBJdCBhbGxvd3MgdXMgdG8gZG8gQ1NFIG9uIHRoZQogICAgICAgICAgICAgICAgIC8v
IHByaW1vcmRpYWwgbG9hZCBvZiBhcmd1bWVudHMuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBHZXRM
b2NhbCB0aGF0IGdvdCBwdXQgaW4KQEAgLTI2OCw3ICsyODYsMjEgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIC8vIHNob3VsZCBob2xkIHRydWUuCiAgICAgICAgICAgICAgICAgbV9sb2FkZWRB
cmd1bWVudFZhbHVlcy5hZGQobm9kZSwganNWYWx1ZSk7CiAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGFyZ3VtZW50Tm9kZXNbaV0gPSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRWYWx1
ZXNbaV0gPSBqc1ZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsK
KyAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4o
MCksIHRydWUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnROb2Rl
c1tpXTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IGFyZ3VtZW50VmFs
dWVzW2ldOworCiAgICAgICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV0pIHsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoanNWYWx1ZSksIG5vZGUsIGlzTm90SW50MzIo
anNWYWx1ZSkpOwpAQCAtODEzLDYgKzg0NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdldEFyZ3VtZW50UmVnaXN0ZXI6CisgICAgICAgICAgICBjb21waWxlR2V0QXJndW1lbnRSZWdp
c3RlcigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAg
ICAgICAgICBjb21waWxlR2V0U2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTQwMiw2
ICs1NDM3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXls
b2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgfQogICAgIAorICAg
IHZvaWQgY29tcGlsZUdldEFyZ3VtZW50UmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
bWlnaHQgaGF2ZSBhbHJlYWR5IGhhdmUgYSB2YWx1ZSBmb3IgdGhpcyBub2RlLgorICAgICAgICBp
ZiAoTFZhbHVlIHZhbHVlID0gbV9sb2FkZWRBcmd1bWVudFZhbHVlcy5nZXQobV9ub2RlKSkgewor
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5hcmd1bWVudFJlZ2lzdGVyKEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihtX25vZGUtPmFyZ3VtZW50UmVnaXN0ZXJJbmRleCgpKSkpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZSgpCiAgICAgewogICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFw
cy5KU0Z1bmN0aW9uX3Njb3BlKSk7CkBAIC01ODE0LDkgKzU4NTksMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gdGhlIGNhbGwuCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1
bWVudHM7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxlZSBnb2VzIGludG8g
R1BSMCBiZWNhdXNlIHRoYXQncyB3aGVyZSB0aGUgc2xvdyBwYXRoIHRodW5rcyBleHBlY3QgdGhl
Ci0gICAgICAgIC8vIGNhbGxlZSB0byBiZS4KLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOwor
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGVlIGdvZXMgaW50byBhcmd1bWVudFJl
Z2lzdGVyRm9yQ2FsbGVlKCkgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAgICAgLy8gdGhlIHNs
b3cgcGF0aCB0aHVua3MgZXhwZWN0IHRoZSBjYWxsZWUgdG8gYmUuCisgICAgICAgIEdQUlJlZyBj
YWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVS
ZWcpKSk7CiAKICAgICAgICAgYXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVnLCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICBpbnRwdHJfdCBv
ZmZzZXRGcm9tU1AgPQpAQCAtNTgyNCwxMCArNTg3MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6c3Rh
Y2tBcmd1bWVudChvZmZzZXRGcm9tU1ApKSk7CiAgICAgICAgIH07CiAKLSAgICAgICAgYWRkQXJn
dW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAw
KTsKLSAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKLSAgICAgICAg
ICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsg
aSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CisgICAgICAgIEFyZ3VtZW50
c0xvY2F0aW9uIGFyZ0xvY2F0aW9uID0gYXJndW1lbnRzTG9jYXRpb25Gb3IobnVtQXJncyk7Cisg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVS
ZXA6OnJlZyhjYWxsZWVSZWcpKSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50
UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUFyZ3M7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSArIGkpKSwgVmFsdWVSZXA6OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudChpKSkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRBcmd1
bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOworICAgICAgICB9CiAKICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihhcmd1bWVudHMpOwpAQCAtNTg1Niw5ICs1OTA4LDEx
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAKKyAgICAgICAgICAgICAg
ICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpGVExDYWxsZXIpOworCiAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpy
ZWdUMCwgdGFyZ2V0VG9DaGVjaywKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgY2FsbGVlUmVnLCB0YXJnZXRUb0NoZWNrLAogICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIGZhc3RDYWxsID0gaml0Lm5lYXJDYWxsKCk7CkBAIC01ODY2LDEzICs1OTIw
LDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwog
Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNh
bGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0
Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3QgOiBDYWxsTGlu
a0luZm86OkNhbGwsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBhcmdMb2NhdGlvbiwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOwogCiAgICAgICAg
ICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoLXBhcmFtcy5wcm9jKCkuZnJhbWVTaXplKCkpLApAQCAtNTg4MSw3ICs1OTM1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAg
ICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5l
bnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0aW9uKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2Fs
bC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTU5MjUsMjAgKzU5NzksMzggQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7
CiAgICAgICAgIAotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanND
YWxsZWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGNhbGxlZSBnb2VzIGludG8gYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpIGJlY2F1
c2UgdGhhdCdzIHdoZXJlCisgICAgICAgIC8vIHRoZSBzbG93IHBhdGggdGh1bmtzIGV4cGVjdCB0
aGUgY2FsbGVlIHRvIGJlLgorICAgICAgICBHUFJSZWcgY2FsbGVlUmVnID0gYXJndW1lbnRSZWdp
c3RlckZvckNhbGxlZSgpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkpOwogICAgICAgICBpZiAoIWlz
VGFpbCkgewogICAgICAgICAgICAgYXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgaW50
cHRyX3Qgb2Zmc2V0RnJvbVNQID0KICAgICAgICAgICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAt
IENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycykgKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0RnJvbVNQKSkpOwog
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoY2FsbGVlUmVnKSkp
OworI2lmIEVOQUJMRShDQUxMRVJfU1BJTExTX0NBTExFRSkKICAgICAgICAgICAgIGFkZEFyZ3Vt
ZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7
CisjZW5kaWYKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSht
X291dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWYWx1ZVJlcDo6cmVnKGFyZ3VtZW50UmVn
aXN0ZXJGb3JBcmd1bWVudENvdW50KCkpKSk7CisjaWYgRU5BQkxFKENBTExFUl9TUElMTFNfQVJH
Q09VTlQpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bVBhc3Nl
ZEFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBh
eWxvYWRPZmZzZXQpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBh
c3NlZEFyZ3M7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSksIDApOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsg
aSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRBcmd1bWVudCht
X291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKKyNlbmRpZgorICAgICAgICAgICAgCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGkgPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTKQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVw
OjpyZWcoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoaSkpKSk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSksIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFyZ3M7ICsraSkgeworICAgICAgICAg
ICAgICAgIGlmIChpIDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykK
KyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgVmFsdWVSZXA6
OnJlZyhhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChpKSkpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSksIDApOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkKICAgICAg
ICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIFZhbHVlUmVwOjpXYXJtQW55KSk7CkBA
IC01OTgwLDYgKzYwNTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzaHVmZmxl
RGF0YS5udW1Mb2NhbHMgPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3Vu
dDsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0
IHRvU2F2ZSA9IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpOworICAgICAgICAgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxl
ZUdQUiwgRGF0YUZvcm1hdENlbGwpOwogICAgICAgICAgICAgICAgICAgICB0b1NhdmUuc2V0KGNh
bGxlZUdQUik7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpIHsKQEAgLTU5OTgsNyArNjA3MSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRj
aGFibGVKdW1wIHBhdGNoYWJsZUp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIG1haW5QYXRoID0gaml0LmxhYmVsKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50
ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudENv
dW50ZXIoJmppdCwgVk06OlRhaWxDYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50
Q291bnRlcigmaml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgICAgICAgICAgICAgaml0
LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkpKTsKQEAgLTYwMTksNyArNjA5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAotICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENh
bGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51bVBhc3Nl
ZEFyZ3MpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihl
eGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPiBu
dW1QYXNzZWRBcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRN
YXhOdW1Bcmd1bWVudHMobnVtQWxsb2NhdGVkQXJncyk7CkBAIC02MDQyLDYgKzYxMTksOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbWFpblBhdGggPSBqaXQubGFiZWwoKTsKIAorICAgICAgICAgICAgICAgIGluY3JlbWVu
dENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50
Q291bnRlcigmaml0LCBWTTo6RGlyZWN0Q2FsbCk7CisKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2Fs
bFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKQEAg
LTYwNTMsNyArNjEzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAgIGlzQ29u
c3RydWN0ID8gQ2FsbExpbmtJbmZvOjpEaXJlY3RDb25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkRp
cmVjdENhbGwsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52
YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c0xvY2F0aW9uRm9yKG51
bVBhc3NlZEFyZ3MpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcpOwogICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9u
KGV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgIGlmIChudW1BbGxvY2F0ZWRBcmdzID4gbnVt
UGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRNYXhOdW1B
cmd1bWVudHMobnVtQWxsb2NhdGVkQXJncyk7CkBAIC02MDY0LDEzICs2MTQ0LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGggPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc1g4NigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5w
b3AoQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUikpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRHUFJSZWcsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihjYWxsTGlua0luZm8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxlZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5wb3AoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIG5vbkFyZ0dQUjAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGppdC5uZWFyQ2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy0+YXBwZW5kKGppdC5lbWl0RXhj
ZXB0aW9uQ2hlY2soQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRpb25DaGVjaywgQXNzZW1i
bHlIZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKG1haW5QYXRoLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKApAQCAtNjA3OSw2ICs2MTU3
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgc2xvd1BhdGhMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0
aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgc2xvd1BhdGhMb2NhdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5r
Q2FsbCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZt
KCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0b3Ip
LmVudHJ5Rm9yKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzTG9jYXRpb24oKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25Q
dHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRDYWxsTG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWwoKSwKQEAgLTYxMTAsNyArNjE5MSw4IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKIAotICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpyZWcoR1BS
SW5mbzo6cmVnVDApKSk7CisgICAgICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJlZ2lz
dGVyRm9yQ2FsbGVlKCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhjYWxsZWVSZWcpKSk7CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkgewogICAgICAgICAgICAgLy8gTm90ZTog
d2UgY291bGQgbGV0IHRoZSBzaHVmZmxlciBkbyBib3hpbmcgZm9yIHVzLCBidXQgaXQncyBub3Qg
c3VwZXIgY2xlYXIgdGhhdCB0aGlzCkBAIC02MTQ0LDkgKzYyMjYsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwog
CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6RlRMQ2FsbGVyKTsK
KyAgICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKCZqaXQsIFZNOjpUYWlsQ2FsbCk7CisK
ICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKKyAgICAg
ICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmd1bWVudHNJblJlZ2lzdGVycyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0gc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5mcmFtZVJlZ2lzdGVyQ291bnQ7Ci0gICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVl
ID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoR1BSSW5mbzo6cmVnVDAsIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIo
Y2FsbGVlUmVnLCBEYXRhRm9ybWF0SlMpOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURh
dGEuYXJncy5hcHBlbmQocGFyYW1zWzEgKyBpXS5yZWNvdmVyeUZvckpTVmFsdWUoKSk7CkBAIC02
MTU3LDcgKzYyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgdGFyZ2V0VG9D
aGVjaywKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVl
UmVnLCB0YXJnZXRUb0NoZWNrLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRGcmFt
ZVNodWZmbGVEYXRhKHNodWZmbGVEYXRhKTsKQEAgLTYxNzUsMjAgKzYyNjEsMTkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlciBzbG93UGF0aFNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpOwotICAg
ICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1
ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVy
LnByZXBhcmVGb3JTbG93UGF0aCgpOwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAKICAgICAgICAgICAgICAgICBq
aXQuYWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CiAKLSAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBj
b2RlT3JpZ2luLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgYXJndW1lbnRzTG9jYXRpb25Gb3Io
bnVtQXJncyksIGNvZGVPcmlnaW4sIGNhbGxlZVJlZyk7CiAKICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50c0xvY2F0
aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxs
LCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTYyNzgs
NiArNjM2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwog
CiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJs
b2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAgICAgICAgICAgICAgIEFyZ3VtZW50c0xvY2F0
aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tBcmdzOwogCiAgICAgICAgICAgICAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxl
UmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwpAQCAtNjQyNyw3ICs2NTEzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgaml0LmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXVzZWRSZWdp
c3RlcnMuZ2V0KEdQUkluZm86OnJlZ1QyKSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
KyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBAIC02NDM1LDcgKzY1MjEsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG9uZS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwg
YXJndW1lbnRzTG9jYXRpb24sIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDAp
OwogCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLApAQCAtNjQ0NCw3
ICs2NTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAg
ICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
a0J1ZmZlci52bSgpLmdldEpJVENhbGxUaHVua0VudHJ5U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5lbnRyeUZvcihTdGFja0FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVz
cygpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKQEAgLTY1NDUsMTEgKzY2MzEsMTUgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0
Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAg
ICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06OkZUTENhbGxlcik7CisgICAgICAgICAgICAg
ICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6Q2FsbFZhcmFyZ3MpOworICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAg
ICAgICAgICAgICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3RhY2tB
cmdzOwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxW
YXJhcmdzRGF0YSgpOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwpA
QCAtNjcxMCw3ICs2ODAwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChpc1Rh
aWxDYWxsKQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygp
OwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86Om5vbkFy
Z0dQUjApOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93Q2FsbCA9IGpp
dC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1Rh
aWxDYWxsKQpAQCAtNjcxOCw3ICs2ODA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgY2Fs
bExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGFyZ3VtZW50c0xvY2F0aW9uLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBqaXQuYWRkUHRyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdodCksCkBAIC02NzI3LDcgKzY4MTcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAg
ICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZt
KCkuZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5
Rm9yKFN0YWNrQXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
c2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRDYWxsTG9jYXRpb25zKApAQCAtNjc5NiwxMyArNjg4NiwxNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0g
ZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIGluY3JlbWVudENvdW50ZXIoJmppdCwgVk06
OkZUTENhbGxlcik7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50Q291bnRlcigmaml0LCBWTTo6
Q2FsbEV2YWwpOworCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBD
YWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJ
bmZvOjpDYWxsLCBTdGFja0FyZ3MsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVn
VDApOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgQ2FsbEZy
YW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDEx
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigp
KQogICAgICAgICBkYXRhTG9nKCIgICAgVmFsdWVzIGF0IGVudHJ5OiAiLCB2YWx1ZXMsICJcbiIp
OwogICAgIAotICAgIGZvciAoaW50IGFyZ3VtZW50ID0gdmFsdWVzLm51bWJlck9mQXJndW1lbnRz
KCk7IGFyZ3VtZW50LS07KSB7CisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IHZhbHVlcy5u
dW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgeworI2lmIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgaWYgKGFyZ3VtZW50IDwgTlVNQkVSX09G
X0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgICAgIGJyZWFrOworI2Vu
ZGlmCiAgICAgICAgIEpTVmFsdWUgdmFsdWVPblN0YWNrID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkpLmFzYW5VbnNhZmVKU1ZhbHVlKCk7CiAg
ICAgICAgIEpTVmFsdWUgcmVjb25zdHJ1Y3RlZFZhbHVlID0gdmFsdWVzLmFyZ3VtZW50KGFyZ3Vt
ZW50KTsKICAgICAgICAgaWYgKHZhbHVlT25TdGFjayA9PSByZWNvbnN0cnVjdGVkVmFsdWUgfHwg
IWFyZ3VtZW50KQpAQCAtOTksOCArMTAzLDEyIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAg
ICB9CiAgICAgCiAgICAgZXhlYy0+c2V0Q29kZUJsb2NrKGVudHJ5Q29kZUJsb2NrKTsKLSAgICAK
LSAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tO
b3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKworI2lmIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFk
ZHJlc3NGb3JDYWxsKFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyNlbHNlCisgICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNz
Rm9yQ2FsbChTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7CisjZW5kaWYKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICBkYXRh
TG9nKCIgICAgRW50cnkgd2lsbCBzdWNjZWVkLCBnb2luZyB0byBhZGRyZXNzIiwgUmF3UG9pbnRl
cihyZXN1bHQpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTYgQEAgdm9pZCBP
dXRwdXQ6OmFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrKQogICAgIG1fYmxvY2sgPSBibG9jazsK
IH0KIAorTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKQoreworICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgcmVnKTsKK30KKworTFZhbHVlIE91dHB1dDo6YXJndW1lbnRSZWdpc3RlckludDMyKFJlZyBy
ZWcpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPiht
X3Byb2MsIG9yaWdpbigpLCByZWcsIEludDMyKTsKK30KKwogTFZhbHVlIE91dHB1dDo6ZnJhbWVQ
b2ludGVyKCkKIHsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6RnJhbWVQb2ludGVyLCBvcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0T3JpZ2luKERGRzo6Tm9kZSogbm9kZSkgeyBtX29yaWdpbiA9IG5v
ZGU7IH0KICAgICBCMzo6T3JpZ2luIG9yaWdpbigpIHsgcmV0dXJuIEIzOjpPcmlnaW4obV9vcmln
aW4pOyB9CiAKKyAgICBMVmFsdWUgYXJndW1lbnRSZWdpc3RlcihSZWcgcmVnKTsKKyAgICBMVmFs
dWUgYXJndW1lbnRSZWdpc3RlckludDMyKFJlZyByZWcpOwogICAgIExWYWx1ZSBmcmFtZVBvaW50
ZXIoKTsKIAogICAgIEIzOjpTbG90QmFzZVZhbHVlKiBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5
dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlj
a2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U2hhZG93Q2hpY2tlbi5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0
LDE2ICsyODQsMjQgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mLCBFeGVjU3RhdAog
ICAgICAgICAgICAgYm9vbCBmb3VuZEZyYW1lID0gYWR2YW5jZUluZGV4SW5Mb2dUbyhjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKTsKICAg
ICAgICAgICAgIGJvb2wgaXNUYWlsRGVsZXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgSlNTY29w
ZSogc2NvcGUgPSBudWxscHRyOworICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwotICAgICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPndh
c0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBzY29wZSA9IGNhbGxGcmFtZS0+c2Nv
cGUoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgewotICAgICAgICAgICAgICAgIHNjb3BlID0g
bV9sb2dbaW5kZXhJbkxvZ10uc2NvcGU7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3BlKQorICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVn
Z2luZ09wY29kZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSBjYWxsRnJh
bWUtPnNjb3BlKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUtPmluaGVyaXRzKEpTU2NvcGU6OmluZm8o
KSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZyYW1lKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFzY29wZSkgeworICAgICAgICAgICAgICAgICAgICBzY29w
ZSA9IG1fbG9nW2luZGV4SW5Mb2ddLnNjb3BlOworICAgICAgICAgICAgICAgICAgICBpZiAoc2Nv
cGUpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJp
dHMoSlNTY29wZTo6aW5mbygpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhpc1Zh
bHVlID0gbV9sb2dbaW5kZXhJbkxvZ10udGhpc1ZhbHVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdG9QdXNoLmFwcGVuZChGcmFtZSh2aXNpdG9yLT5jYWxsZWUoKSwgY2FsbEZyYW1lLCBp
c1RhaWxEZWxldGVkLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBzY29wZSwgY29kZUJsb2NrLCBj
YWxsRnJhbWUtPmNhbGxTaXRlSW5kZXgoKSkpOworICAgICAgICAgICAgdG9QdXNoLmFwcGVuZChG
cmFtZSh2aXNpdG9yLT5jYWxsZWUoKSwgY2FsbEZyYW1lLCBpc1RhaWxEZWxldGVkLCB0aGlzVmFs
dWUsIHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2FsbFNpdGVJbmRleCgpKSk7CiAKICAg
ICAgICAgICAgIGlmIChpbmRleEluTG9nIDwgbG9nQ3Vyc29ySW5kZXgKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGNvbmRpdGlvbiBwcm90ZWN0cyB1cyBmcm9tIHRoZSBjYXNlIHdoZXJlIGFkdmFu
Y2VJbmRleEluTG9nVG8gZGlkbid0IGZpbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjE2LDEzICs2MTYsMTMgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZl
cwogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdER1bWJWaXJ0dWFsQ2FsbChDYWxsTGlua0lu
Zm8qIGluZm8pCiB7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdU
Mik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
ICAgICBDYWxsIGNhbGwgPSBuZWFyQ2FsbCgpOwogICAgIGFkZExpbmtUYXNrKAogICAgICAgICBb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IoJmxpbmtCdWZmZXIudm0oKSwg
KmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRp
bmUodmlydHVhbFRodW5rLCBsaW5rQnVmZmVyLnZtKCksIG51bGxwdHIsIHRydWUpKTsKLSAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh2aXJ0dWFsVGh1
bmsuY29kZSgpKSk7CisgICAgICAgICAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJl
ZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IoJmxpbmtCdWZmZXIudm0oKSwgKmluZm8p
OworICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmly
dHVhbFRodW5rLmNvZGVSZWYoKSwgbGlua0J1ZmZlci52bSgpLCBudWxscHRyLCB0cnVlKSk7Cisg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwodmlydHVh
bFRodW5rLmVudHJ5Rm9yKFN0YWNrQXJncykpKTsKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjA5
NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDE0LDYgKzQxNCw4OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAK
KyAgICBlbnVtIFNwaWxsUmVnaXN0ZXJUeXBlIHsgU3BpbGxBbGwsIFNwaWxsRXhhY3RseSB9Owor
CisgICAgdm9pZCBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHVu
c2lnbmVkIG1pbmltdW1BcmdzVG9TcGlsbCA9IDAsIFNwaWxsUmVnaXN0ZXJUeXBlIHNwaWxsVHlw
ZSA9IFNwaWxsQWxsKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVTdG9yaW5nQXJnczsKKworICAgICAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShhcmd1bWVudFJlZ2lzdGVyRm9y
Q2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CisgICAgICAgIEdQUlJlZyBhcmdDb3Vu
dFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7CisgICAgICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKGFyZ0NvdW50UmVnLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KTsKKworICAgICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7Cisg
ICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIKKyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxs
ID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxsLCAxVSk7CisKKyAgICAgICAgZm9yICg7IGFy
Z0luZGV4IDwgbWluaW11bUFyZ3NUb1NwaWxsICYmIGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZV
TkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykKKyAgICAgICAgICAgIGVtaXRQ
dXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1
bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisKKyAgICAgICAgaWYgKHNwaWxs
VHlwZSA9PSBTcGlsbEFsbCkgeworICAgICAgICAgICAgLy8gU3BpbGwgZXh0cmEgYXJncyBwYXNz
ZWQgdG8gZnVuY3Rpb24KKyAgICAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ0luZGV4KyspIHsKKyAgICAgICAgICAg
ICAgICBkb25lU3RvcmluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxv
d09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0lu
ZGV4KSkpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3Jl
UHJvbG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBh
cmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkb25lU3Rvcmlu
Z0FyZ3MubGluayh0aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtQXJn
c1RvU3BpbGwpOworICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHZvaWQgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWUodW5zaWduZWQgbWlu
aW11bUFyZ3NUb1NwaWxsID0gMCwgU3BpbGxSZWdpc3RlclR5cGUgc3BpbGxUeXBlID0gU3BpbGxB
bGwpCisgICAgeworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMK
KyAgICAgICAgSnVtcExpc3QgZG9uZVN0b3JpbmdBcmdzOworCisgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCksIENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSk7CisgICAgICAgIEdQUlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJG
b3JBcmd1bWVudENvdW50KCk7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihhcmdD
b3VudFJlZywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgIAorICAgICAg
ICB1bnNpZ25lZCBhcmdJbmRleCA9IDA7CisgICAgICAgIC8vIEFsd2F5cyBzcGlsbCAidGhpcyIK
KyAgICAgICAgbWluaW11bUFyZ3NUb1NwaWxsID0gc3RkOjptYXgobWluaW11bUFyZ3NUb1NwaWxs
LCAxVSk7CisgICAgICAgIAorICAgICAgICBmb3IgKDsgYXJnSW5kZXggPCBtaW5pbXVtQXJnc1Rv
U3BpbGwgJiYgYXJnSW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTOyBhcmdJbmRleCsrKQorICAgICAgICAgICAgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUo
YXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7
CisgICAgICAgIAorICAgICAgICBpZiAoc3BpbGxUeXBlID09IFNwaWxsQWxsKSB7CisgICAgICAg
ICAgICAvLyBTcGlsbCBleHRyYSBhcmdzIHBhc3NlZCB0byBmdW5jdGlvbgorICAgICAgICAgICAg
Zm9yICg7IGFyZ0luZGV4IDwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UzsgYXJnSW5kZXgrKykgeworICAgICAgICAgICAgICAgIGRvbmVTdG9yaW5nQXJncy5hcHBlbmQo
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgYXJnQ291bnRSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnSW5kZXgpKSk7CisgICAgICAgICAgICAgICAgZW1p
dFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpLCBhcmdJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGRvbmVTdG9yaW5nQXJncy5saW5rKHRoaXMpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKG1pbmltdW1BcmdzVG9TcGlsbCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShz
cGlsbFR5cGUpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgZmlsbEFyZ3VtZW50UmVn
aXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUoKQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfSlNf
RlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIEp1bXBMaXN0IGRvbmVMb2FkaW5n
QXJnczsKKworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKTsKKyAg
ICAgICAgR1BSUmVnIGFyZ0NvdW50UmVnID0gYXJndW1lbnRSZWdpc3RlckZvckFyZ3VtZW50Q291
bnQoKTsKKyAgICAgICAgZW1pdEdldFBheWxvYWRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJv
bG9ndWUoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgYXJnQ291bnRSZWcpOworICAgICAg
ICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgTlVNQkVS
X09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgrKykgeworICAgICAg
ICAgICAgaWYgKGFyZ0luZGV4KSAvLyBBbHdheXMgbG9hZCAidGhpcyIKKyAgICAgICAgICAgICAg
ICBkb25lTG9hZGluZ0FyZ3MuYXBwZW5kKGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09y
RXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0luZGV4
KSkpOworICAgICAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVBcmd1bWVudEJlZm9yZVByb2xv
Z3VlKGFyZ0luZGV4LCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmdJbmRl
eCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkb25lTG9hZGluZ0FyZ3MubGluayh0
aGlzKTsKKyNlbmRpZgorICAgIH0KKwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAg
c3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkBAIC02MjQs
NiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihz
aXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0K
KworICAgIHZvaWQgZW1pdFB1dEFyZ3VtZW50VG9DYWxsRnJhbWVCZWZvcmVQcm9sb2d1ZShHUFJS
ZWcgZnJvbSwgdW5zaWduZWQgYXJndW1lbnQpCisgICAgeworICAgICAgICBzdG9yZVB0cihmcm9t
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3Vt
ZW50ICsgYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIp
KSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAgIH0KKworICAgIHZvaWQgZW1p
dFB1dEFyZ3VtZW50VG9DYWxsRnJhbWUoR1BSUmVnIGZyb20sIHVuc2lnbmVkIGFyZ3VtZW50KQor
ICAgIHsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGZyb20sIENhbGxGcmFtZVNs
b3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcg
dG8pCisgICAgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKSksIHRvKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0
R2V0RnJvbUNhbGxGcmFtZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUodW5zaWduZWQgYXJndW1lbnQs
IEdQUlJlZyB0bykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50KSAqIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRl
ckRlbHRhKCkpLCB0byk7CisgICAgfQorICAgIAorICAgIHZvaWQgZW1pdEdldFBheWxvYWRGcm9t
Q2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoY29uc3QgaW50IGVudHJ5LCBHUFJSZWcgdG8p
CisgICAgeworICAgICAgICBsb2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50
cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHRvKTsKKyAgICB9CiAjZWxzZQogICAgIHZvaWQgZW1pdFB1
dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBpbnQg
ZW50cnkpCiAgICAgewpAQCAtMTY2MCw3ICsxNzY4LDE0IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykK
KyAgICB2b2lkIGluY3JlbWVudENvdW50ZXIoVk06OlZNQ291bnRlclR5cGUgY291bnRlclR5cGUp
CisgICAgeworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mo
dm0oKS0+YWRkcmVzc09mQ291bnRlcihjb3VudGVyVHlwZSkpKTsKKyAgICB9CisjZW5kaWYKKwog
cHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBA
IC0xNjY5LDYgKzE3ODQsMTIgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwg
VmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsK
IAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyNkZWZpbmUgaW5jcmVtZW50Q291bnRlcihqaXQs
IGNvdW50ZXJUeXBlKSAoaml0KS0+aW5jcmVtZW50Q291bnRlcihjb3VudGVyVHlwZSkKKyNlbHNl
CisjZGVmaW5lIGluY3JlbWVudENvdW50ZXIoaml0LCBjb3VudGVyVHlwZSkgKCh2b2lkKTApCisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWNoZWRSZWNvdmVyeS5jcHAJKHJldmlz
aW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3Zlcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAordm9pZCBDYWNoZWRSZWNvdmVyeTo6YWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3Mg
anNWYWx1ZVJlZ3MpCit7CisgICAgQVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRGUFJSZWcp
OworICAgIHNpemVfdCBleGlzdGluZyA9IG1fZ3ByVGFyZ2V0cy5maW5kKGpzVmFsdWVSZWdzKTsK
KyAgICBpZiAoZXhpc3RpbmcgPT0gV1RGOjpub3RGb3VuZCkgeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGlmIChtX2dwclRhcmdldHMuc2l6ZSgpID4gMCAmJiBtX3JlY292ZXJ5LmlzU2V0
KCkgJiYgbV9yZWNvdmVyeS5pc0luR1BSKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBy
ZWNvdmVyaW5nIHRvIHRoZSBzYW1lIEdQUiwgbWFrZSB0aGF0IEdQUiB0aGUgZmlyc3QgdGFyZ2V0
LgorICAgICAgICAgICAgR1BSUmVnIHNvdXJjZUdQUiA9IG1fcmVjb3ZlcnkuZ3ByKCk7CisgICAg
ICAgICAgICBpZiAoanNWYWx1ZVJlZ3MuZ3ByKCkgPT0gc291cmNlR1BSKSB7CisgICAgICAgICAg
ICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50IGZpcnN0IEdQUiBiZWxvdy4KKyAgICAgICAgICAg
ICAgICBqc1ZhbHVlUmVncyA9IEpTVmFsdWVSZWdzKG1fZ3ByVGFyZ2V0c1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgbV9ncHJUYXJnZXRzWzBdID0gSlNWYWx1ZVJlZ3Moc291cmNlR1BSKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fZ3ByVGFyZ2V0cy5h
cHBlbmQoanNWYWx1ZVJlZ3MpOworICAgIH0KK30KKwogLy8gV2UgcHJlZmVyIGxvYWRpbmcgZG91
YmxlcyBhbmQgdW5kZXRlcm1pbmVkIEpTVmFsdWVzIGludG8gRlBScwogLy8gYmVjYXVzZSBpdCB3
b3VsZCBvdGhlcndpc2UgdXNlIHVwIEdQUnMuICBUd28gaW4gSlNWQUxVRTMyXzY0LgogYm9vbCBD
YWNoZWRSZWNvdmVyeTo6bG9hZHNJbnRvRlBSKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhY2hlZFJlY292ZXJ5LmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FjaGVkUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkUmVjb3ZlcnkmIG9wZXJhdG9yPShDYWNo
ZWRSZWNvdmVyeSYmKSA9IGRlbGV0ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxWaXJ0dWFsUmVnaXN0
ZXIsIDE+JiB0YXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRzOyB9CisgICAgY29uc3Qg
VmVjdG9yPEpTVmFsdWVSZWdzLCAxPiYgZ3ByVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3By
VGFyZ2V0czsgfQogCiAgICAgdm9pZCBhZGRUYXJnZXQoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAg
ICB7CkBAIC02OCwxNSArNjksMTEgQEAgcHVibGljOgogICAgICAgICBtX3RhcmdldHMuY2xlYXIo
KTsKICAgICB9CiAKLSAgICB2b2lkIHNldFdhbnRlZEpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzIGpz
VmFsdWVSZWdzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fd2FudGVkRlBSID09IEludmFsaWRG
UFJSZWcpOwotICAgICAgICBtX3dhbnRlZEpTVmFsdWVSZWdzID0ganNWYWx1ZVJlZ3M7Ci0gICAg
fQorICAgIHZvaWQgYWRkVGFyZ2V0SlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MpOwogCiAgICAgdm9p
ZCBzZXRXYW50ZWRGUFIoRlBSUmVnIGZwcikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV93YW50
ZWRKU1ZhbHVlUmVncyk7CisgICAgICAgIEFTU0VSVChtX2dwclRhcmdldHMuaXNFbXB0eSgpKTsK
ICAgICAgICAgbV93YW50ZWRGUFIgPSBmcHI7CiAgICAgfQogCkBAIC0xMTksMTQgKzExNiwyMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlY292ZXJ5KFZhbHVlUmVjb3ZlcnkgcmVjb3Zlcnkp
IHsgbV9yZWNvdmVyeSA9IHJlY292ZXJ5OyB9CiAKLSAgICBKU1ZhbHVlUmVncyB3YW50ZWRKU1Zh
bHVlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1fd2FudGVkSlNWYWx1ZVJlZ3M7IH0KKyAgICBKU1Zh
bHVlUmVncyB3YW50ZWRKU1ZhbHVlUmVncygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9n
cHJUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygpOwor
CisgICAgICAgIHJldHVybiBtX2dwclRhcmdldHNbMF07CisgICAgfQogCiAgICAgRlBSUmVnIHdh
bnRlZEZQUigpIGNvbnN0IHsgcmV0dXJuIG1fd2FudGVkRlBSOyB9CiBwcml2YXRlOgogICAgIFZh
bHVlUmVjb3ZlcnkgbV9yZWNvdmVyeTsKLSAgICBKU1ZhbHVlUmVncyBtX3dhbnRlZEpTVmFsdWVS
ZWdzOwogICAgIEZQUlJlZyBtX3dhbnRlZEZQUiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBWZWN0
b3I8VmlydHVhbFJlZ2lzdGVyLCAxPiBtX3RhcmdldHM7CisgICAgVmVjdG9yPEpTVmFsdWVSZWdz
LCAxPiBtX2dwclRhcmdldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgJKHJldmlz
aW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVmFs
dWVSZWNvdmVyeSBjYWxsZWU7CiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBib29sIGFyZ3VtZW50c0luUmVnaXN0ZXJzIHsgZmFsc2UgfTsK
ICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292ZXJ5PiByZWdpc3RlcnM7CiAgICAgR1BSUmVnIHRh
Z1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVnIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjA5NjUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMyMyw4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6
OmVtaXREaXNwbGFjZShDYWMKICAgICAgICAgICAgIG1faml0Lm1vdmUoY2FjaGVkUmVjb3Zlcnku
cmVjb3ZlcnkoKS5ncHIoKSwgd2FudGVkUmVnLmdwcigpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIo
KSwgd2FudGVkUmVnLmZwcigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FjaGVkUmVjb3Zl
cnkucmVjb3ZlcnkoKS5kYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgRGF0
YUZvcm1hdCBmb3JtYXQgPSBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmRhdGFGb3JtYXQoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRKUyB8fCBmb3JtYXQg
PT0gRGF0YUZvcm1hdENlbGwpOwogICAgICAgICB1cGRhdGVSZWNvdmVyeShjYWNoZWRSZWNvdmVy
eSwKICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluUmVnaXN0ZXIod2FudGVkUmVnLCBEYXRh
Rm9ybWF0SlMpKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw5IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihD
Q2EKICAgICAgICAgKyByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCkpKQogICAgICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzCiAgICAgICAgICsgcm91bmRBcmd1bWVudENvdW50
VG9BbGlnbkZyYW1lKGRhdGEuYXJncy5zaXplKCkpKQorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
LCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMpCisjZW5k
aWYKICAgICAsIG1fZnJhbWVEZWx0YShtX2FsaWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRP
bGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVn
aXN0ZXJzKCkpCiB7CkBAIC01NCwxMSArNTcsMjEgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxG
cmFtZVNodWZmbGVyKENDYQogICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUu
aXNJbkpTU3RhY2soKSB8fCBkYXRhLmNhbGxlZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkp
OwotICAgIGFkZE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgZGF0
YS5jYWxsZWUpOwotCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoZGF0YS5hcmd1bWVudHNJ
blJlZ2lzdGVycykKKyAgICAgICAgYWRkTmV3KEpTVmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJG
b3JDYWxsZWUoKSksIGRhdGEuY2FsbGVlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgYWRk
TmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBkYXRhLmNhbGxlZSk7
CisgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgQVNTRVJUKCFkYXRhLmFyZ3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFy
Z3NbaV0udmlydHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICAgICAgYWRkTmV3KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBkYXRhLmFyZ3NbaV0pOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGlmIChkYXRhLmFyZ3VtZW50c0luUmVnaXN0ZXJzICYmIGkgPCBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTKQorICAgICAgICAgICAgYWRkTmV3KEpT
VmFsdWVSZWdzKGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KGkpKSwgZGF0YS5h
cmdzW2ldKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBhZGROZXcodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGRhdGEuYXJnc1tpXSk7CiAgICAgfQogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKQEAgLTE4NSw4ICsxOTgsMTMgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6
ZHVtcChQcmludFN0cmVhbQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZWxzZQotICAgICAg
ICBpZiAobmV3Q2FjaGVkUmVjb3ZlcnkpCisgICAgICAgIGlmIChuZXdDYWNoZWRSZWNvdmVyeSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KCIgICAgICAgICAiLCByZWcsICIgPC0gIiwgbmV3Q2Fj
aGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOworICAgICAgICAgICAgaWYgKG5ld0NhY2hlZFJlY292
ZXJ5LT5ncHJUYXJnZXRzKCkuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAxOyBpIDwgbmV3Q2FjaGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKS5zaXplKCk7IGkr
KykKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsICIsIG5ld0NhY2hlZFJlY292ZXJ5
LT5ncHJUYXJnZXRzKClbaV0uZ3ByKCksICIgPC0gIiwgbmV3Q2FjaGVkUmVjb3ZlcnktPnJlY292
ZXJ5KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgb3V0LnBy
aW50KCJcbiIpOwogICAgIH0KQEAgLTQ5Niw3ICs1MTQsNyBAQCBib29sIENhbGxGcmFtZVNodWZm
bGVyOjp0cnlXcml0ZXMoQ2FjaGVkCiAgICAgQVNTRVJUKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5
KCkuaXNJblJlZ2lzdGVycygpCiAgICAgICAgIHx8IGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCku
aXNDb25zdGFudCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmICh2ZXJib3NlICYmIGNh
Y2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXplKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICogU3Rv
cmluZyAiLCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhY2hlZFJlY292ZXJ5LnRhcmdldHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgY2FjaGVkUmVjb3ZlcnkudGFyZ2V0cygpW2ldIH07CkBA
IC01MDUsOSArNTIzLDkgQEAgYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5V3JpdGVzKENhY2hl
ZAogICAgICAgICAgICAgZGF0YUxvZyghaSA/ICIgaW50byAiIDogIiwgYW5kICIsICJORVcgIiwg
dGFyZ2V0KTsKICAgICAgICAgZW1pdFN0b3JlKGNhY2hlZFJlY292ZXJ5LCBhZGRyZXNzRm9yTmV3
KHRhcmdldCkpOwogICAgICAgICBzZXROZXcodGFyZ2V0LCBudWxscHRyKTsKKyAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KLSAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICBjYWNoZWRSZWNvdmVyeS5jbGVhclRh
cmdldHMoKTsKICAgICBpZiAoIWNhY2hlZFJlY292ZXJ5LndhbnRlZEpTVmFsdWVSZWdzKCkgJiYg
Y2FjaGVkUmVjb3Zlcnkud2FudGVkRlBSKCkgPT0gSW52YWxpZEZQUlJlZykKICAgICAgICAgY2xl
YXJDYWNoZWRSZWNvdmVyeShjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpKTsKQEAgLTYwNiw3ICs2
MjQsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KCkKIHsKICAgICBBU1NF
UlQoIWlzVW5kZWNpZGVkKCkpOwogCi0gICAgdXBkYXRlRGFuZ2VyRnJvbnRpZXIoKTsKKyAgICBp
bml0RGFuZ2VyRnJvbnRpZXIoKTsKIAogICAgIC8vIEZpcnN0LCB3ZSB0cnkgdG8gc3RvcmUgYW55
IHZhbHVlIHRoYXQgZ29lcyBhYm92ZSB0aGUgZGFuZ2VyCiAgICAgLy8gZnJvbnRpZXIuIFRoaXMg
d2lsbCBuZXZlciB1c2UgbW9yZSByZWdpc3RlcnMgc2luY2Ugd2UgYXJlIG9ubHkKQEAgLTcwMiwx
MyArNzIwLDkgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQod3JpdGVzT0ssIHdyaXRlc09LKTsKICAgICB9CiAKLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgIT0gSW52YWxpZEdQUlJlZyAmJiBtX25l
d1JlZ2lzdGVyc1ttX3RhZ1R5cGVOdW1iZXJdKQotICAgICAgICByZWxlYXNlR1BSKG1fdGFnVHlw
ZU51bWJlcik7Ci0jZW5kaWYKLQogICAgIC8vIEhhbmRsZSAyKSBieSBsb2FkaW5nIGFsbCByZWdp
c3RlcnMuIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55CiAgICAgLy8gd3JpdGVzLCBzaW5jZSB0aGV5
IGhhdmUgYmVlbiB0YWtlbiBjYXJlIG9mIGFib3ZlLgorICAgIC8vIE5vdGUgdGhhdCB3ZSBuZWVk
IG1fdGFnVHlwZU51bWJlciB0byByZW1haW4gbG9ja2VkIHRvIGJveCB3YW50ZWQgcmVnaXN0ZXJz
LgogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgIExvYWRpbmcgd2FudGVkIHJl
Z2lzdGVycyBpbnRvIHJlZ2lzdGVyc1xuIik7CiAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJz
dCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKQEAgLTc0MiwxMiAr
NzU2LDE5IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgLy8g
V2UgbmVlZCB0byBoYW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwog
ICAgIC8vIG1fbmV3RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4K
KyAgICAvLyBOb3RlIHRoYXQgd2UgZGVsYXkgc2V0dGluZyB0aGUgYXJndW1lbnQgY291bnQgcmVn
aXN0ZXIgYXMgaXQgbmVlZHMgdG8gYmUgcmVsZWFzZWQgaW4gc3RlcCAzLgogICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCIgICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGlu
dG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9LCAi
XG4iKTsKLSAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCks
Ci0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOwotICAgIG1faml0LnN0b3Jl
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAgYWRk
cmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
aWYgKCFtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKSB7CisjZW5kaWYKKyAgICAgICAgbV9qaXQuc3Rv
cmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLAorICAgICAgICAgICAgYWRkcmVz
c0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0p
LndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwKKyAgICAgICAgICAgIGFkZHJlc3NGb3JO
ZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRo
T2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIH0KKyNlbmRp
ZgogCiAgICAgaWYgKCFpc1Nsb3dQYXRoKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVC
YXNlICE9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC03NjcsNiAr
Nzg4LDIzIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogCiAgICAgICAg
IGVtaXREaXNwbGFjZSgqY2FjaGVkUmVjb3ZlcnkpOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgLy8gRm9yIHJlY292ZXJpZXMgd2l0aCBtdWx0aXBsZSByZWdpc3RlciB0YXJnZXRz
LCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgdGFyZ2V0IHRvIHRoZQorICAgIC8vIHJl
bWFpbmluZyB0YXJnZXRzLgorICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9
IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CisgICAgICAgIENhY2hlZFJlY292ZXJ5
KiBjYWNoZWRSZWNvdmVyeSB7IG1fbmV3UmVnaXN0ZXJzW3JlZ10gfTsKKyAgICAgICAgaWYgKCFj
YWNoZWRSZWNvdmVyeSB8fCBjYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKSA8IDIp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHUFJSZWcgc291cmNlR1BSID0gY2Fj
aGVkUmVjb3ZlcnktPmdwclRhcmdldHMoKVswXS5ncHIoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBjYWNoZWRSZWNvdmVyeS0+Z3ByVGFyZ2V0cygpLnNpemUoKTsgaSsrKQorICAg
ICAgICAgICAgbV9qaXQubW92ZShzb3VyY2VHUFIsIGNhY2hlZFJlY292ZXJ5LT5ncHJUYXJnZXRz
KClbaV0uZ3ByKCkpOworICAgIH0KKworICAgIGlmIChtX2FyZ3VtZW50c0luUmVnaXN0ZXJzKQor
ICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYXJnQ291bnQo
KSksIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2Fs
bEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYs
MzcgQEAgcHVibGljOgogICAgIC8vIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRo
ZQogICAgIC8vIGFyZ3VtZW50cy9jYWxsZWUvY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGFyZSBieSB0
YWtpbmcgaW50bwogICAgIC8vIGFjY291bnQgYW55IHNwaWxsaW5nIHRoYXQgYWNxdWlyZUdQUigp
IGNvdWxkIGhhdmUgZG9uZS4KLSAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzbmFwc2hvdCgpIGNv
bnN0CisgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc25hcHNob3QoQXJndW1lbnRzTG9jYXRpb24g
YXJndW1lbnRzTG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVbmRlY2lk
ZWQoKSk7CiAKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgZGF0YTsKICAgICAgICAgZGF0
YS5udW1Mb2NhbHMgPSBudW1Mb2NhbHMoKTsKLSAgICAgICAgZGF0YS5jYWxsZWUgPSBnZXROZXco
VmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGRhdGEuYXJndW1lbnRzSW5SZWdpc3RlcnMgPSBh
cmd1bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50c0xvY2F0aW9uID09IFN0YWNrQXJncykKKyAgICAgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0
TmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSB9KS0+cmVjb3Zlcnko
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpIH07CisgICAgICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3Zl
cnkgeyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CisgICAgICAgICAgICBkYXRhLmNhbGxlZSA9IGNh
Y2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpOworICAgICAgICB9CiAgICAgICAgIGRhdGEuYXJncy5y
ZXNpemUoYXJnQ291bnQoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291
bnQoKTsgKytpKQotICAgICAgICAgICAgZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpKS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmdDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHNMb2Nh
dGlvbiA9PSBTdGFja0FyZ3MgfHwgaSA+PSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTKQorICAgICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBSZWcgcmVnIHsgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJn
dW1lbnQoaSkgfTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3Zl
cnkgeyBtX25ld1JlZ2lzdGVyc1tyZWddIH07CisgICAgICAgICAgICAgICAgZGF0YS5hcmdzW2ld
ID0gY2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7
IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChyZWcuaXNHUFIoKSAmJiBhcmd1
bWVudHNMb2NhdGlvbiAhPSBTdGFja0FyZ3MKKyAgICAgICAgICAgICAgICAmJiBHUFJJbmZvOjp0
b0FyZ3VtZW50SW5kZXgocmVnLmdwcigpKSA8IGFyZ3VtZW50UmVnaXN0ZXJJbmRleEZvckpTRnVu
Y3Rpb25Bcmd1bWVudChhcmdDb3VudCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwog
ICAgICAgICAgICAgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292ZXJ5IHsgbV9uZXdSZWdpc3Rl
cnNbcmVnXSB9OwogICAgICAgICAgICAgaWYgKCFjYWNoZWRSZWNvdmVyeSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTM3Niw2ICszOTYsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1f
YWxpZ25lZE9sZEZyYW1lU2l6ZTsKICAgICBpbnQgbV9hbGlnbmVkTmV3RnJhbWVTaXplOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBtX2FyZ3VtZW50c0luUmVnaXN0ZXJzOworI2VuZGlm
CiAKICAgICAvLyBUaGlzIGlzIHRoZSBkaXN0YW5jZSwgaW4gc2xvdHMsIGJldHdlZW4gdGhlIGJh
c2Ugb2YgdGhlIG5ldwogICAgIC8vIGZyYW1lIGFuZCB0aGUgYmFzZSBvZiB0aGUgb2xkIGZyYW1l
LiBJdCBjb3VsZCBiZSBuZWdhdGl2ZSB3aGVuCkBAIC02NDEsOSArNjY0LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIEFTU0VSVChqc1ZhbHVlUmVncyAmJiAhZ2V0TmV3KGpzVmFsdWVSZWdzKSk7CiAg
ICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSA9IGFkZENhY2hlZFJlY292ZXJ5
KHJlY292ZXJ5KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpZiAoY2FjaGVkUmVjb3Zl
cnktPndhbnRlZEpTVmFsdWVSZWdzKCkpCi0gICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tjYWNo
ZWRSZWNvdmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKS5ncHIoKV0gPSBudWxscHRyOwotICAgICAg
ICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAg
ICAgICAgaWYgKGNhY2hlZFJlY292ZXJ5LT53YW50ZWRKU1ZhbHVlUmVncygpKSB7CisgICAgICAg
ICAgICBpZiAocmVjb3ZlcnkuaXNJbkdQUigpICYmIGpzVmFsdWVSZWdzLmdwcigpID09IHJlY292
ZXJ5LmdwcigpKSB7CisgICAgICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbY2FjaGVkUmVjb3Zl
cnktPndhbnRlZEpTVmFsdWVSZWdzKCkuZ3ByKCldID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICBtX25ld1JlZ2lzdGVyc1tqc1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX25ld1JlZ2lzdGVyc1tq
c1ZhbHVlUmVncy5ncHIoKV0gPSBjYWNoZWRSZWNvdmVyeTsKICNlbHNlCiAgICAgICAgIGlmIChK
U1ZhbHVlUmVncyBvbGRSZWdzIHsgY2FjaGVkUmVjb3ZlcnktPndhbnRlZEpTVmFsdWVSZWdzKCkg
fSkgewogICAgICAgICAgICAgaWYgKG9sZFJlZ3MucGF5bG9hZEdQUigpKQpAQCAtNjU2LDggKzY4
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChqc1ZhbHVlUmVncy50YWdHUFIoKSAhPSBJbnZh
bGlkR1BSUmVnKQogICAgICAgICAgICAgbV9uZXdSZWdpc3RlcnNbanNWYWx1ZVJlZ3MudGFnR1BS
KCldID0gY2FjaGVkUmVjb3Zlcnk7CiAjZW5kaWYKLSAgICAgICAgQVNTRVJUKCFjYWNoZWRSZWNv
dmVyeS0+d2FudGVkSlNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgIGNhY2hlZFJlY292ZXJ5LT5zZXRX
YW50ZWRKU1ZhbHVlUmVncyhqc1ZhbHVlUmVncyk7CisgICAgICAgIGNhY2hlZFJlY292ZXJ5LT5h
ZGRUYXJnZXRKU1ZhbHVlUmVncyhqc1ZhbHVlUmVncyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRO
ZXcoRlBSUmVnIGZwciwgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSkKQEAgLTc1NSwxMyArNzgxLDIz
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZWcgPD0gZGFuZ2VyRnJvbnRpZXIoKTsKICAg
ICB9CiAKKyAgICB2b2lkIGluaXREYW5nZXJGcm9udGllcigpCisgICAgeworICAgICAgICBmaW5k
RGFuZ2VyRnJvbnRpZXJGcm9tKGxhc3ROZXcoKSk7CisgICAgfQorCiAgICAgdm9pZCB1cGRhdGVE
YW5nZXJGcm9udGllcigpCiAgICAgeworICAgICAgICBmaW5kRGFuZ2VyRnJvbnRpZXJGcm9tKG1f
ZGFuZ2VyRnJvbnRpZXIgLSAxKTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmREYW5nZXJGcm9udGll
ckZyb20oVmlydHVhbFJlZ2lzdGVyIG5leHRSZWcpCisgICAgewogICAgICAgICBBU1NFUlQoIWlz
VW5kZWNpZGVkKCkpOwogCiAgICAgICAgIG1fZGFuZ2VyRnJvbnRpZXIgPSBmaXJzdE5ldygpIC0g
MTsKLSAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbGFzdE5ldygpOyByZWcgPj0g
Zmlyc3ROZXcoKTsgcmVnIC09IDEpIHsKLSAgICAgICAgICAgIGlmICghZ2V0TmV3KHJlZykgfHwg
IWlzVmFsaWRPbGQobmV3QXNPbGQocmVnKSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKKyAg
ICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbmV4dFJlZzsgcmVnID49IGZpcnN0TmV3
KCk7IHJlZyAtPSAxKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPbGQobmV3QXNPbGQocmVn
KSkgfHwgIWdldE9sZChuZXdBc09sZChyZWcpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgbV9kYW5nZXJGcm9udGllciA9IHJlZzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlk
R1BSUmVnOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3ByICE9IEludmFsaWRHUFJSZWc7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVn
cyBvdGhlcikgeyByZXR1cm4gbV9ncHIgPT0gb3RoZXIubV9ncHI7IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oSlNWYWx1ZVJlZ3Mgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dw
ciA9PSBvdGhlci5tX2dwcjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKICAgICBHUFJSZWcg
Z3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3Qg
eyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQpAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAK
ICNpZiBDUFUoWDg2KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDB1Cisj
ZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNkZWZp
bmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7
CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJn
dW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVn
VDQKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVk
aTsgLy8gcmVnVDUKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2
UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5W
YWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwpAQCAt
Mzc5LDYgKzM4MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyWzhdID0geyAyLCAwLCAxLCAzLCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgcmV0
dXJuIGluZGV4Rm9yQXJndW1lbnRSZWdpc3RlcltyZWddOworICAgIH0KKwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChy
ZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC0zOTksOSArNDA5LDExIEBAIHB1YmxpYzoKICNpZiAh
T1MoV0lORE9XUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA2dQogI2Rl
ZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA1dQorI2RlZmluZSBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTIC0gMnUpCiAjZWxzZQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
IDR1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDd1CisjZGVmaW5l
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNlbmRpZgogCiBj
bGFzcyBHUFJJbmZvIHsKQEAgLTQ2NCw2ICs0NzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2Vu
ZGlmCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpy
MTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4
OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVk
Tm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5k
b3dzKQpAQCAtNTA4LDYgKzUyMSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpbmRleEZv
clJlZ2lzdGVyW3JlZ107CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJ
bmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyNpZiAh
T1MoV0lORE9XUykKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJndW1l
bnRSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMywgMiwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgMSwgMCwgNCwgNSwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCB9OworI2Vsc2UKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yQXJn
dW1lbnRSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDIs
IDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyNlbmRpZgorICAgICAgICByZXR1cm4g
aW5kZXhGb3JBcmd1bWVudFJlZ2lzdGVyW3JlZ107CisgICAgfQorICAgIAogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChy
ZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MzgsNiArNTYzLDcgQEAgcHVibGljOgogCiAjaWYg
Q1BVKEFSTSkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQorI2RlZmlu
ZSBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIDB1CiAjZGVmaW5lIE5V
TUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAKIGNsYXNzIEdQUkluZm8gewpAQCAt
NjAxLDYgKzYyNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgc3RhdGljIHVuc2lnbmVkIHRvQXJndW1lbnRJbmRleChHUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyAgICAgICAgaWYgKHJlZyA+IGFyZ3VtZW50R1BS
MykKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7CisgICAgICAgIHJldHVybiAodW5z
aWduZWQpcmVnOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1l
KEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcp
OwpAQCAtNjIxLDYgKzY1Niw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk02NCkKICNkZWZpbmUg
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA4dQorI2RlZmluZSBOVU1CRVJfT0ZfSlNfRlVO
Q1RJT05fQVJHVU1FTlRfUkVHSVNURVJTIChOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIC0g
MnUpCiAvLyBDYWxsZWUgU2F2ZXMgaW5jbHVkZXMgeDE5Li54MjggYW5kIEZQIHJlZ2lzdGVycyBx
OC4ucTE1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDE4dQogCkBA
IC02OTgsNiArNzM0LDcgQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0
ZXJzOjpxMTMgPT0gMTMsIHExM19pc18xMyk7CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdp
c3RlcnM6OnExNCA9PSAxNCwgcTE0X2lzXzE0KTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJl
Z2lzdGVyczo6cTE1ID09IDE1LCBxMTVfaXNfMTUpOworCiAgICAgc3RhdGljIEdQUlJlZyB0b1Jl
Z2lzdGVyKHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuIChHUFJSZWcpaW5k
ZXg7CkBAIC03MTUsNiArNzUyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRvUmVnaXN0
ZXIoaW5kZXgpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0FyZ3VtZW50SW5kZXgo
R1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgICAgIGlmIChyZWcgPiBhcmd1bWVudEdQUjcpCisgICAgICAgICAgICByZXR1cm4gSW52
YWxpZEluZGV4OworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBB
U1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzQ2LDYgKzc5MSw3IEBAIHB1YmxpYzoK
IAogI2lmIENQVShNSVBTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1
CisjZGVmaW5lIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgMHUKICNk
ZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5m
byB7CkBAIC03NzMsNiArODE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
YXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQ
UjEgPSByZWdUNTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVn
VDA7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpA
QCAtODI1LDYgKzg3Miw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShTSDQpCiAjZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0pTX0ZVTkNUSU9O
X0FSR1VNRU5UX1JFR0lTVEVSUyAwdQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JF
R0lTVEVSUyAwdQogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTg1NSw2ICs5MDMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBTSDRSZWdpc3RlcnM6OnI2
OyAvLyByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gU0g0UmVn
aXN0ZXJzOjpyNzsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAg
PSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUNTsKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAtODkxLDYgKzk0MCw2
MSBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBDUFUoU0g0KQogCitpbmxpbmUgR1BSUmVnIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKK3sKKyNpZiBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGFyZ3VtZW50SW5kZXggPj0gTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgcmV0
dXJuIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50SW5kZXgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisjZW5kaWYKK30KKworaW5saW5l
IEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkKK3sKKyNpZiBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTCisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3IoMCk7CisjZWxz
ZQorICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgorfQorCitpbmxpbmUgR1BSUmVn
IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkKK3sKKyAgICByZXR1cm4gYXJndW1l
bnRSZWdpc3RlckZvcigxKTsKK30KKworaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50UmVnaXN0ZXJJ
bmRleEZvckpTRnVuY3Rpb25Bcmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudCkKK3sKKyAgICByZXR1
cm4gYXJndW1lbnQgKyAyOworfQorCitpbmxpbmUgdW5zaWduZWQganNGdW5jdGlvbkFyZ3VtZW50
Rm9yQXJndW1lbnRSZWdpc3RlcihHUFJSZWcgZ3ByKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMgPiAwCisgICAgdW5zaWduZWQgYXJndW1lbnRJbmRleCA9
IEdQUkluZm86OnRvQXJndW1lbnRJbmRleChncHIpOworICAgIEFTU0VSVChhcmd1bWVudEluZGV4
ICE9IEdQUkluZm86OkludmFsaWRJbmRleCAmJiBhcmd1bWVudEluZGV4ID49IDIpOworICAgIHJl
dHVybiBhcmd1bWVudEluZGV4IC0gMjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGdwcik7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitpbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5jdGlvbkFyZ3VtZW50KHVu
c2lnbmVkIGFyZ3VtZW50SW5kZXgpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UmVnaXN0ZXJGb3Io
YXJndW1lbnRSZWdpc3RlckluZGV4Rm9ySlNGdW5jdGlvbkFyZ3VtZW50KGFyZ3VtZW50SW5kZXgp
KTsKK30KKworaW5saW5lIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJBcmd1bWVudHNGb3IodW5z
aWduZWQgYXJndW1lbnRDb3VudCkKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oYXJndW1lbnRDb3Vu
dCwgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyk7Cit9CisKIC8vIFRo
ZSBiYXNlbGluZSBKSVQgdXNlcyAiYWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3aXRoIHJl
Z1QwIChmb3IgNjQtYml0KQogLy8gYW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQpIHNlcnZp
bmcgYXMgdGhlIGFjY3VtdWxhdG9yIHJlZ2lzdGVyKHMpIGZvcgogLy8gcGFzc2luZyByZXN1bHRz
IG9mIG9uZSBvcGNvZGUgdG8gdGhlIG5leHQuIEhlbmNlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNCArNjYsNiBAQCB2b2lkIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BCiAgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uKTsK
IH0KIAotSklUOjpDb2RlUmVmIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jKQotewotICAgIGlmICghdm0tPmNhblVzZUpJVCgpKQotICAgICAgICBy
ZXR1cm4gQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1w
b2xpbmUpOwotICAgIEpJVCBqaXQodm0sIDApOwotICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBp
bGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jKTsKLX0KLQogSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICA6IEpTSW50ZXJmYWNlSklUKHZtLCBjb2RlQmxvY2spCiAgICAg
LCBtX2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKQEAgLTU3OSw2ICs1NzEsMjAgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgIGlmIChtX3JhbmRvbUdl
bmVyYXRvci5nZXRVaW50MzIoKSAmIDEpCiAgICAgICAgIG5vcCgpOwogCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBzcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSk7CisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6UmVnQXJnc05vQXJpdHkpOworI2lmIEVOQUJMRShW
TV9DT1VOVEVSUykKKyAgICBKdW1wIGNvbnRpbnVlU3RhY2tFbnRyeSA9IGp1bXAoKTsKKyNlbmRp
ZgorI2VuZGlmCisgICAgbV9zdGFja0FyZ3NBcml0eU9LRW50cnkgPSBsYWJlbCgpOworICAgIGlu
Y3JlbWVudENvdW50ZXIodGhpcywgVk06OlN0YWNrQXJnc05vQXJpdHkpOworCisjaWYgVVNFKEpT
VkFMVUU2NCkgJiYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgIGNvbnRpbnVlU3RhY2tFbnRyeS5s
aW5rKHRoaXMpOworI2VuZGlmCisKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGVt
aXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKTsKIApAQCAtNjM1LDcgKzY0MSwyMSBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5r
aW5nKEpJVENvbXBpCiAgICAgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhj
ZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CiAK
ICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7Ci0gICAg
ICAgIG1fYXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIG1fcmVnaXN0ZXJBcmdzV2l0aEFy
aXR5Q2hlY2sgPSBsYWJlbCgpOworCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06
OlJlZ0FyZ3NBcml0eSk7CisKKyAgICAgICAgc3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVC
ZWZvcmVQcm9sb2d1ZSgpOworCisjaWYgRU5BQkxFKFZNX0NPVU5URVJTKQorICAgICAgICBKdW1w
IGNvbnRpbnVlU3RhY2tBcml0eUVudHJ5ID0ganVtcCgpOworI2VuZGlmCisKKyAgICAgICAgbV9z
dGFja0FyZ3NXaXRoQXJpdHlDaGVjayA9IGxhYmVsKCk7CisgICAgICAgIGluY3JlbWVudENvdW50
ZXIodGhpcywgVk06OlN0YWNrQXJnc0FyaXR5KTsKKyNpZiBFTkFCTEUoVk1fQ09VTlRFUlMpCisg
ICAgICAgIGNvbnRpbnVlU3RhY2tBcml0eUVudHJ5LmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKQEAgLTY0Myw2ICs2NjMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJ
VENvbXBpCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJlZ2luTGFi
ZWwsIHRoaXMpOwogCisgICAgICAgIGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OkFyaXR5Rml4
dXBSZXF1aXJlZCk7CisKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKICAgICAgICAg
aWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpAQCAtNzc4LDkgKzgwMCwxNCBAQCBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KICAgICBtX2NvZGVCbG9jay0+c2V0
SklUQ29kZU1hcChqaXRDb2RlTWFwRW5jb2Rlci5maW5pc2goKSk7CiAKLSAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0
YWNrRW50cnlBcml0eU9LUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3N0YWNrQXJnc0Fy
aXR5T0tFbnRyeSk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlZ2lzdGVyRW50
cnlXaXRoQXJpdHlDaGVja1B0cjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgc3RhY2tFbnRy
eVdpdGhBcml0eUNoZWNrUHRyOworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0g
cGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAg
ICAgICAgc3RhY2tFbnRyeVdpdGhBcml0eUNoZWNrUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25P
ZihtX3N0YWNrQXJnc1dpdGhBcml0eUNoZWNrKTsKKyAgICB9CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcERpc2Fzc2VtYmx5KCkpIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAocGF0Y2hC
dWZmZXIpOwpAQCAtODA0LDggKzgzMSwyMCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6Omxpbmso
KQogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwog
CiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7Cisg
ICAgSklURW50cnlQb2ludHMgZW50cnlwb2ludHMocmVzdWx0LmNvZGUoKSwgcmVnaXN0ZXJFbnRy
eVdpdGhBcml0eUNoZWNrUHRyLCByZWdpc3RlckVudHJ5V2l0aEFyaXR5Q2hlY2tQdHIsIHN0YWNr
RW50cnlBcml0eU9LUHRyLCBzdGFja0VudHJ5V2l0aEFyaXR5Q2hlY2tQdHIpOworCisgICAgdW5z
aWduZWQgbnVtUGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0NvdW50ID0gMTsgYXJnQ291
bnQgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnQ291bnQr
KykgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnk7CisgICAgICAgIGlmIChh
cmdDb3VudCA9PSBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgZW50cnkgPSByZXN1bHQuY29k
ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeSA9IHJlZ2lzdGVyRW50cnlXaXRo
QXJpdHlDaGVja1B0cjsKKyAgICAgICAgZW50cnlwb2ludHMuc2V0RW50cnlGb3IoSklURW50cnlQ
b2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3VudChhcmdDb3VudCksIGVudHJ5
KTsKKyAgICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFz
ZWxpbmVKSVQpKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKEpJVEVudHJ5
UG9pbnRzV2l0aFJlZihyZXN1bHQsIGVudHJ5cG9pbnRzKSwgSklUQ29kZTo6QmFzZWxpbmVKSVQp
KSk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0
ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1
dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRN
YXRoSUMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUg
IlVudXNlZFBvaW50ZXIuaCIKIApAQCAtMjQ2LDcgKzI0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShieVZhbElu
Zm8sIHJldHVybkFkZHJlc3MsIGFycmF5TW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgQ29kZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKKyAg
ICAgICAgc3RhdGljIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBjb21waWxlTmF0aXZlQ2FsbEVudHJ5
UG9pbnRzKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgICAgICAgICBDb2RlUmVmIG5hdGl2
ZUNhbGxSZWYgPSBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxf
dHJhbXBvbGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpJVEVudHJ5UG9pbnRzV2l0aFJl
ZihuYXRpdmVDYWxsUmVmLCBuYXRpdmVDYWxsUmVmLmNvZGUoKSwgbmF0aXZlQ2FsbFJlZi5jb2Rl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSklUIGppdCh2bSwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlSklURW50cnlOYXRpdmVDYWxsKHZtLCBmdW5j
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291
bnRGb3IoQ29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0
Rm9yKENvZGVCbG9jayopOwpAQCAtMjY2LDggKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAotICAgICAgICBMYWJlbCBwcml2YXRl
Q29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwotICAg
ICAgICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSosIE5hdGl2ZUZ1bmN0
aW9uKTsKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIHByaXZhdGVDb21waWxlSklURW50
cnlOYXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
OwogCiAgICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4g
ZXhjZXB0aW9uIGNoZWNrLgpAQCAtOTQ5LDggKzk1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4Owot
ICAgICAgICAKLSAgICAgICAgTGFiZWwgbV9hcml0eUNoZWNrOworCisgICAgICAgIExhYmVsIG1f
c3RhY2tBcmdzQXJpdHlPS0VudHJ5OworICAgICAgICBMYWJlbCBtX3N0YWNrQXJnc1dpdGhBcml0
eUNoZWNrOworICAgICAgICBMYWJlbCBtX3JlZ2lzdGVyQXJnc1dpdGhBcml0eUNoZWNrOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogCiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxKSVREaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjA5
NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJ
bnN0cnVjdGlvbiogaQogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZv
KCk7Ci0gICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOworICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0lu
Zm86OkNhbGwsIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDAp
OwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lk
IEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
LSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1QyKTsKKyAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoaW5mbyksIG5vbkFyZ0dQUjApOwogCiAgICAgZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCByZWdUMSwgcmVnVDApOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFs
VGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmluZm8pOwotICAgIGluZm8tPnNldFNsb3dT
dHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRy
dWUpKTsKLSAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOworICAgIEpJVEpT
Q2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zv
cihtX3ZtLCAqaW5mbyk7CisgICAgaW5mby0+c2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRp
bmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKKyAgICBl
bWl0TmFrZWRDYWxsKHZpcnR1YWxUaHVuay5lbnRyeUZvcihTdGFja0FyZ3MpKTsKICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCkBAIC0yODYsNyArMjg2LDcgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09
IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpj
YWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIHJlZ1Qw
KTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCksIFN0YWNrQXJncywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogICAg
IG1fY2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9
IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2s7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZv
W2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8gPSBpbmZvOwpAQCAtMzE3LDEyICszMTcs
MTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlu
a0luZm8pLCByZWdUMik7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbzsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgbm9uQXJnR1BSMCk7CiAKICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdz
KQogICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKLSAgICBtX2NhbGxDb21waWxh
dGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGVtaXROYWtl
ZENhbGwobV92bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOwor
ICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxv
Y2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2Nh
dGlvbigpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRE
aWRSZXR1cm5Gcm9tVGFpbENhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHZvaWQgSklUOjpjb21w
aWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJl
Z1QxLCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGluY3Jl
bWVudENvdW50ZXIodGhpcywgVk06OkJhc2VsaW5lQ2FsbGVyKTsKKyAgICBpbmNyZW1lbnRDb3Vu
dGVyKHRoaXMsIFZNOjpDYWxsVmFyYXJncyk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2
YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtOTgsNiArMTAwLDkgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
LXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIs
IEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogCisgICAg
aW5jcmVtZW50Q291bnRlcih0aGlzLCBWTTo6QmFzZWxpbmVDYWxsZXIpOworICAgIGluY3JlbWVu
dENvdW50ZXIodGhpcywgVk06OkNhbGxFdmFsKTsKKwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
c3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBj
YWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQ
b2ludGVyQWxpZ25tZW50KCk7CiAKQEAgLTExMyw3ICsxMTgsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZUNhbGxFdmFsKEluc3RydWN0aW9uKiBpCiB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nh
c2UoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRD
YWxsTGlua0luZm8oKTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCByZWdUMCk7CisgICAgaW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Q2FsbCwgU3RhY2tBcmdzLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZz
ZXQpLCByZWdUMCk7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50IHJlZ2lzdGVy
T2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE1NCwxMiArMTU5LDE0IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBDT01QSUxFX0FT
U0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
X29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAKICAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBudWxscHRyOworICAgIEFyZ3VtZW50c0xvY2F0aW9uIGFyZ3VtZW50c0xvY2F0aW9uID0gU3Rh
Y2tBcmdzOworCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5m
byA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpZiAob3Bjb2RlSUQgPT0g
b3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludCBhcmdD
b3VudCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291
bnQgPSBpbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgIGludCByZWdpc3Rl
ck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICAgICAgaWYgKG9wY29k
ZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CkBAIC0xNzEsMTUgKzE3
OCwyNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAg
IH0KICAgICAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNp
emVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdp
c3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBpZiAoYXJndW1lbnRzTG9jYXRp
b24gIT0gU3RhY2tBcmdzKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhcmdDb3Vu
dCksIGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgdW5z
aWduZWQgcmVnaXN0ZXJBcmdzID0gc3RkOjptaW4oYXJnQ291bnQsIE5VTUJFUl9PRl9KU19GVU5D
VElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmcg
PSAwOyBhcmcgPCByZWdpc3RlckFyZ3M7IGFyZysrKQorICAgICAgICAgICAgICAgIGxvYWQ2NChB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
ICsgYXJnKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudChhcmcp
KTsKKyAgICAgICAgfQogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1l
ICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6
ZWQuCisKKyAgICBpbmNyZW1lbnRDb3VudGVyKHRoaXMsIFZNOjpCYXNlbGluZUNhbGxlcik7CiAg
ICAgCiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIG1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJl
Z1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAg
ICBHUFJSZWcgY2FsbGVlUmVnaXN0ZXIgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CisK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnaXN0ZXIpOworICAg
IHN0b3JlNjQoY2FsbGVlUmVnaXN0ZXIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9j
YWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTE4
NywxNiArMjA0LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkK
ICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsK
LSAgICBKdW1wIHNsb3dDYXNlID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwg
YWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cigwKSk7CisgICAgSnVt
cCBzbG93Q2FzZSA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgY2FsbGVlUmVnaXN0ZXIs
IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8u
c2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCksIHJlZ1QwKTsKKyAgICBpbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cihvcGNvZGVJRCksIGFyZ3VtZW50c0xvY2F0aW9uLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZz
ZXQpLCBjYWxsZWVSZWdpc3Rlcik7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChD
YWxsQ29tcGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlu
a0luZm9JbmRleF0uaG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsK
ICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5m
byA9IGluZm87CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CisgICAgICAg
IGluY3JlbWVudENvdW50ZXIodGhpcywgVk06OlRhaWxDYWxsKTsKKwogICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51
bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKICAgICAgICAgc2h1ZmZsZURh
dGEubnVtTG9jYWxzID0KQEAgLTIwOSw3ICsyMjgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAg
ICAgICAgIH0KICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0KLSAgICAgICAgICAgIFZhbHVl
UmVjb3Zlcnk6OmluR1BSKHJlZ1QwLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgVmFsdWVS
ZWNvdmVyeTo6aW5HUFIoY2FsbGVlUmVnaXN0ZXIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIHNo
dWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAgICAgICAg
IGluZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlcigqdGhpcywgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAt
MjQ2LDkgKzI2NSwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlE
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5r
SW5mbyksIHJlZ1QyKTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1fY2FsbENv
bXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvOworICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBub25BcmdHUFIwKTsKIAotICAgIG1fY2FsbENv
bXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1p
dE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KSk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0
dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldEpJVENhbGxUaHVua0VudHJ5U3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5lbnRyeUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpIHsKICAgICAgICAgYWJvcnRXaXRoUmVhc29u
KEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBK
SVRDb2RlOjpleGVjdXRlKFZNKiB2bSwgUHJvdG9DYQogCiAgICAgaWYgKCFmdW5jdGlvbiB8fCAh
cHJvdG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpIHsKICAgICAgICAgQVNTRVJUKCFwcm90
b0NhbGxGcmFtZS0+bmVlZEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIGVudHJ5QWRkcmVzcyA9IGV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJlc3NGb3JDYWxs
KFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgZW50cnlBZGRyZXNzID0gYWRkcmVzc0ZvckNhbGwoTXVzdENoZWNr
QXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGVudHJ5QWRkcmVzcyA9IGFkZHJl
c3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3JpcHQo
ZW50cnlBZGRyZXNzLCB2bSwgcHJvdG9DYWxsRnJhbWUpKTsKICAgICByZXR1cm4gc2NvcGUuZXhj
ZXB0aW9uKCkgPyBqc051bGwoKSA6IHJlc3VsdDsKIH0KQEAgLTE2Miw5ICsxNjIsOSBAQCBEaXJl
Y3RKSVRDb2RlOjpEaXJlY3RKSVRDb2RlKEpJVFR5cGUgaml0CiB7CiB9CiAKLURpcmVjdEpJVENv
ZGU6OkRpcmVjdEpJVENvZGUoSklUQ29kZTo6Q29kZVJlZiByZWYsIEpJVENvZGU6OkNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2ssIEpJVFR5cGUgaml0VHlwZSkKLSAgICA6IEpJVENvZGVXaXRoQ29kZVJl
ZihyZWYsIGppdFR5cGUpCi0gICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhBcml0eUNoZWNrKQor
RGlyZWN0SklUQ29kZTo6RGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmll
cywgSklUVHlwZSBqaXRUeXBlKQorICAgIDogSklUQ29kZVdpdGhDb2RlUmVmKGVudHJpZXMuY29k
ZVJlZigpLCBqaXRUeXBlKQorICAgICwgbV9lbnRyeVBvaW50cyhlbnRyaWVzKQogewogfQogCkBA
IC0xNzIsMjUgKzE3MiwxNiBAQCBEaXJlY3RKSVRDb2RlOjp+RGlyZWN0SklUQ29kZSgpCiB7CiB9
CiAKLXZvaWQgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoSklUQ29kZTo6Q29kZVJl
ZiByZWYsIEpJVENvZGU6OkNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCit2b2lkIERpcmVjdEpJVENv
ZGU6OmluaXRpYWxpemVFbnRyeVBvaW50cyhKSVRFbnRyeVBvaW50c1dpdGhSZWYgZW50cmllcykK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZWYpOwotICAgIG1fcmVmID0gcmVmOwotICAgIG1f
d2l0aEFyaXR5Q2hlY2sgPSB3aXRoQXJpdHlDaGVjazsKKyAgICBtX3JlZiA9IGVudHJpZXMuY29k
ZVJlZigpOworICAgIG1fZW50cnlQb2ludHMgPSBlbnRyaWVzOwogfQogCi1KSVRDb2RlOjpDb2Rl
UHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQor
SklUQ29kZTo6Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbChFbnRyeVBvaW50
VHlwZSB0eXBlKQogewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICBjYXNlIEFyaXR5Q2hlY2tO
b3RSZXF1aXJlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICByZXR1
cm4gbV9yZWYuY29kZSgpOwotICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlD
aGVjazsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gQ29kZVB0cigpOworICAgIHJldHVybiBtX2VudHJ5UG9pbnRzLmVudHJ5Rm9yKHR5cGUpOwog
fQogCiBOYXRpdmVKSVRDb2RlOjpOYXRpdmVKSVRDb2RlKEpJVFR5cGUgaml0VHlwZSkKQEAgLTIx
Myw3ICsyMDQsNyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENvCiAg
ICAgbV9yZWYgPSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRk
cmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJVENv
ZGU6OmFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KCEhbV9yZWYpOwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tNb2RlLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxl
ci5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
U2V0LmgiCkBAIC0xNzMsOSArMTczLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaml0Q29k
ZS0+aml0VHlwZSgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoQXJpdHlDaGVja01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoRW50cnlQb2ludFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgeyByZXR1cm4gZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKTsgfQogICAgIHZp
cnR1YWwgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpID0gMDsKICAg
ICAKQEAgLTIyNCwxNSArMjIzLDE1IEBAIHByb3RlY3RlZDoKIGNsYXNzIERpcmVjdEpJVENvZGUg
OiBwdWJsaWMgSklUQ29kZVdpdGhDb2RlUmVmIHsKIHB1YmxpYzoKICAgICBEaXJlY3RKSVRDb2Rl
KEpJVFR5cGUpOwotICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZiwgQ29kZVB0ciB3aXRoQXJpdHlD
aGVjaywgSklUVHlwZSk7CisgICAgRGlyZWN0SklUQ29kZShKSVRFbnRyeVBvaW50c1dpdGhSZWYs
IEpJVFR5cGUpOwogICAgIHZpcnR1YWwgfkRpcmVjdEpJVENvZGUoKTsKICAgICAKLSAgICB2b2lk
IGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOworICAg
IHZvaWQgaW5pdGlhbGl6ZUVudHJ5UG9pbnRzKEpJVEVudHJ5UG9pbnRzV2l0aFJlZik7CiAKLSAg
ICBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKKyAgICBD
b2RlUHRyIGFkZHJlc3NGb3JDYWxsKEVudHJ5UG9pbnRUeXBlKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9l
bnRyeVBvaW50czsKIH07CiAKIGNsYXNzIE5hdGl2ZUpJVENvZGUgOiBwdWJsaWMgSklUQ29kZVdp
dGhDb2RlUmVmIHsKQEAgLTI0Myw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBp
bml0aWFsaXplQ29kZVJlZihDb2RlUmVmKTsKIAotICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoRW50
cnlQb2ludFR5cGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEVudHJ5UG9pbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFbnRyeVBvaW50cy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURW50cnlQb2ludHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRl
ICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgVk07CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CisKK2Vu
dW0gQXJndW1lbnRzTG9jYXRpb24gOiB1bnNpZ25lZCB7CisgICAgU3RhY2tBcmdzID0gMCwKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICBSZWdp
c3RlckFyZ3MxSW5SZWdpc3RlcnMsCisgICAgUmVnaXN0ZXJBcmdzMkluUmVnaXN0ZXJzLAorICAg
IFJlZ2lzdGVyQXJnczNJblJlZ2lzdGVycywKKyAgICBSZWdpc3RlckFyZ3M0SW5SZWdpc3RlcnMs
CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2CisgICAg
UmVnaXN0ZXJBcmdzNUluUmVnaXN0ZXJzLAorICAgIFJlZ2lzdGVyQXJnczZJblJlZ2lzdGVycywK
KyNlbmRpZgorICAgIFJlZ2lzdGVyQXJnc1dpdGhFeHRyYU9uU3RhY2sKKyNlbmRpZgorfTsKKwor
Ly8gVGhpcyBlbnVtIG5lZWRzIHRvIGhhdmUgdGhlIHNhbWUgZW51bWVyYXRvciBvcmRlcmluZyBh
cyBBcmd1bWVudHNMb2NhdGlvbi4KK2VudW0gVGh1bmtFbnRyeVBvaW50VHlwZSA6IHVuc2lnbmVk
IHsKKyAgICBTdGFja0FyZ3NFbnRyeSA9IDAsCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgUmVnaXN0ZXIxQXJnRW50cnksCisgICAgUmVnaXN0
ZXIyQXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyM0FyZ3NFbnRyeSwKKyAgICBSZWdpc3RlcjRBcmdz
RW50cnksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA2
CisgICAgUmVnaXN0ZXI1QXJnc0VudHJ5LAorICAgIFJlZ2lzdGVyNkFyZ3NFbnRyeSwKKyNlbmRp
ZgorI2VuZGlmCisgICAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50Cit9OworCitlbnVtIEVudHJ5
UG9pbnRUeXBlIHsKKyAgICBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQsCisgICAgU3Rh
Y2tBcmdzTXVzdENoZWNrQXJpdHksCisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIFJlZ2lzdGVyQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCwKKyAgICBS
ZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJhQXJncywKKyAgICBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tB
cml0eSwKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
KyAgICBSZWdpc3RlckFyZ3MxLAorICAgIFJlZ2lzdGVyQXJnczIsCisgICAgUmVnaXN0ZXJBcmdz
MywKKyAgICBSZWdpc3RlckFyZ3M0LAorI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMgPT0gNgorICAgIFJlZ2lzdGVyQXJnczUsCisgICAgUmVnaXN0ZXJBcmdzNiwK
KyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyAgICBOdW1iZXJPZkVudHJ5UG9pbnRUeXBlcworfTsK
KworY2xhc3MgSklURW50cnlQb2ludHMgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIENvZGVQdHI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
RW50cnlUeXBlcyA9IEVudHJ5UG9pbnRUeXBlOjpOdW1iZXJPZkVudHJ5UG9pbnRUeXBlczsKKwor
ICAgIEpJVEVudHJ5UG9pbnRzKCkKKyAgICB7CisgICAgICAgIGNsZWFyRW50cmllcygpOworICAg
IH0KKworICAgIEpJVEVudHJ5UG9pbnRzKENvZGVQdHIgcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVp
cmVkRW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeSwKKyAg
ICAgICAgQ29kZVB0ciByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnksIENvZGVQdHIgc3RhY2tB
cmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdz
Q2hlY2tBcml0eUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tTdGFja0FyZ3NB
cml0eUNoZWNrTm90UmVxdWlyZWRdID0gc3RhY2tBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVkRW50
cnk7CisgICAgICAgIG1fZW50cnlQb2ludHNbU3RhY2tBcmdzTXVzdENoZWNrQXJpdHldID0gc3Rh
Y2tBcmdzQ2hlY2tBcml0eUVudHJ5OworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3RlckFyZ3NBcml0eUNoZWNr
Tm90UmVxdWlyZWRdID0gcmVnaXN0ZXJBcmdzTm9DaGVja1JlcXVpcmVkRW50cnk7CisgICAgICAg
IG1fZW50cnlQb2ludHNbUmVnaXN0ZXJBcmdzUG9zc2libGVFeHRyYUFyZ3NdID0gcmVnaXN0ZXJB
cmdzUG9zc2libGVFeHRyYUFyZ3NFbnRyeTsKKyAgICAgICAgbV9lbnRyeVBvaW50c1tSZWdpc3Rl
ckFyZ3NNdXN0Q2hlY2tBcml0eV0gPSByZWdpc3RlckFyZ3NDaGVja0FyaXR5RW50cnk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUzsgaSArKykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbcmVnaXN0ZXJF
bnRyeVR5cGVGb3JBcmd1bWVudENvdW50KGkpXSA9IHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlFbnRy
eTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NOb0NoZWNrUmVxdWly
ZWRFbnRyeSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlckFyZ3NQb3NzaWJsZUV4dHJh
QXJnc0VudHJ5KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyQXJnc0NoZWNrQXJpdHlF
bnRyeSk7CisjZW5kaWYKKworICAgIH0KKworICAgIENvZGVQdHIgZW50cnlGb3IoRW50cnlQb2lu
dFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VudHJ5UG9pbnRzW3R5cGVdOwor
ICAgIH0KKworICAgIHZvaWQgc2V0RW50cnlGb3IoRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0
ciBlbnRyeSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlIDwgTnVtYmVyT2ZFbnRyeVBvaW50
VHlwZXMpOworICAgICAgICBtX2VudHJ5UG9pbnRzW3R5cGVdID0gZW50cnk7CisgICAgfQorCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKEVudHJ5UG9pbnRUeXBlIHR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0b2YoSklURW50cnlQb2ludHMsIG1fZW50cnlQ
b2ludHNbdHlwZV0pOworICAgIH0KKworICAgIHN0YXRpYyBFbnRyeVBvaW50VHlwZSByZWdpc3Rl
ckVudHJ5VHlwZUZvckFyZ3VtZW50Q291bnQodW5zaWduZWQgYXJnQ291bnQpCisgICAgeworI2lm
IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgQVNTRVJU
KGFyZ0NvdW50KTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJBcmdDb3VudCA9IG51bWJlck9m
UmVnaXN0ZXJBcmd1bWVudHNGb3IoYXJnQ291bnQpOworICAgICAgICBpZiAoIXJlZ2lzdGVyQXJn
Q291bnQgfHwgcmVnaXN0ZXJBcmdDb3VudCAhPSBhcmdDb3VudCkKKyAgICAgICAgICAgIHJldHVy
biBSZWdpc3RlckFyZ3NNdXN0Q2hlY2tBcml0eTsKKworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RW50cnlQb2ludFR5cGU+KFJlZ2lzdGVyQXJnczEgKyByZWdpc3RlckFyZ0NvdW50IC0gMSk7
CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oYXJnQ291bnQpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNr
QXJpdHk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgRW50cnlQb2ludFR5cGUgcmVnaXN0
ZXJFbnRyeVR5cGVGb3JBcmd1bWVudFR5cGUoQXJndW1lbnRzTG9jYXRpb24gdHlwZSkKKyAgICB7
CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgICAgICBB
U1NFUlQodHlwZSAhPSBTdGFja0FyZ3MpOworICAgICAgICBpZiAodHlwZSA9PSBSZWdpc3RlckFy
Z3NXaXRoRXh0cmFPblN0YWNrKQorICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RD
aGVja0FyaXR5OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudHJ5UG9p
bnRUeXBlPihSZWdpc3RlckFyZ3MxICsgdHlwZSAtIFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycyk7
CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgY2xlYXJFbnRyaWVzKCkKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsgaS0tOykKKyAgICAgICAg
ICAgIG1fZW50cnlQb2ludHNbaV0gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICB9CisK
KyAgICBKSVRFbnRyeVBvaW50cyYgb3BlcmF0b3I9KGNvbnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhl
cikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mRW50cnlUeXBlczsg
aS0tOykKKyAgICAgICAgICAgIG1fZW50cnlQb2ludHNbaV0gPSBvdGhlci5tX2VudHJ5UG9pbnRz
W2ldOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBD
b2RlUHRyIG1fZW50cnlQb2ludHNbbnVtYmVyT2ZFbnRyeVR5cGVzXTsKK307CisKK2NsYXNzIEpJ
VEVudHJ5UG9pbnRzV2l0aFJlZiA6IHB1YmxpYyBKSVRFbnRyeVBvaW50cyB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKworICAgIEpJVEVudHJ5
UG9pbnRzV2l0aFJlZigpCisgICAgeworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJl
Zihjb25zdCBKSVRFbnRyeVBvaW50c1dpdGhSZWYmIG90aGVyKQorICAgICAgICA6IEpJVEVudHJ5
UG9pbnRzKG90aGVyKQorICAgICAgICAsIG1fY29kZVJlZihvdGhlci5tX2NvZGVSZWYpCisgICAg
eworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIGNv
bnN0IEpJVEVudHJ5UG9pbnRzJiBvdGhlcikKKyAgICAgICAgOiBKSVRFbnRyeVBvaW50cyhvdGhl
cikKKyAgICAgICAgLCBtX2NvZGVSZWYoY29kZVJlZikKKyAgICB7CisgICAgfQorICAgIAorICAg
IEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENvZGVQdHIgc3RhY2tBcmdz
QXJpdHlDaGVja05vdFJlcXVpcmVkRW50cnksCisgICAgICAgIENvZGVQdHIgc3RhY2tBcmdzQ2hl
Y2tBcml0eUVudHJ5KQorICAgICAgICA6IEpJVEVudHJ5UG9pbnRzKENvZGVQdHIoKSwgQ29kZVB0
cigpLCBDb2RlUHRyKCksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LCBzdGFj
a0FyZ3NDaGVja0FyaXR5RW50cnkpCisgICAgICAgICwgbV9jb2RlUmVmKGNvZGVSZWYpCisgICAg
eworICAgIH0KKworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZihDb2RlUmVmIGNvZGVSZWYsIENv
ZGVQdHIgcmVnaXN0ZXJBcmdzTm9DaGVja3NSZXF1aXJlZEVudHJ5LAorICAgICAgICBDb2RlUHRy
IHJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksIENvZGVQdHIgcmVnaXN0ZXJBcmdz
Q2hlY2tBcml0eUVudHJ5LAorICAgICAgICBDb2RlUHRyIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RS
ZXF1aXJlZEVudHJ5LCBDb2RlUHRyIHN0YWNrQXJnc0NoZWNrQXJpdHlFbnRyeSkKKyAgICAgICAg
OiBKSVRFbnRyeVBvaW50cyhyZWdpc3RlckFyZ3NOb0NoZWNrc1JlcXVpcmVkRW50cnksIHJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzRW50cnksCisgICAgICAgICAgICByZWdpc3RlckFyZ3ND
aGVja0FyaXR5RW50cnksIHN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZEVudHJ5LAorICAg
ICAgICAgICAgc3RhY2tBcmdzQ2hlY2tBcml0eUVudHJ5KQorICAgICAgICAsIG1fY29kZVJlZihj
b2RlUmVmKQorICAgIHsKKyAgICB9CisKKyAgICBDb2RlUmVmIGNvZGVSZWYoKSB7IHJldHVybiBt
X2NvZGVSZWY7IH0KKworcHJpdmF0ZToKKyAgICBDb2RlUmVmIG1fY29kZVJlZjsKK307CisKK2lu
bGluZSBBcmd1bWVudHNMb2NhdGlvbiBhcmd1bWVudHNMb2NhdGlvbkZvcih1bnNpZ25lZCBhcmd1
bWVudENvdW50KQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RF
UlMKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQpCisgICAgICAgIHJldHVybiBTdGFja0FyZ3M7Cisg
ICAgCisgICAgYXJndW1lbnRDb3VudCA9IHN0ZDo6bWluKE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMgKyAxLCBhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8QXJndW1lbnRzTG9jYXRpb24+KEFyZ3VtZW50c0xvY2F0aW9uOjpSZWdpc3Rl
ckFyZ3MxSW5SZWdpc3RlcnMgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzOworI2VuZGlmCit9
CisKK2lubGluZSBFbnRyeVBvaW50VHlwZSByZWdpc3RlckVudHJ5UG9pbnRUeXBlRm9yKHVuc2ln
bmVkIGFyZ3VtZW50Q291bnQpCit7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIGlmICghYXJndW1lbnRDb3VudCB8fCBhcmd1bWVudENvdW50ID4gTlVN
QkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAgICAgcmV0dXJuIFJl
Z2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bnRyeVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6OlJlZ2lzdGVyQXJnczEgKyBhcmd1bWVudENv
dW50IC0gMSk7CisjZWxzZQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
VU5VU0VEX1BBUkFNKGFyZ3VtZW50Q291bnQpOworICAgIHJldHVybiBTdGFja0FyZ3NNdXN0Q2hl
Y2tBcml0eTsKKyNlbmRpZgorfQorCitpbmxpbmUgRW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5
cGVGb3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaWYgKGFyZ3VtZW50TG9jYXRp
b24gPT0gU3RhY2tBcmdzKQorICAgICAgICByZXR1cm4gU3RhY2tBcmdzTXVzdENoZWNrQXJpdHk7
CisgICAgCisgICAgaWYgKGFyZ3VtZW50TG9jYXRpb24gPT0gUmVnaXN0ZXJBcmdzV2l0aEV4dHJh
T25TdGFjaykKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyQXJnc011c3RDaGVja0FyaXR5OworICAg
IAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRyeVBvaW50VHlwZT4oRW50cnlQb2ludFR5cGU6
OlJlZ2lzdGVyQXJnczEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRMb2NhdGlvbiAt
IFJlZ2lzdGVyQXJnczFJblJlZ2lzdGVycykpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJn
dW1lbnRMb2NhdGlvbik7CisgICAgcmV0dXJuIFN0YWNrQXJnc011c3RDaGVja0FyaXR5OworI2Vu
ZGlmCit9CisKK2lubGluZSBUaHVua0VudHJ5UG9pbnRUeXBlIHRodW5rRW50cnlQb2ludFR5cGVG
b3IoQXJndW1lbnRzTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbikKK3sKKyNpZiBOVU1CRVJfT0Zf
SlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgYXJndW1lbnRMb2Nh
dGlvbkluZGV4ID0gc3RkOjptaW4oUmVnaXN0ZXJBcmdzV2l0aEV4dHJhT25TdGFjayAtIDEsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVudExvY2F0aW9uKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGFyZ3VtZW50TG9jYXRpb25JbmRleCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudExvY2F0aW9uKTsKKyAgICByZXR1cm4gU3RhY2tB
cmdzRW50cnk7CisjZW5kaWYKK30KKworaW5saW5lIFRodW5rRW50cnlQb2ludFR5cGUgdGh1bmtF
bnRyeVBvaW50VHlwZUZvcih1bnNpZ25lZCBhcmd1bWVudENvdW50KQoreworI2lmIE5VTUJFUl9P
Rl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBhcmd1bWVudENvdW50ID0gbnVt
YmVyT2ZSZWdpc3RlckFyZ3VtZW50c0Zvcihhcmd1bWVudENvdW50KTsKKyAgICAKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oVGh1bmtFbnRyeVBvaW50VHlwZTo6
UmVnaXN0ZXIxQXJnRW50cnkgKyBhcmd1bWVudENvdW50IC0gMSk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcmd1bWVudENvdW50KTsKKyAgICByZXR1cm4gU3RhY2tBcmdzRW50cnk7CisjZW5k
aWYKK30KKworY2xhc3MgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgeworcHVibGlj
OgorICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIENvZGVQdHI7CisgICAgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgQ29kZVJlZjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZFbnRyeVR5cGVzID0gVGh1bmtFbnRyeVBvaW50VHlwZTo6VGh1bmtFbnRyeVBv
aW50VHlwZUNvdW50OworCisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoKQor
ICAgIHsKKyAgICB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZihDb2Rl
UmVmIGNvZGVSZWYpCisgICAgICAgIDogbV9jb2RlUmVmKGNvZGVSZWYpCisgICAgeworICAgIH0K
KworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvbnN0IEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICAgICAgOiBtX2NvZGVSZWYob3RoZXIu
bV9jb2RlUmVmKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mRW50cnlUeXBlczsgaSsrKQorICAgICAgICAgICAgbV9lbnRyeVBvaW50c1tpXSA9IG90aGVy
Lm1fZW50cnlQb2ludHNbaV07CisgICAgfQorCisgICAgQ29kZVB0ciBlbnRyeUZvcihUaHVua0Vu
dHJ5UG9pbnRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRyeVBvaW50c1t0
eXBlXTsKKyAgICB9CisKKyAgICBDb2RlUHRyIGVudHJ5Rm9yKEFyZ3VtZW50c0xvY2F0aW9uIGFy
Z3VtZW50c0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5Rm9yKHRodW5rRW50
cnlQb2ludFR5cGVGb3IoYXJndW1lbnRzTG9jYXRpb24pKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dEVudHJ5Rm9yKFRodW5rRW50cnlQb2ludFR5cGUgdHlwZSwgQ29kZVB0ciBlbnRyeSkKKyAgICB7
CisgICAgICAgIG1fZW50cnlQb2ludHNbdHlwZV0gPSBlbnRyeTsKKyAgICB9CisKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRW50cnlGb3IoVGh1bmtFbnRyeVBvaW50VHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldG9mKEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNX
aXRoUmVmLCBtX2VudHJ5UG9pbnRzW3R5cGVdKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRW50
cmllcygpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkVudHJ5VHlw
ZXM7IGktLTspCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRzW2ldID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCk7CisgICAgfQorCisgICAgQ29kZVJlZiBjb2RlUmVmKCkgeyByZXR1cm4gbV9jb2Rl
UmVmOyB9CisKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiYgb3BlcmF0b3I9
KGNvbnN0IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIG1fY29kZVJlZiA9IG90aGVyLm1fY29kZVJlZjsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtYmVyT2ZFbnRyeVR5cGVzOyBpLS07KQorICAgICAgICAgICAgbV9lbnRyeVBvaW50
c1tpXSA9IG90aGVyLm1fZW50cnlQb2ludHNbaV07CisgICAgICAgIAorICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCitwcml2YXRlOgorICAgIENvZGVSZWYgbV9jb2RlUmVmOworICAgIENv
ZGVQdHIgbV9lbnRyeVBvaW50c1tudW1iZXJPZkVudHJ5VHlwZXNdOworfTsKKworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDk2NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVDo6Q29kZVJl
ZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmMpCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5
TmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFja2V0
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Njg5
CkBAIC0xMjksNyArMTI5LDkgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElO
YXRpdgogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBHTE9CQUxfVEhV
TktfSUQpOwogCiAgICAgcGF0Y2hCdWZmZXIubGluayhuYXRpdmVDYWxsLCBGdW5jdGlvblB0cihm
dW5jKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiSklUIENUSSBu
YXRpdmUgY2FsbCIpKTsKKyAgICBKSVQ6OkNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsICgiSklUIENUSSBuYXRpdmUgY2FsbCIpKTsKKyAgICAKKyAgICByZXR1cm4g
SklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNv
ZGUoKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVD
VElOYXRpdmVDYWxsKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24pCitKSVRFbnRyeVBvaW50c1dpdGhS
ZWYgSklUOjpwcml2YXRlQ29tcGlsZUpJVEVudHJ5TmF0aXZlQ2FsbChWTSogdm0sIE5hdGl2ZUZ1
bmN0aW9uKQogewotICAgIHJldHVybiB2bS0+Z2V0Q1RJU3R1YihuYXRpdmVDYWxsR2VuZXJhdG9y
KTsKKyAgICByZXR1cm4gdm0tPmdldEpJVEVudHJ5U3R1YihuYXRpdmVDYWxsR2VuZXJhdG9yKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MCwxMCArODkwLDE0IEBAIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxl
ZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNh
bGxlZS0+ZXhlY3V0YWJsZSgpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIsIGNvZGVQdHJGb3JMaW5raW5nOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0
RnVuY3Rpb24oKSkgewotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZv
cihraW5kLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJf
T0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpCisgICAgICAgICAgICBjb2RlUHRyRm9yTGlua2lu
ZyA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNr
QXJpdHkpOworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKTsKIApAQCAtOTE0LDE3ICs5MTgsNDEgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIGNvZGVCbG9jayA9ICpjb2Rl
QmxvY2tTbG90OwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKLSAgICAgICAgaWYgKGV4
ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJn
cygpKQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOworICAg
ICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGU7CisgICAgICAgIHNpemVfdCBjYWxsZXJBcmd1
bWVudENvdW50ID0gZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAg
ICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291
bnQgPCBjYWxsZWVBcmd1bWVudENvdW50IHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpIHsK
KyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgICAg
ICBpZiAoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNJblJlZ2lzdGVycygpKSB7CisgICAgICAgICAg
ICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3Ioa2luZCwgSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlUeXBlRm9yQXJndW1lbnRDb3Vu
dChjYWxsZXJBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb2RlUHRyRm9y
TGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ckZvckxpbmtpbmcgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJBcmdzTXVzdENoZWNrQXJp
dHkpOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFj
a0FyZ3NNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgICh2b2lkKSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5h
cmd1bWVudHNMb2NhdGlvbigpKSk7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgICAgICB9IGVsc2UgaWYgKGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5S
ZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgaWYgKGNhbGxlckFyZ3VtZW50Q291bnQgPT0gY2Fs
bGVlQXJndW1lbnRDb3VudCB8fCBjYWxsZWVBcmd1bWVudENvdW50ID49IE5VTUJFUl9PRl9KU19G
VU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgY29kZVB0ckZvckxp
bmtpbmcgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgUmVnaXN0ZXJB
cmdzQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKGtpbmQsIEpJVEVudHJ5UG9pbnRzOjpyZWdpc3RlckVudHJ5VHlwZUZvckFyZ3VtZW50Q291
bnQoY2FsbGVyQXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIGlmICghY29kZVB0ckZv
ckxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHJGb3JMaW5raW5nID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0
cmFBcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vICBQcmVwb3B1bGF0ZSB0aGUg
ZW50cnkgcG9pbnRzIHRoZSB2aXJ0dWFsIHRodW5rIG1pZ2h0IHVzZS4KKyAgICAgICAgICAgICh2
b2lkKSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlQb2ludFR5
cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisKKyAgICAgICAgICAg
IGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKKyNlbmRpZgorICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVudHJ5VHlwZSA9IFN0YWNrQXJnc0FyaXR5Q2hlY2tO
b3RSZXF1aXJlZDsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlw
b2ludEZvcihraW5kLCBlbnRyeVR5cGUpOwogICAgIH0KICAgICBpZiAoIWNhbGxMaW5rSW5mby0+
c2Vlbk9uY2UoKSkKICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRTZWVuKCk7CiAgICAgZWxzZQot
ICAgICAgICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2Fs
bGVlLCBjb2RlUHRyKTsKKyAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZv
LCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0ckZvckxpbmtpbmcgPyBjb2RlUHRyRm9yTGlua2lu
ZyA6IGNvZGVQdHIpOwogICAgIAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNh
bGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1l
KSk7CiB9CkBAIC05NTksNyArOTg3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rRGlyZWN0Q2EKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1
bmN0aW9uKCkpCi0gICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtp
bmQsIE11c3RDaGVja0FyaXR5KTsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRf
UkVHSVNURVJTCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtp
bmQsIGNhbGxMaW5rSW5mby0+YXJndW1lbnRzSW5SZWdpc3RlcnMoKSA/IFJlZ2lzdGVyQXJnc011
c3RDaGVja0FyaXR5IDogU3RhY2tBcmdzTXVzdENoZWNrQXJpdHkpOworI2Vsc2UKKyAgICBjb2Rl
UHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tB
cml0eSk7CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKTsKIApAQCAtOTcxLDEzICsxMDAzLDI5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25MaW5rRGlyZWN0Q2EKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBB
cml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlOwog
ICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0luZm8tPm1heE51
bUFyZ3VtZW50cygpOwotICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBhcml0
eSA9IE11c3RDaGVja0FyaXR5OworICAgICAgICBzaXplX3QgY29kZUJsb2NrUGFyYW1ldGVyQ291
bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyNp
ZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgICAgIGlmIChj
YWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgbG9naWMgY291bGQgcHJvYmFibHkgYmUgc2ltcGxpZmllZCEKKyAgICAgICAgICAgIGlmIChh
cmd1bWVudFN0YWNrU2xvdHMgPCBjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgICAg
ICAgICBlbnRyeVR5cGUgPSBlbnRyeVBvaW50VHlwZUZvcihjYWxsTGlua0luZm8tPmFyZ3VtZW50
c0xvY2F0aW9uKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRTdGFja1Nsb3RzID4g
TlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykgeworICAgICAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2tQYXJhbWV0ZXJDb3VudCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9B
UkdVTUVOVF9SRUdJU1RFUlMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJlZ2lz
dGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVpcmVk
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZW50cnlUeXBlID0gcmVnaXN0
ZXJFbnRyeVBvaW50VHlwZUZvcihhcmd1bWVudFN0YWNrU2xvdHMpOworICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50KQorI2Vsc2UK
KyAgICAgICAgaWYgKGFyZ3VtZW50U3RhY2tTbG90cyA8IGNvZGVCbG9ja1BhcmFtZXRlckNvdW50
KQorI2VuZGlmCisgICAgICAgICAgICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
a2luZCwgYXJpdHkpOworICAgICAgICAgICAgZW50cnlUeXBlID0gU3RhY2tBcmdzQXJpdHlDaGVj
a05vdFJlcXVpcmVkOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKGtpbmQsIGVudHJ5VHlwZSk7CiAgICAgfQogICAgIAogICAgIGxpbmtEaXJlY3RG
b3IoZXhlYywgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjb2RlUHRyKTsKQEAgLTEwMjAsOCAr
MTA2OCwxNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIGlmIChjYWxsTGlua0luZm8tPmFyZ3VtZW50c0luUmVnaXN0ZXJzKCkpIHsKKyAgICAg
ICAgLy8gUHVsbCBpbnRvIHRoZSBjYWNoZSB0aGUgYXJpdHkgY2hlY2sgcmVnaXN0ZXIgZW50cnkg
aWYgdGhlIGNhbGxlciB3YW50cyBhIHJlZ2lzdGVyIGVudHJ5LgorICAgICAgICAvLyBUaGlzIHdp
bGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB2aXJ0dWFsIGNhbGwgdGh1bmsuCisgICAgICAgICh2
b2lkKSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIFJlZ2lzdGVyQXJnc011c3RDaGVj
a0FyaXR5KTsKKyAgICAgICAgKHZvaWQpIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
ZW50cnlQb2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLT5hcmd1bWVudHNMb2NhdGlvbigpKSk7CisK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICBraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShy
ZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE4ICs0NCwyMiBAQCBKSVRUaHVua3M6On5KSVRUaHVu
a3MoKQogewogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1bmtzOjpjdGlOYXRpdmVD
YWxsKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBKSVRUaHVua3M6OmppdEVudHJ5TmF0
aXZlQ2FsbChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2FuVXNlSklUKCkpCi0gICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKTsKLSAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbEdl
bmVyYXRvcikuY29kZSgpOworICAgIGlmICghdm0tPmNhblVzZUpJVCgpKSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBuYXRpdmVDYWxsU3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpOworICAg
ICAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKG5hdGl2ZUNhbGxTdHViKSwgbmF0aXZlQ2FsbFN0dWIs
IG5hdGl2ZUNhbGxTdHViKTsKKyAgICB9CisgICAgcmV0dXJuIGppdEVudHJ5U3R1Yih2bSwgbmF0
aXZlQ2FsbEdlbmVyYXRvcik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0ciBKSVRUaHVua3M6
OmN0aU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1
bmtzOjpqaXRFbnRyeU5hdGl2ZUNvbnN0cnVjdChWTSogdm0pCiB7Ci0gICAgaWYgKCF2bS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpOwotICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICBpZiAo
IXZtLT5jYW5Vc2VKSVQoKSkgeworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmF0aXZl
Q29uc3RydWN0U3R1YiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRy
KGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBKSVRF
bnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYobmF0aXZlQ29uc3RydWN0U3R1YiksIG5hdGl2ZUNvbnN0cnVjdFN0dWIsIG5hdGl2
ZUNvbnN0cnVjdFN0dWIpOworICAgIH0KKyAgICByZXR1cm4gaml0RW50cnlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgSklUVGh1
bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSogdm0pCkBAIC04Miw2ICs4NiwzMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAorSklURW50cnlQb2ludHNXaXRoUmVmIEpJVFRodW5rczo6aml0RW50
cnlTdHViKFZNKiB2bSwgSklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgSklURW50cnlTdHViTWFwOjpBZGRSZXN1bHQgZW50
cnkgPSBtX2ppdEVudHJ5U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgLy8gQ29tcGlsYXRp
b24gdGhyZWFkIGNhbiBvbmx5IHJldHJpZXZlIGV4aXN0aW5nIGVudHJpZXMuCisgICAgICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZh
bHVlID0gZ2VuZXJhdG9yKHZtKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgSklUVGh1bmtzOjpq
aXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qIHZtLCBKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvciBn
ZW5lcmF0b3IpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBKSVRDYWxs
VGh1bmtFbnRyeVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1faml0Q2FsbFRodW5rRW50cnlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKCkp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CisgICAgICAgIC8vIENvbXBpbGF0aW9uIHRo
cmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgorICAgICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9
IGdlbmVyYXRvcih2bSk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7
Cit9CisKIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIHsKICAgICBhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtOTMsNyArMTIxLDcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50cmluc2ljLCBu
dWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklU
RW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKQEAgLTEwMywxOSArMTMxLDE5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW8KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDYWxsOwogICAgIGlmIChnZW5l
cmF0b3IpIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGVudHJ5ID0gZ2VuZXJhdG9y
KHZtKTsKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5
LCBlbnRyeS5jb2RlKCksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICAgICAgSklURW50
cnlQb2ludHNXaXRoUmVmIGVudHJ5ID0gZ2VuZXJhdG9yKHZtKTsKKyAgICAgICAgZm9yQ2FsbCA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5r
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKEpJVDo6Y29tcGlsZU5hdGl2ZUNhbGxFbnRyeVBvaW50cyh2bSwgZnVuY3Rpb24pLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0
cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKGppdEVudHJ5TmF0aXZlQ29uc3RydWN0KHZtKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2
ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5j
dGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxl
KGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0
aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SklURW50cnlHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9u
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51
bGxwdHIsIG5hbWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
CShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkpJVEVudHJ5UG9pbnRzLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCkBAIC01MiwxNiArNTMsMTggQEAgcHVibGljOgog
ICAgIEpJVFRodW5rcygpOwogICAgIHZpcnR1YWwgfkpJVFRodW5rcygpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNhbGwoVk0qKTsKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY3RpTmF0aXZlQ29uc3RydWN0KFZNKik7CisgICAgSklURW50cnlQb2ludHNXaXRoUmVm
IGppdEVudHJ5TmF0aXZlQ2FsbChWTSopOworICAgIEpJVEVudHJ5UG9pbnRzV2l0aFJlZiBqaXRF
bnRyeU5hdGl2ZUNvbnN0cnVjdChWTSopOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlO
YXRpdmVUYWlsQ2FsbChWTSopOyAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0
aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNKik7ICAgIAogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CisgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmIGppdEVudHJ5U3R1YihWTSosIEpJVEVudHJ5R2VuZXJhdG9yKTsKKyAgICBKSVRK
U0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiBqaXRDYWxsVGh1bmtFbnRyeVN0dWIoVk0qLCBK
SVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5j
dGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSos
IE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSklURW50cnlHZW5l
cmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRp
dmVGdW5jdGlvbiwgSklURW50cnlHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCkBAIC03MCw2ICs3
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRv
ciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9j
dGlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRFbnRyeUdlbmVyYXRvciwgSklURW50
cnlQb2ludHNXaXRoUmVmPiBKSVRFbnRyeVN0dWJNYXA7CisgICAgSklURW50cnlTdHViTWFwIG1f
aml0RW50cnlTdHViTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxKSVRDYWxsVGh1bmtFbnRyeUdl
bmVyYXRvciwgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWY+IEpJVENhbGxUaHVua0Vu
dHJ5U3R1Yk1hcDsKKyAgICBKSVRDYWxsVGh1bmtFbnRyeVN0dWJNYXAgbV9qaXRDYWxsVGh1bmtF
bnRyeVN0dWJNYXA7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8TmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uLCBTdHJpbmc+IEhvc3RGdW5jdGlvbktleTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjA5NjUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51bWJlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQp
OworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQzMihSZWdpc3RlcklEIHJlZyk7CiAgICAg
ICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKICNl
bmRpZgogCkBAIC0xNjMsMTIgKzE2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CiAgICAgfQog
ICAgIAorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdEludDMyKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgZHN0KTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g2NChCZWxvdywgZHN0LCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBlbWl0SnVtcElmTm90SW50
MzIoZHN0KTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBG
UFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojphcmd1bWVu
dFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudEluZGV4ID0gMDsgYXJndW1lbnRJbmRleCA8
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7IGFyZ3VtZW50SW5kZXgrKykgeworICAgICAg
ICBHUFJSZWcgYXJndW1lbnRSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yKGFyZ3VtZW50SW5kZXgp
OworCisgICAgICAgIGlmIChhcmd1bWVudFJlZyAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldChhcmd1bWVudFJlZyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygpOwogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBz
dGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudFJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMg
dXNlZCB0byBwYXNzIGFyZ3VtZW50cyB3aGVuIG1ha2luZyBKUyBDYWxscwogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lz
dGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5
IHRoZSBERkcgSklULgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMjEgKzU0MCwyMSBAQCB2b2lkIHJlcGF0Y2hJbigKICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25Jbik7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNKiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgdGh1
bmtFbnRyeVBvaW50cykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVJl
Zi5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKSwgQ29kZUxvY2F0aW9uTGFiZWwodGh1bmtFbnRyeVBv
aW50cy5lbnRyeUZvcihjYWxsTGlua0luZm8uYXJndW1lbnRzTG9jYXRpb24oKSkpKTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgSklUQ2FsbFRodW5rRW50cnlHZW5lcmF0
b3IgZ2VuZXJhdG9yKQogewotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIHZtLT5n
ZXRDVElTdHViKGdlbmVyYXRvcikpOworICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8s
IHZtLT5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIoZ2VuZXJhdG9yKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICBKSVRKU0NhbGxUaHVua0VudHJ5UG9pbnRzV2l0aFJlZiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLmNvZGVSZWYoKSwgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9
CiAKIHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBj
YWxsZWUpCkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBsaW5rU2xvd0ZvcigKICAgICBsaW5rU2xv
d0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSog
dm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29k
ZVJlZikKK3N0YXRpYyB2b2lkIHJldmVydENhbGwoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbywgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY29kZVJlZikKIHsKICAg
ICBpZiAoY2FsbExpbmtJbmZvLmlzRGlyZWN0KCkpIHsKICAgICAgICAgY2FsbExpbmtJbmZvLmNs
ZWFyQ29kZUJsb2NrKCk7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0mIHZt
LCBDYWxsTGlua0luZm8mIGNhbAogICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkK
ICAgICAgICAgZGF0YUxvZygiVW5saW5raW5nIGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLmhvdFBh
dGhPdGhlcigpLCAiXG4iKTsKICAgICAKLSAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZv
LCB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKTsKKyAgICByZXZlcnRDYWxs
KCZ2bSwgY2FsbExpbmtJbmZvLCB2bS5nZXRKSVRDYWxsVGh1bmtFbnRyeVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcikpOwogfQogCiB2b2lkIGxpbmtWaXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhl
YywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCkBAIC02ODMsOSArNjgzLDkgQEAgdm9pZCBs
aW5rVmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbAogICAgIGlmIChzaG91bGREdW1wRGlz
YXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAgZGF0YUxvZygiTGlua2luZyB2
aXJ0dWFsIGNhbGwgYXQgIiwgKmNhbGxlckNvZGVCbG9jaywgIiAiLCBjYWxsZXJGcmFtZS0+Y29k
ZU9yaWdpbigpLCAiXG4iKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1
bmsgPSB2aXJ0dWFsVGh1bmtGb3IoJnZtLCBjYWxsTGlua0luZm8pOworICAgIEpJVEpTQ2FsbFRo
dW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcigmdm0s
IGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5rSW5mbywgdmlydHVh
bFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRp
bmUodmlydHVhbFRodW5rLCB2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIGNhbGxMaW5rSW5mby5z
ZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmsuY29kZVJlZigpLCB2
bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtNzQwLDYgKzc0MCw3IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgY2FsbExpbmtJbmZvLnNldEhhc1Nl
ZW5DbG9zdXJlKCk7CiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxD
YXNlczsKKyAgICBzaXplX3QgY2FsbGVyQXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNl
cyBhcmUuCiAgICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtNzUxLDcg
Kzc1Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIGNvZGVCbG9j
ayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9y
Q2FsbCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgZWl0
aGVyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIENvZGVCbG9jayBvciBiZWNhdXNlIGFyaXR5IG1p
c21hdGNoLAogICAgICAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMg
d2hvbGUgdGhpbmcgdG8gYmUgYSB2aXJ0dWFsIGNhbGwuCi0gICAgICAgICAgICBpZiAoIWNvZGVC
bG9jayB8fCBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmlzVmFy
YXJncygpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBjYWxsZXJBcmd1bWVudENv
dW50IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwg
Y2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxG
b3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CkBAIC03NzUsNyArNzc2LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAg
ICB9CiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2Fs
bExpbmtJbmZvLmNhbGxlZUdQUigpKTsKLSAgICAKKworICAgIGlmIChjYWxsTGlua0luZm8uYXJn
dW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBhcmd1bWVu
dFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoJnZtLCBj
YWxsZXJDb2RlQmxvY2spOwogICAgIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd1Bh
dGg7CkBAIC03OTcsNiArODAxLDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUjsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAg
ICAgICBzY3JhdGNoR1BSID0gZnJhbWVTaHVmZmxlci0+YWNxdWlyZUdQUigpOworICAgICAgICBl
bHNlIGlmIChjYWxsTGlua0luZm8uYXJndW1lbnRzSW5SZWdpc3RlcnMoKSkKKyAgICAgICAgICAg
IHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIwOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxl
ZUdQUik7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBmdW5jdGlvbiBhbmQgc3Rh
c2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KQEAgLTg2MiwxMyArODY4LDIzIEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBHUFJSZWcgZmFzdENvdW50c0Jhc2VHUFI7CiAg
ICAgaWYgKGZyYW1lU2h1ZmZsZXIpCiAgICAgICAgIGZhc3RDb3VudHNCYXNlR1BSID0gZnJhbWVT
aHVmZmxlci0+YWNxdWlyZUdQUigpOworICAgIGVsc2UgaWYgKGNhbGxMaW5rSW5mby5hcmd1bWVu
dHNJblJlZ2lzdGVycygpKQorI2lmIENQVShBUk02NCkKKyAgICAgICAgZmFzdENvdW50c0Jhc2VH
UFIgPSBHUFJJbmZvOjpub25BcmdHUFIxOworI2Vsc2UKKyAgICAgICAgZmFzdENvdW50c0Jhc2VH
UFIgPSBHUFJJbmZvOjpyZWdUMDsKKyNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBmYXN0Q291
bnRzQmFzZUdQUiA9CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hH
UFIoY2FsbGVlR1BSLCBjb21wYXJpc29uVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QzKTsKICAgICB9
Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihmYXN0Q291bnRz
LmdldCgpKSwgZmFzdENvdW50c0Jhc2VHUFIpOworICAgIGlmIChmYXN0Q291bnRzKQorICAgICAg
ICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0
KCkpLCBmYXN0Q291bnRzQmFzZUdQUik7CiAgICAgaWYgKCFmcmFtZVNodWZmbGVyICYmIGNhbGxM
aW5rSW5mby5pc1RhaWxDYWxsKCkpCiAgICAgICAgIHN0dWJKaXQuZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOworCisgICAgaW5jcmVtZW50Q291bnRlcigmc3R1YkppdCwgVk06OlBvbHltb3JwaGlj
Q2FsbCk7CisKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25WYWx1ZUdQ
UiwgY2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkp
IHsKQEAgLTg3Nyw4ICs4OTMsMzIgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAg
ICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFudCgpOwog
ICAgICAgICAKICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2Rl
Rm9yQ2FsbCgpKTsKKworICAgICAgICBFbnRyeVBvaW50VHlwZSBlbnRyeVR5cGUgPSBTdGFja0Fy
Z3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisjaWYgTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VN
RU5UX1JFR0lTVEVSUworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0luUmVnaXN0
ZXJzKCkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbENhc2VzW2Nh
c2VJbmRleF0uY29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrKSB7CisgICAg
ICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2Fs
bGVlQXJndW1lbnRDb3VudCA9PSBjYWxsZXJBcmd1bWVudENvdW50IHx8IGNhbGxlZUFyZ3VtZW50
Q291bnQgPj0gTlVNQkVSX09GX0pTX0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUykKKyAgICAg
ICAgICAgICAgICAgICAgZW50cnlUeXBlID0gUmVnaXN0ZXJBcmdzQXJpdHlDaGVja05vdFJlcXVp
cmVkOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBFbnRyeVBv
aW50VHlwZSBlbnRyeUZvckFyZ0NvdW50ID0gSklURW50cnlQb2ludHM6OnJlZ2lzdGVyRW50cnlU
eXBlRm9yQXJndW1lbnRDb3VudChjYWxsZXJBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFk
ZHJlc3NGb3JDYWxsKGVudHJ5Rm9yQXJnQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Y29kZVB0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IGVudHJ5Rm9yQXJn
Q291bnQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVudHJ5VHlwZSA9IFJlZ2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVudHJ5VHlwZSA9IFJl
Z2lzdGVyQXJnc1Bvc3NpYmxlRXh0cmFBcmdzOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9Ci0gICAgICAgICAgICB2YXJpYW50LmV4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJp
dHlDaGVja05vdFJlcXVpcmVkKTsKKyAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChlbnRyeVR5cGUpOworICAg
ICAgICBBU1NFUlQoY29kZVB0cik7CiAgICAgICAgIAogICAgICAgICBpZiAoZmFzdENvdW50cykg
ewogICAgICAgICAgICAgc3R1YkppdC5hZGQzMigKQEAgLTg4Niw3ICs5MjYsNyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGZhc3RDb3VudHNCYXNlR1BSLCBjYXNlSW5kZXggKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKLSAgICAgICAgICAgIENhbGxGcmFt
ZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90KCkpLnByZXBhcmVGb3JU
YWlsQ2FsbCgpOworICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVT
aHVmZmxlci0+c25hcHNob3QoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKS5wcmVw
YXJlRm9yVGFpbENhbGwoKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0
dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlz
VGFpbENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93
KCk7CkBAIC05MDcsMTkgKzk0NywxOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2FsbGVlSlNWYWx1
ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKSk7CiAjZWxz
ZQotICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xv
Y2F0aW9uKCkgPT0gU3RhY2tBcmdzKQorICAgICAgICAgICAgZnJhbWVTaHVmZmxlci0+c2V0Q2Fs
bGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoYXJndW1lbnRSZWdpc3RlckZvckNhbGxlZSgpKSk7
CiAjZW5kaWYKICAgICAgICAgZnJhbWVTaHVmZmxlci0+cHJlcGFyZUZvclNsb3dQYXRoKCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVn
VDApOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHN0dWJKaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOwog
I2VuZGlmCiAgICAgfQotICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJmNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBzdHViSml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24o
KS5leGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6cmVnVDQpOwotICAgIAotICAgIHN0dWJK
aXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6cmVnVDQpOworICAg
IHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIxKTsKKyAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUklu
Zm86Om5vbkFyZ0dQUjEpOworCisgICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cigmY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQXNzZW1i
bHlIZWxwZXJzOjpKdW1wIHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcih2bSwgc3R1YkppdCwgb3duZXIsIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CkBAIC05NDAsNyArOTgwLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24oKS5sYWJlbEF0T2Zmc2V0KDApKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoZG9uZSwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpLmxhYmVsQXRPZmZzZXQoMCkpOwot
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1
YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNo
QnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0SklUQ2FsbFRodW5rRW50
cnlTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuZW50cnlGb3IoY2FsbExp
bmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSk7CiAgICAgCiAgICAgYXV0byBzdHViUm91dGlu
ZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJ
TkFMSVpFX0NPREVfRk9SKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFs
aXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
cGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUg
IkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
SW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMzcsMTggKzM4LDQz
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJs
aWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0s
IGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICBlbnVtIEFyZ0xvY2F0aW9uIHsgT25TdGFj
aywgSW5SZWdpc3RlcnMgfTsKKworICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwg
aW50IGV4cGVjdGVkQXJnQ291bnQsIEFzc2VtYmx5SGVscGVyczo6U3BpbGxSZWdpc3RlclR5cGUg
c3BpbGxUeXBlID0gQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIEFyZ0xvY2F0aW9uIGFy
Z0xvY2F0aW9uID0gT25TdGFjaykKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgICAg
ICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwotICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291
bnQgKyAxKSkpOworI2lmICFOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJT
CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oc3BpbGxUeXBlKTsKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShhcmdMb2NhdGlvbik7CisjZWxzZQorICAgICAgICAgICAgaWYgKGFyZ0xvY2F0aW9u
ID09IEluUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9zdGFja0FyZ3VtZW50c0VudHJ5
ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICBmaWxsQXJndW1lbnRSZWdpc3RlcnNGcm9tRnJh
bWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJBcmd1bWVudHNF
bnRyeSA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsK
KyAgICAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVy
IG9mIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMy
KE5vdEVxdWFsLCBhcmd1bWVudFJlZ2lzdGVyRm9yQXJndW1lbnRDb3VudCgpLCBUcnVzdGVkSW1t
MzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoZXhw
ZWN0ZWRBcmdDb3VudCArIDEsIHNwaWxsVHlwZSk7CisgICAgICAgICAgICAgICAgbV9zdGFja0Fy
Z3VtZW50c0VudHJ5ID0gbGFiZWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVU
YWdSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhl
IGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworI2lmIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAgICAgICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6
ZWRUaHVua0pJVChWTSogdm0pCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAg
ICAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHNwaWxsQXJndW1lbnRSZWdp
c3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIG1fc3RhY2tBcmd1bWVu
dHNFbnRyeSA9IExhYmVsKCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygp
OwogICAgICAgICB9CkBAIC05NCwxMSArMTIwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgbG9hZEludDMyQXJndW1lbnQoYXJndW1lbnQsIGRzdCwgY29udmVyc2lvbkZhaWxlZCk7
CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChjb252ZXJzaW9uRmFpbGVkKTsKICAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgY2hlY2tKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgUmVnaXN0
ZXJJRCBhcmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQo
ZW1pdEp1bXBJZk5vdEpTQ2VsbChhcmd1bWVudCkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5h
cHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLAorICAgICAgICAgICAgICAgIEFkZHJlc3Mo
YXJndW1lbnQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
dm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgYXBwZW5kRmFpbHVyZShjb25zdCBKdW1wJiBmYWlsdXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJlKTsKICAgICAgICAgfQorCisgICAgICAg
IHZvaWQgbGlua0ZhaWx1cmVIZXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9mYWlsdXJl
cy5saW5rKHRoaXMpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5jbGVhcigpOworICAgICAgICB9
CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICB2b2lkIHJldHVybkpTVmFsdWUoUmVnaXN0
ZXJJRCBzcmMpCiAgICAgICAgIHsKQEAgLTE2NCwxMyArMjA1LDI5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ss
IGNvbnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmIGZp
bmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtL
aW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3Zt
LCAqdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
bV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAg
ICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQp
OwotICAgICAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lh
bGl6ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKSk7CisKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBzdGFja0VudHJ5OworICAgICAgICAgICAgaWYgKG1fc3RhY2tBcmd1bWVu
dHNFbnRyeS5pc1NldCgpKQorICAgICAgICAgICAgICAgIHN0YWNrRW50cnkgPSBwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mKG1fc3RhY2tBcmd1bWVudHNFbnRyeSk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVnaXN0ZXJFbnRyeTsKKyAgICAgICAgICAgIGlmIChtX3JlZ2lzdGVy
QXJndW1lbnRzRW50cnkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3RlckVudHJ5ID0g
cGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX3JlZ2lzdGVyQXJndW1lbnRzRW50cnkpOworCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZW50cnkgPSBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOworCisgICAg
ICAgICAgICBpZiAobV9zdGFja0FyZ3VtZW50c0VudHJ5LmlzU2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9yZWdpc3RlckFyZ3VtZW50c0VudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIHJlZ2lzdGVyRW50cnks
IHJlZ2lzdGVyRW50cnksIHJlZ2lzdGVyRW50cnksIHN0YWNrRW50cnksIHN0YWNrRW50cnkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoZW50cnksIGVudHJ5
LmNvZGUoKSwgZW50cnkuY29kZSgpLCBlbnRyeS5jb2RlKCksIHN0YWNrRW50cnksIHN0YWNrRW50
cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gSklURW50cnlQb2ludHNX
aXRoUmVmKGVudHJ5LCBlbnRyeS5jb2RlKCksIGVudHJ5LmNvZGUoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0
ZXIwIGFzIHRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjA3LDYgKzI2NCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgbV9mYWlsdXJlczsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fcmVnaXN0ZXJB
cmd1bWVudHNFbnRyeTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhY2tBcmd1
bWVudHNFbnRyeTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4+
IG1fY2FsbHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMiBAQAog
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsK
K2NsYXNzIEpJVEVudHJ5UG9pbnRzV2l0aFJlZjsKK2NsYXNzIEpJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmOwogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiAoKlRodW5rR2Vu
ZXJhdG9yKShWTSopOwordHlwZWRlZiBKSVRFbnRyeVBvaW50c1dpdGhSZWYgKCpKSVRFbnRyeUdl
bmVyYXRvcikoVk0qKTsKK3R5cGVkZWYgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYg
KCpKSVRDYWxsVGh1bmtFbnRyeUdlbmVyYXRvcikoVk0qKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjMgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5r
IikpOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnko
Q0NhbGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbnRyeVBvaW50c1tUaHVu
a0VudHJ5UG9pbnRUeXBlQ291bnRdKQoreworI2lmIE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdV
TUVOVF9SRUdJU1RFUlMKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUzsgYXJnSW5kZXgtLSA+IDA7KSB7CisgICAgICAg
IGVudHJ5UG9pbnRzW3RodW5rRW50cnlQb2ludFR5cGVGb3IoYXJnSW5kZXggKyAxKV0gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgaml0LmVtaXRQdXRBcmd1bWVudFRvQ2FsbEZyYW1lQmVmb3JlUHJv
bG9ndWUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoYXJnSW5kZXgpLCBhcmdJ
bmRleCk7CisgICAgfQorCisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVBy
b2xvZ3VlKGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoYXJndW1l
bnRSZWdpc3RlckZvckFyZ3VtZW50Q291bnQoKSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShqaXQpOworICAgIFVOVVNFRF9QQVJBTShlbnRy
eVBvaW50cyk7CisjZW5kaWYKKyAgICBlbnRyeVBvaW50c1tTdGFja0FyZ3NdID0gaml0LmxhYmVs
KCk7Cit9CisKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIENDYWxsSGVscGVycyYgaml0
LCBWTSogdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VDbGkgc2xvd1BhdGhGdW5jdGlvbikKIHsKQEAg
LTg4LDcgKzEwNSw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIC8vIE1vdmluZyB0
aGUgc3RhY2sgZG93biBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCBieXRlcyBnaXZlcyB1
cyByb29tIGZvciBvdXIgMyBhcmd1bWVudHMKICAgICAvLyBhbmQgc3BhY2UgZm9yIHRoZSAxNiBi
eXRlIHJldHVybiBhcmVhLgogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDMyKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoYml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOwpAQCAtMTAwLDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogI2Vs
c2UKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzbG93UGF0
aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRh
dGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjApOwpAQCAtMTI3LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAog
ICAgIGppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlNDYWxsVGh1bmtF
bnRyeVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAg
Ly8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBvciBpbiB0aGUgbGluayByZWdp
c3Rlci4gV2Ugd2lsbCBoZW5jZQogICAgIC8vIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRo
ZSBjYWxsIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rpb24gY2FsbApAQCAtMTM1LDQ1
ICsxNTIsMTUzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXIKICAg
ICAvLyB0byBiZSBpbiByZWdUMC9yZWdUMSAocGF5bG9hZC90YWcpLCB0aGUgQ2FsbEZyYW1lIHRv
IGhhdmUgYWxyZWFkeQogICAgIC8vIGJlZW4gYWRqdXN0ZWQsIGFuZCBhbGwgb3RoZXIgcmVnaXN0
ZXJzIHRvIGJlIGF2YWlsYWJsZSBmb3IgdXNlLgogICAgIENDYWxsSGVscGVycyBqaXQodm0pOwot
ICAgIAorCisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGVudHJ5UG9pbnRzW1RodW5rRW50cnlQ
b2ludFR5cGVDb3VudF07CisKKyAgICBjcmVhdGVSZWdpc3RlckFyZ3VtZW50c1NwaWxsRW50cnko
aml0LCBlbnRyeVBvaW50cyk7CiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlu
a0NhbGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JB
TF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGlu
ayBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29k
ZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1
bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgY2FsbEVudHJ5UG9p
bnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZik7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGVudHJ5SW5kZXggPSBTdGFja0FyZ3M7IGVudHJ5SW5kZXggPCAgVGh1bmtF
bnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4KyspIHsKKyAgICAgICAgY2FsbEVudHJ5UG9p
bnRzLnNldEVudHJ5Rm9yKHN0YXRpY19jYXN0PFRodW5rRW50cnlQb2ludFR5cGU+KGVudHJ5SW5k
ZXgpLAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZihlbnRyeVBvaW50c1tlbnRy
eUluZGV4XSkpOworICAgIH0KKworICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7Cit9CisKK0pJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGxpbmtEaXJlY3RDYWxsVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQoreworICAgIC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2sg
b3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKKyAgICAvLyBzYXZlIHRoZSBy
ZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZSBtYWtlIGEgQysrIGZ1bmN0
aW9uIGNhbGwKKyAgICAvLyB0byBwZXJmb3JtIGxpbmtpbmcgYW5kIGxhenkgY29tcGlsYXRpb24g
aWYgbmVjZXNzYXJ5LiBXZSBleHBlY3QgdGhlIENhbGxMaW5rSW5mbworICAgIC8vIHRvIGJlIGlu
IEdQUkluZm86Om5vbkFyZ0dQUjAsIHRoZSBjYWxsZWUgdG8gYmUgaW4gYXJndW1lbnRSZWdpc3Rl
ckZvckNhbGxlZSgpLAorICAgIC8vIHRoZSBDYWxsRnJhbWUgdG8gaGF2ZSBhbHJlYWR5IGJlZW4g
YWRqdXN0ZWQsIGFuZCBhcmd1bWVudHMgaW4gYXJndW1lbnQgcmVnaXN0ZXJzCisgICAgLy8gYW5k
L29yIGluIHRoZSBzdGFjayBhcyBhcHByb3ByaWF0ZS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0KHZt
KTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRy
eVBvaW50VHlwZUNvdW50XTsKKworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRy
eShqaXQsIGVudHJ5UG9pbnRzKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjpub25BcmdHUFIxKTsgLy8gU2F2ZSBjYWxsZWUncyBmcmFtZSBwb2lu
dGVyCisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgaml0LnN0b3JlUHRyKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CisKKyAgICBpZiAo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
KEdQUkluZm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZ3VtZW50UmVnaXN0
ZXJGb3JDYWxsZWUoKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaWYgKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CisKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlLCBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCkpOworICAgIEdQ
UlJlZyBhcmdDb3VudFJlZyA9IGFyZ3VtZW50UmVnaXN0ZXJGb3JBcmd1bWVudENvdW50KCk7Cisg
ICAgaml0LmVtaXRHZXRQYXlsb2FkRnJvbUNhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGFyZ0NvdW50UmVnKTsKKworICAgIC8vIGxvYWQg
InRoaXMiCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lQXJndW1lbnRCZWZvcmVQcm9sb2d1
ZSgwLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgwKSk7CisKKyAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgZmlsbFVuZGVmaW5lZFtOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1F
TlRfUkVHSVNURVJTXTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsgYXJn
SW5kZXggPCBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTOyBhcmdJbmRl
eCsrKSB7CisgICAgICAgIGZpbGxVbmRlZmluZWRbYXJnSW5kZXhdID0gaml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIGFyZ0NvdW50UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKGFyZ0luZGV4KSk7CisgICAgICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFt
ZUFyZ3VtZW50QmVmb3JlUHJvbG9ndWUoYXJnSW5kZXgsIGFyZ3VtZW50UmVnaXN0ZXJGb3JGdW5j
dGlvbkFyZ3VtZW50KGFyZ0luZGV4KSk7CisgICAgfQorCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGRvbmVGaWxsaW5nID0gaml0Lmp1bXAoKTsKKworICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXgg
PSAxOyBhcmdJbmRleCA8IE5VTUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlM7
IGFyZ0luZGV4KyspIHsKKyAgICAgICAgZmlsbFVuZGVmaW5lZFthcmdJbmRleF0ubGluaygmaml0
KTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1l
bnQoYXJnSW5kZXgpKTsKKyAgICB9CisKKyAgICBkb25lRmlsbGluZy5saW5rKCZqaXQpOworI2Vu
ZGlmCisKKworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVS
ZWYgRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGRpcmVjdCBjYWxsIHRodW5rIikp
OworICAgIEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9
IEpJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgZW50cnlJbmRleCA9IFN0YWNrQXJnczsgZW50cnlJbmRleCA8ICBUaHVua0Vu
dHJ5UG9pbnRUeXBlQ291bnQ7IGVudHJ5SW5kZXgrKykgeworICAgICAgICBjYWxsRW50cnlQb2lu
dHMuc2V0RW50cnlGb3Ioc3RhdGljX2Nhc3Q8VGh1bmtFbnRyeVBvaW50VHlwZT4oZW50cnlJbmRl
eCksCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGVudHJ5UG9pbnRzW2VudHJ5
SW5kZXhdKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAK
IC8vIEZvciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2lu
Y2UgaWYgeW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgogLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0
aGVuIHlvdSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklUSlND
YWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0KHZtKTsKICAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgZW50cnlQb2ludHNbVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50XTsK
KworICAgIGNyZWF0ZVJlZ2lzdGVyQXJndW1lbnRzU3BpbGxFbnRyeShqaXQsIGVudHJ5UG9pbnRz
KTsKKwogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0Nh
bGwpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9U
SFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBw
b2x5bW9ycGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBo
aWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50
c1dpdGhSZWYgY2FsbEVudHJ5UG9pbnRzID0gSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhS
ZWYoY29kZVJlZik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gU3RhY2tB
cmdzOyBlbnRyeUluZGV4IDwgIFRodW5rRW50cnlQb2ludFR5cGVDb3VudDsgZW50cnlJbmRleCsr
KSB7CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVu
a0VudHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2YoZW50cnlQb2ludHNbZW50cnlJbmRleF0pKTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGNhbGxFbnRyeVBvaW50czsKIH0KIAogLy8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWVnYW1vcnBoaWMgdmlydHVhbCBjYWxsIHZzLiBhIHNsb3cKIC8vIHBhdGgg
dmlydHVhbCBjYWxsIHNvIHRoYXQgd2UgY2FuIGVuYWJsZSBmYXN0IHRhaWwgY2FsbHMgZm9yIG1l
Z2Ftb3JwaGljCiAvLyB2aXJ0dWFsIGNhbGxzIGJ5IHVzaW5nIHRoZSBzaHVmZmxlci4KIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MzEKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbykKK0pJVEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihW
TSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAgIC8vIFRoZSBjYWxsZWUg
aXMgaW4gcmVnVDAgKGZvciBKU1ZBTFVFMzJfNjQsIHRoZSB0YWcgaXMgaW4gcmVnVDEpLgotICAg
IC8vIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBvbiB0aGUgc3RhY2ssIG9yIGluIHRoZSBsaW5rIHJl
Z2lzdGVyLiBXZSB3aWxsIGhlbmNlCi0gICAgLy8ganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZl
IHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZQotICAgIC8vIG1h
a2UgYSBDKysgZnVuY3Rpb24gY2FsbCB0byB0aGUgYXBwcm9wcmlhdGUgSklUIG9wZXJhdGlvbi4K
KyAgICAvLyBUaGUgY2FsbGVlIGlzIGluIGFyZ3VtZW50UmVnaXN0ZXJGb3JDYWxsZWUoKSAoZm9y
IEpTVkFMVUUzMl82NCwgaXQgaXMgaW4gcmVnVDE6cmVnVDApLgorICAgIC8vIFRoZSBDYWxsTGlu
a0luZm8gaXMgaW4gR1BSSW5mbzo6bm9uQXJnR1BSMC4KKyAgICAvLyBUaGUgcmV0dXJuIGFkZHJl
c3MgaXMgb24gdGhlIHN0YWNrLCBvciBpbiB0aGUgbGluayByZWdpc3Rlci4KKyAgICAvLy8gV2Ug
d2lsbCBoZW5jZSBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNz
IHRvIHRoZSBjYWxsCisgICAgLy8gZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBj
YWxsIHRvIHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgogCiAgICAgQ0NhbGxIZWxwZXJz
IGppdCh2bSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAg
ICAKLSAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRoIGV4ZWN1dGlvbiwgYW5kIHJlZ1QyIGNvbnRh
aW5zIHRoZSBDYWxsTGlua0luZm8uIENvdW50IHRoZQotICAgIC8vIHNsb3cgcGF0aCBleGVjdXRp
b24gZm9yIHRoZSBwcm9maWxlci4KKworICAgIEdQUlJlZyBjYWxsZWVSZWcgPSBhcmd1bWVudFJl
Z2lzdGVyRm9yQ2FsbGVlKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJSZWcgY2Fs
bGVlVGFnUmVnID0gR1BSSW5mbzo6cmVnVDE7CisjZW5kaWYKKyAgICBHUFJSZWcgdGFyZ2V0UmVn
ID0gR1BSSW5mbzo6bm9uQXJnR1BSMTsKKyAgICAvLyBUaGlzIGlzIHRoZSBDYWxsTGlua0luZm8q
IG9uIGVudHJ5IGFuZCB1c2VkIGxhdGVyIGFzIGEgdGVtcC4KKyAgICBHUFJSZWcgY2FsbExpbmtJ
bmZvQW5kVGVtcFJlZyA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisKKyAgICBqaXQuZmlsbEFyZ3Vt
ZW50UmVnaXN0ZXJzRnJvbUZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworI2lmIE5VTUJFUl9PRl9K
U19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cmVnaXN0ZXJFbnRyeSA9IGppdC5sYWJlbCgpOworI2VuZGlmCisKKyAgICBpbmNyZW1lbnRDb3Vu
dGVyKCZqaXQsIFZNOjpWaXJ0dWFsQ2FsbCk7CisKKyAgICAvLyBUaGlzIGlzIGEgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4gQ291bnQgdGhlIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxl
ci4KICAgICBqaXQuYWRkMzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENhbGxMaW5r
SW5mbzo6b2Zmc2V0T2ZTbG93UGF0aENvdW50KCkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93
UGF0aENvdW50KCkpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZv
ciBlbGltaW5hdGluZyB0aGVzZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERG
RyBrbm93cyB0aGF0IHRoZSB2YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVs
eSBhIGZ1bmN0aW9uLgpAQCAtMTgxLDU0ICszMDYsNjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxUaHVua0ZvcihWTQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgc2xvd0Nhc2UuYXBw
ZW5kKAogICAgICAgICBqaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Cisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZVJlZywgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSk7CiAjZWxzZQogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0
LmJyYW5jaDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6
cmVnVDEsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVUYWdSZWcs
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOwogI2VuZGlmCi0gICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BS
SW5mbzo6cmVnVDAsIEpTRnVuY3Rpb25UeXBlKSk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5i
cmFuY2hJZk5vdFR5cGUoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uVHlwZSkpOwogICAgIAogICAgIC8v
IE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogICAgIAogICAgIGppdC5sb2FkUHRy
KAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rp
b246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGUoKSksCisgICAgICAgIHRhcmdldFJlZyk7CiAgICAgaml0LmxvYWRQdHIoCiAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0
LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCi0gICAgICAg
IEdQUkluZm86OnJlZ1Q0KTsKLSAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOworICAgICAgICAgICAgdGFyZ2V0
UmVnLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZFbnRyeUZvcigKKyAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksCisgICAgICAgICAgICAgICAgZW50cnlQ
b2ludFR5cGVGb3IoY2FsbExpbmtJbmZvLmFyZ3VtZW50c0xvY2F0aW9uKCkpKSksCisgICAgICAg
IHRhcmdldFJlZyk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgdGFyZ2V0UmVnKSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhh
dCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZh
c3QKICAgICAvLyBjYWxsLgogICAgIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2ls
bCByZXR1cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0
LCBHUFJJbmZvOjpyZWdUNCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgdGFyZ2V0
UmVnKTsKICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewotICAgICAgICBqaXQu
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
aml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQu
c3BpbGxBcmd1bWVudFJlZ2lzdGVyc1RvRnJhbWVCZWZvcmVQcm9sb2d1ZSgpOworICAgICAgICBq
aXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGNhbGxMaW5rSW5mb0FuZFRlbXBSZWcp
OworICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyh0YXJnZXRSZWcpOwogICAgIH0K
LSAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUNCk7Ci0KKyAgICBqaXQuanVtcCh0YXJnZXRSZWcp
OwogICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7Ci0gICAgCisKKyAgICBpbmNyZW1lbnRDb3VudGVy
KCZqaXQsIFZNOjpWaXJ0dWFsU2xvd0NhbGwpOworCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93
IGFueXRoaW5nLCBzbyByZXZlcnQgdG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgorICAgIGppdC5zcGls
bEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3VlKCk7CiAgICAgCiAgICAgc2xv
d1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uVmlydHVhbENhbGwpOwogICAgIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUoCi0gICAgICAgIHBhdGNoQnVmZmVyLAorICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsCiAgICAgICAgICgiVmly
dHVhbCAlcyBzbG93IHBhdGggdGh1bmsiLAogICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6UmVndWxhciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgp
ID09IENhbGxNb2RlOjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0IikpOworICAgIEpJ
VEpTQ2FsbFRodW5rRW50cnlQb2ludHNXaXRoUmVmIGNhbGxFbnRyeVBvaW50cyA9IEpJVEpTQ2Fs
bFRodW5rRW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYpOworCisgICAgY2FsbEVudHJ5UG9pbnRz
LnNldEVudHJ5Rm9yKFN0YWNrQXJnc0VudHJ5LCBjb2RlUmVmLmNvZGUoKSk7CisKKyNpZiBOVU1C
RVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNURVJTCisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHJlZ2lzdGVyRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKHJlZ2lzdGVy
RW50cnkpOworCisgICAgZm9yICh1bnNpZ25lZCBlbnRyeUluZGV4ID0gUmVnaXN0ZXIxQXJnRW50
cnk7IGVudHJ5SW5kZXggPCAgVGh1bmtFbnRyeVBvaW50VHlwZUNvdW50OyBlbnRyeUluZGV4Kysp
CisgICAgICAgIGNhbGxFbnRyeVBvaW50cy5zZXRFbnRyeUZvcihzdGF0aWNfY2FzdDxUaHVua0Vu
dHJ5UG9pbnRUeXBlPihlbnRyeUluZGV4KSwgcmVnaXN0ZXJFbnRyeVB0cik7CisjZW5kaWYKKwor
ICAgIHJldHVybiBjYWxsRW50cnlQb2ludHM7CiB9CiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBF
bnRlclZpYUNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhv
dXRTYXZlZFRhZ3MgfTsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JH
ZW5lcmF0b3IoVk0qIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlU
eXBlIGVudHJ5VHlwZSA9IEVudGVyVmlhQ2FsbCkKK3N0YXRpYyBKSVRFbnRyeVBvaW50c1dpdGhS
ZWYgbmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
LCBUaHVua0VudHJ5VHlwZSBlbnRyeVR5cGUgPSBFbnRlclZpYUNhbGwpCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbG9nIFNoYWRvd0NoaWNrZW4gcHJvbG9ndWUgcGFj
a2V0cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
Njg5CkBAIC0yMzcsOCArMzc3LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlRm9yR2UKICAgICAKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogCisgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHN0YWNrQXJnc0VudHJ5OworCiAgICAgc3dpdGNoIChlbnRyeVR5cGUp
IHsKICAgICBjYXNlIEVudGVyVmlhQ2FsbDoKKyAgICAgICAgaml0LnNwaWxsQXJndW1lbnRSZWdp
c3RlcnNUb0ZyYW1lQmVmb3JlUHJvbG9ndWUoKTsKKworICAgICAgICBzdGFja0FyZ3NFbnRyeSA9
IGppdC5sYWJlbCgpOworCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3M6CkBAIC0zNzks
MjUgKzUyNSwzMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAg
ICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgibmF0aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBF
bnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRhaWwgV2l0aCBTYXZlZCBUYWdzICIgOiBlbnRy
eVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2
ZWQgVGFncyAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY29kZVJlZiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAl
cyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/
ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhv
dXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmco
a2luZCkuZGF0YSgpKSk7CisgICAgaWYgKGVudHJ5VHlwZSA9PSBFbnRlclZpYUNhbGwpIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHN0YWNrRW50cnlQdHIgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKHN0YWNrQXJnc0VudHJ5KTsKKworICAgICAgICByZXR1cm4gSklURW50cnlQb2lu
dHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBjb2RlUmVmLmNvZGUoKSwgY29kZVJl
Zi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50cnlQdHIpOworICAgIH0KKworICAgIHJl
dHVybiBKSVRFbnRyeVBvaW50c1dpdGhSZWYoY29kZVJlZiwgY29kZVJlZi5jb2RlKCksIGNvZGVS
ZWYuY29kZSgpKTsKKwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVy
YXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihW
TSogdm0pCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwp
OwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0q
IHZtKQogewotICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIENvZGVGb3JDYWxsLCBF
bnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9y
KHZtLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncykuY29kZVJlZigpOwog
fQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdz
R2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBD
b2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFncyk7CisgICAgcmV0dXJuIG5h
dGl2ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZl
ZFRhZ3MpLmNvZGVSZWYoKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0
cnVjdEdlbmVyYXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgbmF0aXZlQ29uc3Ry
dWN0R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZt
LCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KQEAgLTUzNiw2ICs2OTAsNDMgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHVucmVhY2hhYmxlR2VuZXJhdAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCAoInVucmVhY2hhYmxlIHRodW5rIikpOwogfQogCisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWRS
ZWdDYWxsKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgVk0qIHZtKQoreworICAgIC8vIGxvYWQg
c3RyaW5nCisgICAgR1BSUmVnIHRoaXNSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25B
cmd1bWVudCgwKTsKKyAgICBHUFJSZWcgaW5kZXhSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yRnVu
Y3Rpb25Bcmd1bWVudCgyKTsKKyAgICBHUFJSZWcgbGVuZ3RoUmVnID0gYXJndW1lbnRSZWdpc3Rl
ckZvckZ1bmN0aW9uQXJndW1lbnQoMyk7CisgICAgR1BSUmVnIHRlbXBSZWcgPSBTcGVjaWFsaXpl
ZFRodW5rSklUOjpub25BcmdHUFIwOworCisgICAgaml0LmNoZWNrSlNTdHJpbmdBcmd1bWVudCgq
dm0sIHRoaXNSZWcpOworCisgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQg
c3RhcnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAK
KyAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNSZWcsIFRodW5rSGVs
cGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIGxlbmd0aFJlZyk7CisgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1JlZywgVGh1bmtIZWxwZXJzOjpqc1N0cmlu
Z1ZhbHVlT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJh
bmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wUmVnKSk7CisKKyAgICAvLyBsb2Fk
IGluZGV4CisgICAgaml0Lm1vdmUoYXJndW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQo
MSksIGluZGV4UmVnKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuZW1pdEp1bXBJZk5vdElu
dDMyKGluZGV4UmVnKSk7CisKKyAgICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVs
dGFuZW91c2x5IGZpbHRlciBuZWdhdGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0
IGFyZSB0b28gbGFyZ2UKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIGxlbmd0aFJlZykpOworCisgICAgLy8g
TG9hZCB0aGUgY2hhcmFjdGVyCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgaXMx
NkJpdDsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlzdCBjb250OEJpdDsKKyAgICAv
LyBMb2FkIHRoZSBzdHJpbmcgZmxhZ3MKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wUmVnLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwgbGVuZ3RoUmVnKTsK
KyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wUmVnLCBTdHJpbmdJ
bXBsOjpkYXRhT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKKyAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJh
bmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBsZW5ndGhSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSkpOworICAgIGppdC5sb2Fk
OChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHRlbXBSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNPbmUsIDApLCB0ZW1wUmVnKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1
bXAoKSk7CisgICAgaXMxNkJpdC5saW5rKCZqaXQpOworICAgIGppdC5sb2FkMTYoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleCh0ZW1wUmVnLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
VHdvLCAwKSwgdGVtcFJlZyk7CisgICAgY29udDhCaXQubGluaygmaml0KTsKK30KKyNlbHNlCiBz
dGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBqaXQsIFZNKiB2
bSkKIHsKICAgICAvLyBsb2FkIHN0cmluZwpAQCAtNTY1LDYgKzc1Niw3IEBAIHN0YXRpYyB2b2lk
IHN0cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGgKICAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CiAgICAgY29udDhCaXQubGluaygmaml0KTsKIH0KKyNlbmRpZgogCiBz
dGF0aWMgdm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSogdm0s
IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHNyYywgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZHN0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzY3JhdGNoKQogewpAQCAtNTc0LDM0
ICs3NjYsNjkgQEAgc3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxpemVkVGh1bgogICAg
IGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBkc3QpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVy
YXRvcihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKKyNpZiBOVU1CRVJfT0ZfSlNfRlVOQ1RJT05fQVJHVU1FTlRfUkVHSVNU
RVJTCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEsIEFzc2VtYmx5SGVscGVyczo6
U3BpbGxFeGFjdGx5LCBTcGVjaWFsaXplZFRodW5rSklUOjpJblJlZ2lzdGVycyk7CisgICAgc3Ry
aW5nQ2hhckxvYWRSZWdDYWxsKGppdCwgdm0pOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFs
aXplZFRodW5rSklUOjpub25BcmdHUFIwKTsKKyAgICBqaXQubGlua0ZhaWx1cmVIZXJlKCk7Cisg
ICAgaml0LnNwaWxsQXJndW1lbnRSZWdpc3RlcnNUb0ZyYW1lKDIsIEFzc2VtYmx5SGVscGVyczo6
U3BpbGxFeGFjdGx5KTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAi
Y2hhckNvZGVBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7
CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY2hhckNvZGVBdCIpOworI2VuZGlmCiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRF
bnRyeVBvaW50c1dpdGhSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogeworI2lmIE5V
TUJFUl9PRl9KU19GVU5DVElPTl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMSwgQXNzZW1ibHlIZWxwZXJzOjpTcGlsbEV4YWN0bHksIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OkluUmVnaXN0ZXJzKTsKKyAgICBzdHJpbmdDaGFyTG9hZFJlZ0NhbGwoaml0
LCB2bSk7CisgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5v
bkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJl
Z2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVudCgzKSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVj
aWFsaXplZFRodW5rSklUOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVy
ZSgpOworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhl
bHBlcnM6OlNwaWxsRXhhY3RseSk7CisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0Lmp1bXAoKSk7
CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImNoYXJBdCIpOworI2Vsc2UKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwg
MSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwg
dm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKKyNlbmRpZgogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
SklURW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
IHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisjaWYgTlVNQkVSX09GX0pT
X0ZVTkNUSU9OX0FSR1VNRU5UX1JFR0lTVEVSUworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsRXhhY3RseSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6SW5SZWdpc3RlcnMpOworICAgIC8vIGxvYWQgY2hhciBjb2RlCisgICAgaml0Lm1vdmUoYXJn
dW1lbnRSZWdpc3RlckZvckZ1bmN0aW9uQXJndW1lbnQoMSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
Om5vbkFyZ0dQUjApOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5lbWl0SnVtcElmTm90SW50
MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6bm9uQXJnR1BSMCkpOworCisgICAgY2hhclRvU3RyaW5n
KGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6Om5vbkFyZ0dQUjAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudFJlZ2lzdGVyRm9yRnVuY3Rpb25Bcmd1bWVu
dCgzKSk7CisgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgaml0LmxpbmtGYWlsdXJlSGVyZSgpOworICAgIGppdC5zcGlsbEFyZ3Vt
ZW50UmVnaXN0ZXJzVG9GcmFtZSgyLCBBc3NlbWJseUhlbHBlcnM6OlNwaWxsQWxsKTsKKyAgICBq
aXQuYXBwZW5kRmFpbHVyZShqaXQuanVtcCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisjZWxz
ZQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxLCBBc3NlbWJseUhlbHBlcnM6OlNw
aWxsQWxsKTsKICAgICAvLyBsb2FkIGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVu
dCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwg
dm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKKyNlbmRpZgog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCitK
SVRFbnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG5vbkludEFyZ0p1bXA7CkBAIC02MjIsMTEgKzg0OSwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY2x6MzJUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNsejMyIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVm
IHNxcnRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKLSAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAgICByZXR1cm4gdm0t
PmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAgICAgaml0LmxvYWREb3VibGVB
cmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CiAgICAgaml0LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBS
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CkBAIC03ODIsMTIgKzEwMDksMTIg
QEAgZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0aWMgY29uc3QgZG91
YmxlIGhhbGZDb25zdGFudCA9IDAuNTsKICAgICAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9v
clRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBmbG9vclRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91
YmxlT3BXcmFwcGVyKGZsb29yKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+
aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3Vt
ZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQu
cmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIG5vbkludEp1bXAu
bGluaygmaml0KTsKQEAgLTgyNSwxMSArMTA1MiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Zmxvb3JUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMt
PmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGNl
aWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQo
dm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoY2VpbCkgfHwgIWppdC5zdXBw
b3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2
bSkpOworICAgICAgICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0p
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQz
MkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAg
ICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtODQ4LDEx
ICsxMDc1LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IKICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0p
LCAiY2VpbCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRv
cihWTSogdm0pCitKSVRFbnRyeVBvaW50c1dpdGhSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghVW5h
cnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0dXJu
IHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTg3MSwxMSArMTA5OCwxMSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvCiAgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7CiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5
UG9pbnRzV2l0aFJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihq
c1JvdW5kKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmpp
dEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVt
cDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIG5vbkludEp1bXApOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CkBAIC05MDUsMzcgKzExMzIsMzcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJv
dW5kVGh1bmtHZW5lcmF0bwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVUYWlsQ2FsbCh2bSksICJyb3VuZCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGV4cFRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4
cCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0
dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50
KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICAgICAgcmV0
dXJuIHZtLT5qaXRTdHVicy0+aml0RW50cnlOYXRpdmVDYWxsKHZtKTsKICAgICBqaXQubG9hZERv
dWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1Jl
dHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0t
PmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJleHAiKTsKIH0KIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0
aFJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9w
V3JhcHBlcihsb2cpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Cisg
ICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxv
YXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Cisg
ICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVudHJ5TmF0aXZlQ2FsbCh2bSk7CiAgICAg
aml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVBy
ZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSk7CiAgICAgaml0LnJldHVy
bkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZp
bmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAibG9nIik7CiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSogdm0pCitKSVRFbnRy
eVBvaW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9p
bnRBYnMoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgICAg
ICByZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICB1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCA9IENhbGxGcmFt
ZTo6YXJndW1lbnRPZmZzZXQoMCk7CkBAIC05ODgsNyArMTIxNSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcigKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiYWJzIik7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRo
UmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEFyZzBKdW1wOwpA
QCAtMTAxOSwxMSArMTI0NiwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2Vu
ZXJhdG9yCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRh
aWxDYWxsKHZtKSwgImltdWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dl
bmVyYXRvcihWTSogdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDApOwog
ICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgICAgIHJldHVybiB2bS0+aml0U3R1YnMtPmppdEVu
dHJ5TmF0aXZlQ2FsbCh2bSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5lbWl0UmFu
ZG9tVGh1bmsoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QxLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDMsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwpAQCAtMTAzMSwxNiArMTI1OCwy
MiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmFuZG9tVGh1bmtHZW5lcmF0CiAKICAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAicmFu
ZG9tIik7CiAjZWxzZQotICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICBy
ZXR1cm4gdm0tPmppdFN0dWJzLT5qaXRFbnRyeU5hdGl2ZUNhbGwodm0pOwogI2VuZGlmCiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0
b3IoVk0qIHZtKQorSklURW50cnlQb2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q2FsbEdlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CisgICAg
SlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
YWlsdXJlczsKKworICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVBy
b2xvZ3VlKCk7CiAgICAgCi0gICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6TGFiZWwgc3RhY2tBcmdzRW50cnkoJmppdCk7CiAgICAgCisgICAg
aml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJh
bWUuCiAgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwog
ICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CkBAIC0xMTEwLDIwICsx
MzQzLDIzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW4KICAgICAg
ICAgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6
Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCisgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mRW50cnlGb3IoQ29k
ZUZvckNhbGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KSksCiAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgZmFpbHVyZXMuYXBwZW5k
KGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApKTsK
ICAgICAKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgbGlua0J1ZmZlci5saW5rKG5vQ29k
ZSwgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhv
dXRTYXZlZFRhZ3Modm0pKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCi0gICAgICAgIGxp
bmtCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdp
dGggbm8gYXJndW1lbnRzIikpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVzLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVk
VGFncyh2bSkpKTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9u
IGNhbGxzIHdpdGggbm8gYXJndW1lbnRzIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBz
dGFja0VudHJ5UHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihzdGFja0FyZ3NFbnRyeSk7CisK
KyAgICByZXR1cm4gSklURW50cnlQb2ludHNXaXRoUmVmKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgp
LCBjb2RlUmVmLmNvZGUoKSwgY29kZVJlZi5jb2RlKCksIHN0YWNrRW50cnlQdHIsIHN0YWNrRW50
cnlQdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCisjaW5jbHVkZSAiSklURW50cnlQb2ludHMuaCIKICNpbmNsdWRlICJUaHVua0dl
bmVyYXRvci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM2LDM0ICszNywzNSBAQCBjbGFzcyBD
YWxsTGlua0luZm87CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tQ2Fs
bFNsb3dQYXRoR2VuZXJhdG9yKFZNKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2Fs
bFRodW5rKFZNKiwgQ2FsbExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihWTSopOworSklU
SlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihWTSop
OworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua0RpcmVjdENhbGxUaHVua0dl
bmVyYXRvcihWTSopOworSklUSlNDYWxsVGh1bmtFbnRyeVBvaW50c1dpdGhSZWYgbGlua1BvbHlt
b3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2
aXJ0dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKK0pJVEpTQ2FsbFRodW5rRW50cnlQ
b2ludHNXaXRoUmVmIHZpcnR1YWxUaHVua0ZvcihWTSosIENhbGxMaW5rSW5mbyYpOwogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNX
aXRoUmVmIG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBu
YXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRp
dmVUYWlsQ2FsbEdlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRh
aWxDYWxsV2l0aG91dFNhdmVkVGFnc0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJl
YWNoYWJsZUdlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVB
dFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtH
ZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjbHozMlRodW5rR2VuZXJhdG9y
KFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSopOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGV4cFRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Zmxvb3JUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5r
R2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRv
cihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKik7Ci1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNo
YXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGNoYXJB
dFRodW5rR2VuZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgY2x6MzJUaHVua0dl
bmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIGZyb21DaGFyQ29kZVRodW5rR2Vu
ZXJhdG9yKFZNKik7CitKSVRFbnRyeVBvaW50c1dpdGhSZWYgYWJzVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVu
dHJ5UG9pbnRzV2l0aFJlZiBleHBUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNX
aXRoUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBs
b2dUaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQb2ludHNXaXRoUmVmIHJvdW5kVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBzcXJ0VGh1bmtHZW5lcmF0b3Io
Vk0qKTsKK0pJVEVudHJ5UG9pbnRzV2l0aFJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKK0pJ
VEVudHJ5UG9pbnRzV2l0aFJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOworSklURW50cnlQ
b2ludHNXaXRoUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSogdm0pOworSklU
RW50cnlQb2ludHNXaXRoUmVmIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihW
TSopOwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShyZXZpc2lvbiAyMDk2NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDI2IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlw
b2ludChWTSYgdm0KICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAg
ICAgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOworICAgICAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KAorICAgICAgICAgICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0
ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yU3RhY2tDYWxsRW50cnlUaHVua0dlbmVy
YXRvcikuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvclN0YWNrQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
KSk7CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAg
ICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lz
dGVyQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKS5j
b2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JSZWdp
c3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclJlZ2lzdGVyQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwK
KyAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvclN0YWNrQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKQEAgLTU5LDEyICs3MywyNiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5j
dGlvbkVudHJ5cG9pbnQoVk0mIHZtCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBpZiAoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgICAgIEpJVEVu
dHJ5UG9pbnRzV2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9n
dWUpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxM
SW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSgKKyAgICAgICAgICAgIEpJVEVudHJ5UG9pbnRz
V2l0aFJlZihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29k
ZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQpAQCAtNzIsMTQgKzEwMCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRFdmFs
RW50cnlwb2ludChWTSYgdm0sIENvCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNl
SklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVy
YXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAg
ICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAg
ICAgICAgICAgIHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSks
CisgICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFN
KHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisg
ICAgICAgICAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfZXZhbF9wcm9sb2d1ZSkuY29kZSgpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLmNvZGUoKSks
CisgICAgICAgICAgICBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpA
QCAtODcsMTQgKzEyOSwyOCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYg
dm0sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUodm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQ
b2ludHNXaXRoUmVmKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLAorICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSwKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpLAorICAgICAgICAgICAgICAgIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKAorICAgICAgICAgICAgSklURW50cnlQb2lu
dHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X3Byb2dyYW1fcHJvbG9ndWUpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUp
LAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2Rl
UHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBv
aW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMDIsMTQgKzE1OCwyOCBAQCBz
dGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yiht
b2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUoCisgICAgICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKHZt
LmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpLAorICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKG1vZHVsZVBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgIHZt
LmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSksCisg
ICAgICAgICAgICAgICAgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRD
b2RlKAorICAgICAgICAgICAgSklURW50cnlQb2ludHNXaXRoUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUxMSW50Q29kZVB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspKSk7CiB9CiAKIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOSArMzczLDkgQEAg
c3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIENPREVCTE9DS19M
T0dfRVZFTlQoY29kZUJsb2NrLCAiT1NSIGVudHJ5IiwgKCJpbiBwcm9sb2d1ZSIpKTsKICAgICAK
ICAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKFN0YWNrQXJn
c0FyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAgQVNT
RVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7Ci0gICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2st
PmppdENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIDApOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFk
ZHJlc3NGb3JDYWxsKFN0YWNrQXJnc011c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygp
LCAwKTsKIH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgY2hhciosIEVudHJ5S2luZCkKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGlubGlu
ZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4
ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOworICAgICAgICBjb2RlUHRy
ID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBTdGFja0FyZ3NNdXN0Q2hlY2tBcml0
eSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsK
IApAQCAtMTMwNiwxMiArMTMwNiwxMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjCiAgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGVycm9yKTsKICAg
ICAgICAgY29kZUJsb2NrID0gKmNvZGVCbG9ja1Nsb3Q7CiAgICAgICAgIEFTU0VSVChjb2RlQmxv
Y2spOwotICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsKKyAgICAgICAgRW50cnlQb2ludFR5
cGUgZW50cnlUeXBlOwogICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpKQotICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKKyAgICAgICAgICAgIGVu
dHJ5VHlwZSA9IFN0YWNrQXJnc011c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CisgICAgICAgICAg
ICBlbnRyeVR5cGUgPSBTdGFja0FyZ3NBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgZW50cnlUeXBl
KTsKICAgICB9CiAKICAgICBBU1NFUlQoISFjb2RlUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjA5NjUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsMTAgKzUxLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50
cnkKIAogbmFtZXNwYWNlIExMSW50IHsKIAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNo
YXIgKnRodW5rS2luZCkKK2VudW0gU2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSB7IENyZWF0ZVJl
Z2lzdGVyRW50cnksIERvbnRDcmVhdGVSZWdpc3RlckVudHJ5IH07CisKK3N0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFy
Z2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQsIFNob3VsZENyZWF0ZVJlZ2lzdGVyRW50cnkg
c2hvdWxkQ3JlYXRlUmVnaXN0ZXJFbnRyeSA9IERvbnRDcmVhdGVSZWdpc3RlckVudHJ5KQogewog
ICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGlmIChzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5ID09IENyZWF0ZVJlZ2lzdGVyRW50cnkp
CisgICAgICAgIGppdC5zcGlsbEFyZ3VtZW50UmVnaXN0ZXJzVG9GcmFtZUJlZm9yZVByb2xvZ3Vl
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzaG91bGRDcmVhdGVSZWdpc3RlckVudHJ5KTsK
KyNlbmRpZgorCiAgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRv
IGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVn
VDApOwpAQCAtNjMsMjQgKzcyLDQ0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2Vu
ZXJhdGVUaHUKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMTEludCAl
cyBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCAiZnVu
Y3Rpb24gZm9yIHJlZ2lzdGVyIGFyZ3MgY2FsbCIsIENyZWF0ZVJlZ2lzdGVyRW50cnkpOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0s
IExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9n
dWUpLCAiZnVuY3Rpb24gZm9yIHN0YWNrIGFyZ3MgY2FsbCIpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
KSwgImZ1bmN0aW9uIGZvciByZWdpc3RlciBhcmdzIGNvbnN0cnVjdCIsIENyZWF0ZVJlZ2lzdGVy
RW50cnkpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBzdGFjayBhcmdzIGNvbnN0
cnVjdCIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksICJmdW5jdGlvbiBmb3IgY2FsbCIpOworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgcmVnaXN0
ZXIgYXJncyBjYWxsIHdpdGggYXJpdHkgY2hlY2siLCBDcmVhdGVSZWdpc3RlckVudHJ5KTsKIH0K
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0Nh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKTsK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVu
Y3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCAiZnVuY3Rpb24g
Zm9yIHN0YWNrIGFyZ3MgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yUmVnaXN0ZXJDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayksICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNr
Iik7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29k
ZUZ1bmN0aW9uUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCAi
ZnVuY3Rpb24gZm9yIHJlZ2lzdGVyIGFyZ3MgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siLCBD
cmVhdGVSZWdpc3RlckVudHJ5KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjayksICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksICJmdW5jdGlv
biBmb3Igc3RhY2sgYXJncyBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDIwOTY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MiwxMCArNDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZB
VEUgdm1FbnRyeQogCiBuYW1lc3BhY2UgTExJbnQgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihWTSopOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JSZWdpc3RlckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JSZWdpc3RlckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclN0YWNrQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yUmVnaXN0ZXJDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JTdGFja0NhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvclJlZ2lzdGVyQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JTdGFja0NvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSop
OwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9k
ZS5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cml0eUNoZWNrTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogZW51bSBBcml0eUNoZWNrTW9kZSB7CisgICAgUmVnaXN0ZXJFbnRyeSwKICAg
ICBBcml0eUNoZWNrTm90UmVxdWlyZWQsCiAgICAgTXVzdENoZWNrQXJpdHkKIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCShy
ZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgdm9pZCBFeGVjdXRh
YmxlQmFzZTo6Y2xlYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKQogICAgIG1faml0Q29kZUZvckNh
bGwgPSBudWxscHRyOwogICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IG51bGxwdHI7Ci0gICAg
bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
Ci0gICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLmNsZWFyRW50cmllcygpOworICAg
IG1faml0RW50cmllc0ZvckNvbnN0cnVjdC5jbGVhckVudHJpZXMoKTsKICNlbmRpZgogICAgIG1f
bnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7CiAgICAg
bV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0ID0gTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVE
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5oCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiQXJpdHlDaGVja01vZGUuaCIKICNpbmNsdWRlICJDYWxsRGF0
YS5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIK
ICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1
ZGUgIkpJVEVudHJ5UG9pbnRzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVHlwZVNldC5oIgpAQCAtMTQ1LDQ3ICsxNDUs
NDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVj
dCgpOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludEZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQorICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgRW50cnlQb2ludFR5cGUgZW50cnlUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2hl
Y2sgaWYgd2UgaGF2ZSBhIGNhY2hlZCByZXN1bHQuIFdlIG9ubHkgaGF2ZSBpdCBmb3IgYXJpdHkg
Y2hlY2sgYmVjYXVzZSB3ZSB1c2UgdGhlCiAgICAgICAgIC8vIG5vLWFyaXR5IGVudHJ5cG9pbnQg
aW4gbm9uLXZpcnR1YWwgY2FsbHMsIHdoaWNoIHdpbGwgImNhY2hlIiB0aGlzIHZhbHVlIGRpcmVj
dGx5IGluCiAgICAgICAgIC8vIG1hY2hpbmUgY29kZS4KLSAgICAgICAgaWYgKGFyaXR5ID09IE11
c3RDaGVja0FyaXR5KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAg
IGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVj
aykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNh
c2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJl
c3VsdCA9IG1faml0RW50cmllc0ZvckNhbGwuZW50cnlGb3IoZW50cnlUeXBlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q29kZUZvckNvbnN0cnVjdDoKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
cmVzdWx0ID0gbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0LmVudHJ5Rm9yKGVudHJ5VHlwZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPQotICAgICAgICAgICAg
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkpOwotICAgICAg
ICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKLSAgICAgICAgICAgIC8vIENhY2hlIHRo
ZSByZXN1bHQ7IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9w
dGltaXphdGlvbnMuCi0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNh
c2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0Zv
ckNhbGwoZW50cnlUeXBlKTsKKyAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdDsgdGhpcyBpcyBu
ZWNlc3NhcnkgZm9yIHRoZSBKSVQncyB2aXJ0dWFsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAg
ICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAg
ICBtX2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9yKGVudHJ5VHlwZSwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAg
ICAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3Quc2V0RW50cnlGb3IoZW50cnlUeXBlLCByZXN1
bHQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29kZVdpdGhBcml0
eUNoZWNrRm9yKAotICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRW50cnlQb2ludFR5cGUgZW50cnlQb2ludFR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KGtpbmQpIHsKICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayk7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNl
LCBtX2ppdEVudHJpZXNGb3JDYWxsKSArIEpJVEVudHJ5UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9y
KGVudHJ5UG9pbnRUeXBlKTsKICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0V2l0aEFyaXR5Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRFbnRyaWVzRm9yQ29uc3RydWN0KSArIEpJVEVudHJ5
UG9pbnRzOjpvZmZzZXRPZkVudHJ5Rm9yKGVudHJ5UG9pbnRUeXBlKTsKICAgICAgICAgfQogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTIzMyw4ICsyMjgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50cmluc2ljIG1faW50cmluc2ljOwog
ICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDYWxsOwogICAgIFJlZlB0cjxKSVRDb2Rl
PiBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjazsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2s7CisgICAgSklURW50cnlQb2ludHMgbV9q
aXRFbnRyaWVzRm9yQ2FsbDsKKyAgICBKSVRFbnRyeVBvaW50cyBtX2ppdEVudHJpZXNGb3JDb25z
dHJ1Y3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5NjUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvdW5kVGhpc05vCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0YXJnZXRG
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwogICAgIGlmIChleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9y
Q2FsbCgpKSB7CiAgICAgICAgIC8vIEZvcmNlIHRoZSBleGVjdXRhYmxlIHRvIGNhY2hlIGl0cyBh
cml0eSBlbnRyeXBvaW50LgotICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVG
b3JDYWxsLCBNdXN0Q2hlY2tBcml0eSk7CisgICAgICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3IoQ29kZUZvckNhbGwsIFN0YWNrQXJnc011c3RDaGVja0FyaXR5KTsKICAgICB9CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJn
ZXRGdW5jdGlvbiwgY2FsbERhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw4ICs2Myw4IEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3Jl
YXRpb24oVk0KICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgbV9qaXRDb2RlRm9y
Q2FsbCA9IGNhbGxUaHVuazsKICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RU
aHVuazsKLSAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JD
YWxsLT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7Ci0gICAgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3QtPmFkZHJlc3NGb3JD
YWxsKE11c3RDaGVja0FyaXR5KTsKKyAgICBtX2ppdEVudHJpZXNGb3JDYWxsLnNldEVudHJ5Rm9y
KFN0YWNrQXJnc011c3RDaGVja0FyaXR5LCBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2Fs
bChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOworICAgIG1faml0RW50cmllc0ZvckNvbnN0cnVj
dC5zZXRFbnRyeUZvcihTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0LT5hZGRyZXNzRm9yQ2FsbChTdGFja0FyZ3NNdXN0Q2hlY2tBcml0eSkpOwogICAgIG1fbmFt
ZSA9IG5hbWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDEyICsxMzksMTIgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShW
TSYgdgogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CiAgICAgICAg
IG1faml0Q29kZUZvckNhbGwgPSBnZW5lcmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+
aml0Q29kZSgpIDogbnVsbHB0cjsKLSAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIG1faml0RW50cmllc0ZvckNh
bGwuY2xlYXJFbnRyaWVzKCk7CiAgICAgICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwgPSBnZW5l
cmljQ29kZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIDogTlVNX1BB
UkFNRVRFUlNfTk9UX0NPTVBJTEVEOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVGb3JD
b25zdHJ1Y3Q6CiAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxv
Y2sgPyBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRyOwotICAgICAgICBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OworICAgICAgICBtX2ppdEVudHJpZXNGb3JDb25zdHJ1Y3QuY2xlYXJFbnRyaWVzKCk7CiAgICAg
ICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5l
cmljQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElM
RUQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHJldmlzaW9uIDIwOTY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCwxMCBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9u
ZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNr
VG9wKHN0YWNrLm9yaWdpbigpKTsKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBjbGVh
ckNvdW50ZXJzKCk7CisjZW5kaWYKKwogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVw
IGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7
CiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJp
bmdUYWJsZSk7CkBAIC00NzYsNyArNDgwLDcgQEAgU2FtcGxpbmdQcm9maWxlciYgVk06OmVuc3Vy
ZVNhbXBsaW5nUHJvZgogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogI2lm
IEVOQUJMRShKSVQpCi1zdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKK3N0YXRpYyBKSVRFbnRyeUdlbmVyYXRvciB0aHVu
a0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIHN3aXRj
aCAoaW50cmluc2ljKSB7CiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOgpAQCAtOTIzLDQg
KzkyNywzNSBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKK3ZvaWQgVk06OmNsZWFyQ291bnRlcnMo
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJWTUNvdW50ZXI7IGkrKykK
KyAgICAgICAgbV9jb3VudGVyc1tpXSA9IDA7Cit9CisKK3ZvaWQgVk06OmR1bXBDb3VudGVycygp
Cit7CisgICAgc2l6ZV90IHRvdGFsQ2FsbHMgPSBjb3VudGVyRm9yKEJhc2VsaW5lQ2FsbGVyKSAr
IGNvdW50ZXJGb3IoREZHQ2FsbGVyKSArIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKTsKKyAgICBkYXRh
TG9nKCIjIyMjIFZNIENhbGwgY291bnRlcnMgIyMjI1xuIik7CisgICAgZGF0YUxvZ0YoIiUxMHp1
IFRvdGFsIGNhbGxzXG4iLCB0b3RhbENhbGxzKTsKKyAgICBkYXRhTG9nRigiJTEwenUgQmFzZWxp
bmUgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQmFzZWxpbmVDYWxsZXIpKTsKKyAgICBkYXRhTG9nRigi
JTEwenUgREZHIGNhbGxzXG4iLCBjb3VudGVyRm9yKERGR0NhbGxlcikpOworICAgIGRhdGFMb2dG
KCIlMTB6dSBGVEwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoRlRMQ2FsbGVyKSk7CisgICAgZGF0YUxv
Z0YoIiUxMHp1IFZhcmFyZyBjYWxsc1xuIiwgY291bnRlckZvcihDYWxsVmFyYXJncykpOworICAg
IGRhdGFMb2dGKCIlMTB6dSBUYWlsIGNhbGxzXG4iLCBjb3VudGVyRm9yKFRhaWxDYWxsKSk7Cisg
ICAgZGF0YUxvZ0YoIiUxMHp1IEV2YWwgY2FsbHNcbiIsIGNvdW50ZXJGb3IoQ2FsbEV2YWwpKTsK
KyAgICBkYXRhTG9nRigiJTEwenUgRGlyZWN0IGNhbGxzXG4iLCBjb3VudGVyRm9yKERpcmVjdENh
bGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgUG9seW1vcnBoaWMgY2FsbHNcbiIsIGNvdW50ZXJG
b3IoUG9seW1vcnBoaWNDYWxsKSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFZpcnR1YWwgY2FsbHNc
biIsIGNvdW50ZXJGb3IoVmlydHVhbENhbGwpKTsKKyAgICBkYXRhTG9nRigiJTEwenUgVmlydHVh
bCBzbG93IGNhbGxzXG4iLCBjb3VudGVyRm9yKFZpcnR1YWxTbG93Q2FsbCkpOworICAgIGRhdGFM
b2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIG5vIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NO
b0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IFN0YWNrIGFyZ3Mgbm8gYXJpdHlcbiIsIGNv
dW50ZXJGb3IoU3RhY2tBcmdzTm9Bcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBSZWdpc3Rl
ciBhcmdzIGV4dHJhIGFyaXR5XG4iLCBjb3VudGVyRm9yKFJlZ0FyZ3NFeHRyYSkpOworICAgIGRh
dGFMb2dGKCIlMTB6dSBSZWdpc3RlciBhcmdzIGFyaXR5IGNoZWNrXG4iLCBjb3VudGVyRm9yKFJl
Z0FyZ3NBcml0eSkpOworICAgIGRhdGFMb2dGKCIlMTB6dSBTdGFjayBhcmdzIGFyaXR5IGNoZWNr
XG4iLCBjb3VudGVyRm9yKFN0YWNrQXJnc0FyaXR5KSk7CisgICAgZGF0YUxvZ0YoIiUxMHp1IEFy
aXR5IGZpeHVwcyByZXF1aXJlZFxuIiwgY291bnRlckZvcihBcml0eUZpeHVwUmVxdWlyZWQpKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDYgKzQzMiwxNiBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsK
ICAgICB9CisKKyAgICBKSVRFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklURW50cnlTdHViKEpJVEVu
dHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+
aml0RW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQorCisgICAgSklUSlNDYWxsVGh1
bmtFbnRyeVBvaW50c1dpdGhSZWYgZ2V0SklUQ2FsbFRodW5rRW50cnlTdHViKEpJVENhbGxUaHVu
a0VudHJ5R2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVi
cy0+aml0Q2FsbFRodW5rRW50cnlTdHViKHRoaXMsIGdlbmVyYXRvcik7CisgICAgfQogICAgIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJl
Z2lzdGVyT2Zmc2V0czsKICAgICAKQEAgLTU3NCw2ICs1ODQsNTAgQEAgcHVibGljOgogICAgIEJ1
bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1cnJlbnRKU0xv
Y2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisgICAgZW51bSBWTUNvdW50ZXJUeXBlIHsKKyAg
ICAgICAgQmFzZWxpbmVDYWxsZXIsCisgICAgICAgIERGR0NhbGxlciwKKyAgICAgICAgRlRMQ2Fs
bGVyLAorICAgICAgICBDYWxsVmFyYXJncywKKyAgICAgICAgVGFpbENhbGwsCisgICAgICAgIENh
bGxFdmFsLAorICAgICAgICBEaXJlY3RDYWxsLAorICAgICAgICBQb2x5bW9ycGhpY0NhbGwsCisg
ICAgICAgIFZpcnR1YWxDYWxsLAorICAgICAgICBWaXJ0dWFsU2xvd0NhbGwsCisgICAgICAgIFJl
Z0FyZ3NOb0FyaXR5LAorICAgICAgICBTdGFja0FyZ3NOb0FyaXR5LAorICAgICAgICBSZWdBcmdz
RXh0cmEsCisgICAgICAgIFJlZ0FyZ3NBcml0eSwKKyAgICAgICAgU3RhY2tBcmdzQXJpdHksCisg
ICAgICAgIEFyaXR5Rml4dXBSZXF1aXJlZCwKKyAgICAgICAgTnVtYmVyVk1Db3VudGVyCisgICAg
fTsKKworI2lmIEVOQUJMRShWTV9DT1VOVEVSUykKKyAgICBzaXplX3QgbV9jb3VudGVyc1tOdW1i
ZXJWTUNvdW50ZXJdOworCisgICAgdm9pZCBjbGVhckNvdW50ZXJzKCk7CisKKyAgICBzaXplX3Qq
IGFkZHJlc3NPZkNvdW50ZXIoVk1Db3VudGVyVHlwZSBjb3VudGVyVHlwZSkKKyAgICB7CisgICAg
ICAgIGlmIChjb3VudGVyVHlwZSA+PSBOdW1iZXJWTUNvdW50ZXIpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fY291bnRlcnNbY291bnRlclR5cGVdOwor
ICAgIH0KKworICAgIHNpemVfdCBjb3VudGVyRm9yKFZNQ291bnRlclR5cGUgY291bnRlclR5cGUp
CisgICAgeworICAgICAgICBpZiAoY291bnRlclR5cGUgPj0gTnVtYmVyVk1Db3VudGVyKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jb3VudGVyc1tj
b3VudGVyVHlwZV07CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wQ291
bnRlcnMoKTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2Fj
aGU+IG1faGFzT3duUHJvcGVydHlDYWNoZTsKICAgICBBTFdBWVNfSU5MSU5FIEhhc093blByb3Bl
cnR5Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5
Q2FjaGUuZ2V0KCk7IH0KICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9w
ZXJ0eUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRp
bmcuY3BwCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBXYXNtVG9K
U1N0dWIgaW1wb3J0U3R1YkdlbmVyYXRvcihWTSogdm0sCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBu
ZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgorICAgIEdQUlJlZyBpbXBv
cnRKU0NlbGxHUFJSZWcgPSBhcmd1bWVudFJlZ2lzdGVyRm9yQ2FsbGVlKCk7CiAgICAgQVNTRVJU
KCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsK
IAogICAgIC8vIEVhY2ggSlMgLT4gd2FzbSBlbnRyeSBzZXRzIHRoZSBXZWJBc3NlbWJseS5JbnN0
YW5jZSB3aG9zZSBleHBvcnQgaXMgYmVpbmcgY2FsbGVkLiBXZSdyZSBjYWxsaW5nIG91dCBvZiB0
aGlzIEluc3RhbmNlLCBhbmQgY2FuIHRoZXJlZm9yZSBmaWd1cmUgb3V0IHRoZSBpbXBvcnQgYmVp
bmcgY2FsbGVkLgpAQCAtMTQ4LDE1ICsxNDgsMTQgQEAgV2FzbVRvSlNTdHViIGltcG9ydFN0dWJH
ZW5lcmF0b3IoVk0qIHZtLAogICAgIC8vIEZJWE1FIFRhaWwgY2FsbCBpZiB0aGUgd2FzbSByZXR1
cm4gdHlwZSBpcyB2b2lkIGFuZCBubyByZWdpc3RlcnMgd2VyZSBzcGlsbGVkLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDg4CiAKICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mb3MuYWRkKCk7Ci0gICAgY2FsbExpbmtJbmZvLT5z
ZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBDb2RlT3JpZ2luKCksIGltcG9ydEpTQ2VsbEdQ
UlJlZyk7CisgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBT
dGFja0FyZ3MsIENvZGVPcmlnaW4oKSwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKICAgICBKSVQ6OkRh
dGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgIEpJVDo6VHJ1c3RlZEltbVB0ciBpbml0aWFs
UmlnaHRWYWx1ZSgwKTsKICAgICBKSVQ6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaW1wb3J0SlNDZWxsR1BSUmVnLCB0YXJn
ZXRUb0NoZWNrLCBpbml0aWFsUmlnaHRWYWx1ZSk7CiAgICAgSklUOjpDYWxsIGZhc3RDYWxsID0g
aml0Lm5lYXJDYWxsKCk7CiAgICAgSklUOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogICAgIHNs
b3dQYXRoLmxpbmsoJmppdCk7Ci0gICAgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwIGhl
cmUuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJ
bmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIu
CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBub25B
cmdHUFIwCiAgICAgSklUOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgZG9u
ZS5saW5rKCZqaXQpOwogCkBAIC0yMjQsNyArMjIzLDcgQEAgV2FzbVRvSlNTdHViIGltcG9ydFN0
dWJHZW5lcmF0b3IoVk0qIHZtLAogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIodm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVy
YXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0SklUQ2FsbFRodW5rRW50cnlTdHViKGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpLmVudHJ5Rm9yKFN0YWNrQXJncykuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBo
b3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZih0YXJnZXRUb0NoZWNrKSk7CiAgICAg
Q29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2NTApCisrKyBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTA5
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEpTVkFMVUU2
NDogUGFzcyBhcmd1bWVudHMgaW4gcGxhdGZvcm0gYXJndW1lbnQgcmVnaXN0ZXJzIHdoZW4gbWFr
aW5nIEphdmFTY3JpcHQgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MDM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgbmV3IGJ1aWxkIG9wdGlvbiBFTkFCTEVfVk1fQ09VTlRFUlMg
dG8gZW5hYmxlIEpJVCdhYmxlIGNvdW50ZXJzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyBmb3Ig
dGhlIG9wdGlvbiB0byBiZSBvZmYuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAg
ICAgQWRkZWQgRU5BQkxFX1ZNX0NPVU5URVJTCisKIDIwMTYtMTItMDkgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBEZXBsb3kgT3JkaW5hbE51bWJlciBpbiBK
U0M6OlNvdXJjZUNvZGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjA5NjUwKQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjk1LDYgKzY5NSw5IEBA
CiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIFRoaXMgZW5hYmxlcyBwZXIgVk0g
Y291bnRlcnMgYXZhaWxhYmxlIGZvciB1c2UgYnkgSklUJ2VkIGNvZGUuICovCisjZGVmaW5lIEVO
QUJMRV9WTV9DT1VOVEVSUyAwCisKIC8qIFRoZSBGVEwgKmRvZXMgbm90KiB3b3JrIG9uIDMyLWJp
dCBwbGF0Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21lb25lIGFza2VkIHVzIHRvIGVuYWJs
ZSBpdC4gKi8KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI3VuZGVmIEVOQUJMRV9GVExfSklUCg==
</data>
<flag name="review"
          id="319179"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>