<?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>143146</bug_id>
          
          <creation_ts>2015-03-27 13:03:48 -0700</creation_ts>
          <short_desc>Clean up Identifier factories to clarify the meaning of StringImpl*</short_desc>
          <delta_ts>2015-03-31 23:54:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141106</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080713</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:03:48 -0700</bug_when>
    <thetext>Clean up Identifier factories to clarify the meaning of StringImpl*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080717</commentid>
    <comment_count>1</comment_count>
      <attachid>249601</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:13:35 -0700</bug_when>
    <thetext>Created attachment 249601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080725</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:28:33 -0700</bug_when>
    <thetext>Almost all changes in WebKit2 / WebKit / WebCore  are Identifier =&gt; Identifier::fromString/Identifier::fromUid.

In WTF, StringImpl* is now cleaned up to explicitly use it as uid.
Renaming isUnique to isSymbol (https://bugs.webkit.org/show_bug.cgi?id=141106#c37)
Introducing 3 string kinds,
        1. StringNormal (non-atomic, non-symbol)
        2. StringAtomic (atomic, non-symbol)
        3. StringSymbol (non-atomic, symbol)

In Identifier, explicitly define 2 factory functions, fromUid and fromString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080727</commentid>
    <comment_count>3</comment_count>
      <attachid>249603</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 13:31:32 -0700</bug_when>
    <thetext>Created attachment 249603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080923</commentid>
    <comment_count>4</comment_count>
      <attachid>249657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-28 02:00:29 -0700</bug_when>
    <thetext>Created attachment 249657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081703</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 11:37:06 -0700</bug_when>
    <thetext>Object.getOwnPropertySymbols patch becomes too large.
So this patch is spawned from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081705</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-31 11:44:34 -0700</bug_when>
    <thetext>Performance impact?

Please use Tools/Scripts/run-jsc-benchmarks Baseline:&lt;path to baseline jsc&gt; Mine:&lt;path to jsc with your changes&gt;

Preferably also configure it to run Octane, and post those results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081706</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 11:46:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Performance impact?
&gt; 
&gt; Please use Tools/Scripts/run-jsc-benchmarks Baseline:&lt;path to baseline jsc&gt;
&gt; Mine:&lt;path to jsc with your changes&gt;
&gt; 
&gt; Preferably also configure it to run Octane, and post those results.

Thanks! I&apos;ll take it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081737</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 12:29:21 -0700</bug_when>
    <thetext>First result, not using Octane. I&apos;ll setup environment to run Octane in run-jsc-benchmarks

Benchmark report for SunSpider, LongSpider, V8Spider, and JSRegress on yusuke (MacBookPro8,2).

VMs tested:
&quot;Baseline&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/Release/jsc
&quot;Mine&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/identifier/Release/jsc

Collected 4 samples per benchmark/VM, with 4 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                    Mine                                       
SunSpider:
   3d-cube                                         5.6353+-0.8267            5.4421+-0.2245          might be 1.0355x faster
   3d-morph                                        6.0991+-0.1264            6.0425+-0.0250        
   3d-raytrace                                     7.3867+-1.3110            6.8843+-0.2270          might be 1.0730x faster
   access-binary-trees                             2.4324+-0.0666     ?      2.4432+-0.1645        ?
   access-fannkuch                                 6.5162+-0.1185     ?      6.5640+-0.1765        ?
   access-nbody                                    3.1632+-0.4174     ?      3.1801+-0.6810        ?
   access-nsieve                                   3.3439+-0.1437     ?      3.3710+-0.0997        ?
   bitops-3bit-bits-in-byte                        1.9228+-0.0555            1.9150+-0.0400        
   bitops-bits-in-byte                             3.6048+-0.0783            3.5626+-0.0873          might be 1.0119x faster
   bitops-bitwise-and                              2.3672+-0.1876     ?      2.3697+-0.1335        ?
   bitops-nsieve-bits                              5.6820+-2.9908            4.6463+-1.3994          might be 1.2229x faster
   controlflow-recursive                           2.3619+-0.0920     ?      2.3641+-0.1382        ?
   crypto-aes                                      5.2573+-2.5325            4.6362+-0.2642          might be 1.1340x faster
   crypto-md5                                      2.6955+-0.0563            2.6624+-0.0451          might be 1.0124x faster
   crypto-sha1                                     2.8760+-0.2136            2.8194+-0.2818          might be 1.0201x faster
   date-format-tofte                               9.8620+-0.2264            9.7141+-0.3831          might be 1.0152x faster
   date-format-xparb                               5.5468+-0.0819            5.5127+-0.1552        
   math-cordic                                     3.4692+-0.0961            3.4542+-0.1008        
   math-partial-sums                               6.6200+-3.6915     ?      7.2188+-3.1253        ? might be 1.0904x slower
   math-spectral-norm                              2.3818+-0.0517     ?      2.3848+-0.0923        ?
   regexp-dna                                      9.0883+-4.1359            7.4827+-0.1531          might be 1.2146x faster
   string-base64                                   5.8726+-2.9952            4.8553+-0.1943          might be 1.2095x faster
   string-fasta                                    7.1832+-0.2976     ?      7.2688+-0.1834        ? might be 1.0119x slower
   string-tagcloud                                10.3871+-0.2510     ?     10.7244+-1.5029        ? might be 1.0325x slower
   string-unpack-code                             22.9854+-6.1520           22.3551+-4.2903          might be 1.0282x faster
   string-validate-input                           5.1447+-0.0773     ?      5.3025+-0.1813        ? might be 1.0307x slower

   &lt;arithmetic&gt;                                    5.7648+-0.1618            5.5837+-0.2443          might be 1.0324x faster

                                                      Baseline                    Mine                                       
LongSpider:
   3d-cube                                       937.5034+-28.5713    !    983.3462+-8.7573        ! definitely 1.0489x slower
   3d-morph                                     1590.1312+-4.7993     ?   1596.8079+-5.8036        ?
   3d-raytrace                                   819.1777+-17.7360    ?    834.9861+-19.5181       ? might be 1.0193x slower
   access-binary-trees                          1141.2209+-20.5716    ?   1151.3492+-8.5751        ?
   access-fannkuch                               355.6476+-28.1854         354.8389+-16.5104       
   access-nbody                                  675.2780+-3.6932     ^    666.6944+-2.3261        ^ definitely 1.0129x faster
   access-nsieve                                 955.2313+-29.9591         948.9088+-25.1972       
   bitops-3bit-bits-in-byte                       52.2550+-0.8546     ?     52.9308+-2.7214        ? might be 1.0129x slower
   bitops-bits-in-byte                           104.7086+-12.9789         101.7750+-4.9805          might be 1.0288x faster
   bitops-nsieve-bits                            811.8054+-16.8935    ?    822.7943+-21.4909       ? might be 1.0135x slower
   controlflow-recursive                         525.1616+-6.3043     !    534.5832+-2.3200        ! definitely 1.0179x slower
   crypto-aes                                    778.6168+-13.1455    ?    779.4603+-18.0428       ?
   crypto-md5                                    645.5275+-4.0026     ?    647.6222+-13.4067       ?
   crypto-sha1                                   739.7191+-14.2289    ?    748.9631+-36.3434       ? might be 1.0125x slower
   date-format-tofte                             844.8108+-41.1818         819.2424+-36.6379         might be 1.0312x faster
   date-format-xparb                             794.2470+-37.3342         792.3867+-71.9792       
   math-cordic                                   658.2045+-5.8346          657.2531+-2.8058        
   math-partial-sums                             594.8108+-22.7876    ?    600.8997+-28.3040       ? might be 1.0102x slower
   math-spectral-norm                            905.7029+-5.4484     ?    911.6506+-13.6982       ?
   string-base64                                 422.6147+-22.4303         414.5021+-13.2196         might be 1.0196x faster
   string-fasta                                  484.1487+-6.3226          482.7860+-9.8633        
   string-tagcloud                               234.5778+-13.3018    ?    238.8315+-1.6006        ? might be 1.0181x slower

   &lt;geometric&gt;                                   562.2380+-4.6091     ?    564.0316+-2.5589        ? might be 1.0032x slower

                                                      Baseline                    Mine                                       
V8Spider:
   crypto                                         63.4139+-2.4498           61.9439+-3.0494          might be 1.0237x faster
   deltablue                                     101.8953+-4.4657           96.8514+-16.4290         might be 1.0521x faster
   earley-boyer                                   45.6738+-1.2495     ?     45.6927+-1.1642        ?
   raytrace                                       41.2145+-2.3192           39.7695+-2.1257          might be 1.0363x faster
   regexp                                         74.3088+-3.2638     ?     74.6990+-5.3181        ?
   richards                                       84.6373+-4.7250     ?     90.2291+-5.7002        ? might be 1.0661x slower
   splay                                          42.7302+-3.5544           40.4140+-4.0788          might be 1.0573x faster

   &lt;geometric&gt;                                    61.3216+-1.0692           60.4458+-1.8795          might be 1.0145x faster

                                                      Baseline                    Mine                                       
JSRegress:
   abs-boolean                                     3.1035+-0.1283     ?      3.2075+-0.1012        ? might be 1.0335x slower
   adapt-to-double-divide                         17.1965+-0.6752           17.1837+-0.5172        
   aliased-arguments-getbyval                      1.2579+-0.0593     ?      1.4305+-0.5950        ? might be 1.1372x slower
   allocate-big-object                             2.7850+-0.1101            2.7781+-0.0495        
   arguments-named-and-reflective                 14.0236+-3.7189           13.5850+-2.7831          might be 1.0323x faster
   arguments-out-of-bounds                        15.9777+-0.7605     ?     16.1884+-2.3050        ? might be 1.0132x slower
   arguments-strict-mode                          12.6647+-2.4461           11.7845+-0.2569          might be 1.0747x faster
   arguments                                      11.4329+-3.3660     ?     11.6825+-2.9243        ? might be 1.0218x slower
   arity-mismatch-inlining                         0.9380+-0.0447     ?      0.9843+-0.2069        ? might be 1.0493x slower
   array-access-polymorphic-structure              7.3102+-0.6834     ?      9.6050+-4.3327        ? might be 1.3139x slower
   array-nonarray-polymorhpic-access              40.1147+-1.9214     ?     41.7183+-0.9603        ? might be 1.0400x slower
   array-prototype-every                         100.4833+-3.5329     ?    102.1475+-7.4441        ? might be 1.0166x slower
   array-prototype-forEach                        97.0215+-3.4324     ?     99.3673+-5.8660        ? might be 1.0242x slower
   array-prototype-map                           118.4540+-10.4749         111.4524+-9.8444          might be 1.0628x faster
   array-prototype-some                          100.6805+-6.0608     ?    102.4485+-8.3114        ? might be 1.0176x slower
   array-splice-contiguous                        48.4435+-2.5237           47.7895+-4.8558          might be 1.0137x faster
   array-with-double-add                           4.4432+-0.2995            4.4421+-0.1642        
   array-with-double-increment                     3.7227+-0.1572     ?      3.8392+-0.1810        ? might be 1.0313x slower
   array-with-double-mul-add                       5.2820+-0.1885            5.2496+-0.1389        
   array-with-double-sum                           3.4246+-0.1155     ?      3.4357+-0.1269        ?
   array-with-int32-add-sub                        7.7073+-0.0502            7.6254+-0.0663          might be 1.0107x faster
   array-with-int32-or-double-sum                  3.4621+-0.0380     ?      3.5204+-0.1001        ? might be 1.0169x slower
   ArrayBuffer-DataView-alloc-large-long-lived
                                                  40.6982+-4.0840           40.0147+-3.5477          might be 1.0171x faster
   ArrayBuffer-DataView-alloc-long-lived          16.8784+-3.5450     ?     17.5261+-4.4258        ? might be 1.0384x slower
   ArrayBuffer-Int32Array-byteOffset               4.0253+-0.1910            4.0235+-0.1830        
   ArrayBuffer-Int8Array-alloc-large-long-lived
                                                  42.0272+-4.9528     ?     43.0339+-7.6263        ? might be 1.0240x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer
                                                  28.6893+-4.9279     ?     29.0190+-5.5475        ? might be 1.0115x slower
   ArrayBuffer-Int8Array-alloc-long-lived         16.2690+-4.8019           15.1385+-0.3821          might be 1.0747x faster
   ArrayBuffer-Int8Array-alloc                    15.5809+-6.2996     ?     15.6381+-5.0596        ?
   asmjs_bool_bug                                  7.8658+-0.0987     ?      9.1540+-3.8345        ? might be 1.1638x slower
   assign-custom-setter-polymorphic                3.2542+-0.1005     ?      3.3127+-0.1421        ? might be 1.0180x slower
   assign-custom-setter                            4.3877+-0.1720     ?      4.7025+-0.2670        ? might be 1.0718x slower
   basic-set                                       9.5545+-0.3787     ?      9.8511+-0.5647        ? might be 1.0310x slower
   big-int-mul                                     4.5270+-0.1025            4.4946+-0.3037        
   boolean-test                                    3.4167+-0.1510            3.3578+-0.1334          might be 1.0175x faster
   branch-fold                                     4.1937+-0.0446     ?      4.2535+-0.1148        ? might be 1.0143x slower
   by-val-generic                                  8.6541+-0.1751     ?      8.7014+-0.1352        ?
   call-spread-apply                              36.3522+-4.4309           35.9220+-4.5184          might be 1.0120x faster
   call-spread-call                               26.2310+-0.4139     ?     28.4358+-4.0530        ? might be 1.0841x slower
   captured-assignments                            0.4978+-0.0275            0.4824+-0.0313          might be 1.0319x faster
   cast-int-to-double                              5.5855+-0.0378     ?      5.5998+-0.0518        ?
   cell-argument                                   8.7169+-0.2207     ?      8.9020+-0.7139        ? might be 1.0212x slower
   cfg-simplify                                    3.1686+-0.1111            3.0804+-0.0293          might be 1.0286x faster
   chain-getter-access                            11.4119+-0.1681           11.3120+-0.1248        
   cmpeq-obj-to-obj-other                         12.4672+-2.0397           11.8927+-1.1730          might be 1.0483x faster
   constant-test                                   5.2326+-0.0310     ?      5.3173+-0.1953        ? might be 1.0162x slower
   DataView-custom-properties                     48.2158+-4.9422           47.7755+-4.0560        
   deconstructing-parameters-overridden-by-function
                                                   0.5242+-0.0229            0.5222+-0.0271        
   delay-tear-off-arguments-strictmode            16.4005+-6.0962           16.0378+-2.3497          might be 1.0226x faster
   deltablue-varargs                             220.6406+-6.6187          217.3112+-2.6375          might be 1.0153x faster
   destructuring-arguments                        19.3137+-3.5145           18.2872+-0.4229          might be 1.0561x faster
   destructuring-swap                              5.3704+-0.0561     ?      5.4240+-0.1927        ?
   direct-arguments-getbyval                       1.2928+-0.0921            1.2174+-0.0273          might be 1.0620x faster
   div-boolean-double                              5.4901+-0.0285            5.4852+-0.0388        
   div-boolean                                     8.1672+-0.2507     ?      8.3152+-0.6649        ? might be 1.0181x slower
   double-get-by-val-out-of-bounds                 4.9183+-0.1857            4.8932+-0.1566        
   double-pollution-getbyval                       9.0648+-0.1611            9.0345+-0.0823        
   double-pollution-putbyoffset                    4.6896+-0.0618            4.6486+-0.3254        
   double-to-int32-typed-array-no-inline           2.3485+-0.0542     ?      2.4542+-0.0639        ? might be 1.0450x slower
   double-to-int32-typed-array                     2.1347+-0.0534            2.1020+-0.0202          might be 1.0156x faster
   double-to-uint32-typed-array-no-inline          2.4545+-0.0274            2.4208+-0.0318          might be 1.0139x faster
   double-to-uint32-typed-array                    2.1401+-0.0224     ?      2.1575+-0.0842        ?
   elidable-new-object-dag                        49.1843+-4.1354     ?     51.7391+-1.5152        ? might be 1.0519x slower
   elidable-new-object-roflcopter                 53.4616+-4.3610     ?     56.7514+-7.6762        ? might be 1.0615x slower
   elidable-new-object-then-call                  48.7101+-3.9136           43.9800+-1.8016          might be 1.1076x faster
   elidable-new-object-tree                       56.1705+-7.0712           52.7722+-7.4781          might be 1.0644x faster
   empty-string-plus-int                           6.1521+-0.0884     ?      7.0362+-2.8177        ? might be 1.1437x slower
   emscripten-cube2hash                           44.7760+-0.6143           42.1935+-2.6936          might be 1.0612x faster
   exit-length-on-plain-object                    17.4562+-4.8086           16.4266+-4.4949          might be 1.0627x faster
   external-arguments-getbyval                     1.4322+-0.2876            1.2967+-0.0686          might be 1.1045x faster
   external-arguments-putbyval                     2.5953+-0.3427            2.5742+-0.1653        
   fixed-typed-array-storage-var-index             1.3791+-0.1180            1.3417+-0.0092          might be 1.0278x faster
   fixed-typed-array-storage                       0.9464+-0.0417            0.9403+-0.0241        
   Float32Array-matrix-mult                        6.2306+-2.1290            5.0540+-1.4541          might be 1.2328x faster
   Float32Array-to-Float64Array-set               60.0915+-5.2168           59.0541+-0.4491          might be 1.0176x faster
   Float64Array-alloc-long-lived                  79.8263+-1.0316     ?     83.1487+-7.4699        ? might be 1.0416x slower
   Float64Array-to-Int16Array-set                 76.9496+-5.5973     ?     78.4128+-0.7445        ? might be 1.0190x slower
   fold-double-to-int                             19.5172+-4.4922           18.1194+-0.4046          might be 1.0771x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int
                                                  11.2448+-1.0320     ?     12.8923+-1.2184        ? might be 1.1465x slower
   fold-get-by-id-to-multi-get-by-offset          10.6040+-0.8930           10.3243+-0.9165          might be 1.0271x faster
   fold-multi-get-by-offset-to-get-by-offset
                                                   9.8237+-1.6383            8.1026+-1.4574          might be 1.2124x faster
   fold-multi-get-by-offset-to-poly-get-by-offset
                                                   9.2824+-1.6501            9.0139+-1.6936          might be 1.0298x faster
   fold-multi-put-by-offset-to-poly-put-by-offset
                                                   8.6982+-1.0872     ?      9.1117+-1.3450        ? might be 1.0475x slower
   fold-multi-put-by-offset-to-put-by-offset
                                                   7.0565+-0.2315            5.6555+-1.6786          might be 1.2477x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
                                                   9.9478+-0.3631     ?     10.1312+-0.3726        ? might be 1.0184x slower
   fold-put-by-id-to-multi-put-by-offset           9.8533+-1.1582            9.7422+-0.5855          might be 1.0114x faster
   fold-put-structure                              6.5596+-0.4639     ?      6.9060+-0.2761        ? might be 1.0528x slower
   for-of-iterate-array-entries                    5.0867+-0.1666            4.9739+-0.1810          might be 1.0227x faster
   for-of-iterate-array-keys                       4.2391+-0.4874            4.1625+-0.1699          might be 1.0184x faster
   for-of-iterate-array-values                     4.5025+-1.7383            4.0420+-0.2186          might be 1.1139x faster
   fround                                         19.6874+-0.5512           19.6602+-0.9341        
   ftl-library-inlining-dataview                  82.2327+-1.1729     !     91.3588+-5.6098        ! definitely 1.1110x slower
   ftl-library-inlining                          122.0204+-0.2226     ?    124.5643+-4.9804        ? might be 1.0208x slower
   function-dot-apply                              2.4053+-0.0209     ?      2.4434+-0.0656        ? might be 1.0158x slower
   function-test                                   3.6534+-0.0336            3.5992+-0.0221          might be 1.0150x faster
   function-with-eval                            108.9006+-7.9284          108.3831+-10.8178       
   gcse-poly-get-less-obvious                     20.0575+-2.5796     ?     20.1475+-2.0557        ?
   gcse-poly-get                                  21.6545+-1.9699     ?     23.1320+-1.4453        ? might be 1.0682x slower
   gcse                                            5.4515+-0.9360            5.2843+-0.8276          might be 1.0316x faster
   get-by-id-bimorphic-check-structure-elimination-simple
                                                   2.9257+-0.1420            2.9203+-0.1181        
   get-by-id-bimorphic-check-structure-elimination
                                                   6.9590+-0.0480     ?      7.0366+-0.1031        ? might be 1.0111x slower
   get-by-id-chain-from-try-block                  8.3402+-1.3704            8.0314+-1.8365          might be 1.0384x faster
   get-by-id-check-structure-elimination           5.8215+-0.7354            5.6588+-0.1336          might be 1.0288x faster
   get-by-id-proto-or-self                        18.4210+-2.1207           18.0952+-0.3754          might be 1.0180x faster
   get-by-id-quadmorphic-check-structure-elimination-simple
                                                   3.1259+-0.0291     ?      3.1664+-0.1394        ? might be 1.0130x slower
   get-by-id-self-or-proto                        18.2165+-0.5793     ?     21.1044+-6.0733        ? might be 1.1585x slower
   get-by-val-out-of-bounds                        4.6213+-0.0537     ?      4.7836+-0.2365        ? might be 1.0351x slower
   get_callee_monomorphic                          3.8990+-0.0856     ?      4.0343+-0.1411        ? might be 1.0347x slower
   get_callee_polymorphic                          3.6251+-0.1576     ?      3.6612+-0.1286        ?
   getter-no-activation                            5.8008+-0.3469            5.6454+-0.0855          might be 1.0275x faster
   getter-richards                               134.3784+-6.8125          130.0661+-7.2308          might be 1.0332x faster
   getter                                          5.9849+-0.2921            5.8763+-0.0387          might be 1.0185x faster
   global-var-const-infer-fire-from-opt            0.9294+-0.0470     ?      1.0386+-0.1692        ? might be 1.1175x slower
   global-var-const-infer                          0.9825+-0.1066            0.9015+-0.1614          might be 1.0899x faster
   HashMap-put-get-iterate-keys                   30.0208+-0.8611     ?     30.0811+-3.2542        ?
   HashMap-put-get-iterate                        29.4758+-1.4352           29.3298+-0.8124        
   HashMap-string-put-get-iterate                 30.6875+-2.0476           30.2630+-2.1260          might be 1.0140x faster
   hoist-make-rope                                12.5938+-1.8461     ?     13.4195+-0.3229        ? might be 1.0656x slower
   hoist-poly-check-structure-effectful-loop
                                                   5.5029+-0.0200     ?      5.5180+-0.0349        ?
   hoist-poly-check-structure                      3.9716+-0.1314     ?      4.0153+-0.1963        ? might be 1.0110x slower
   imul-double-only                                7.9608+-0.3337     ?      8.6046+-2.0358        ? might be 1.0809x slower
   imul-int-only                                  10.4820+-0.3285     ?     10.8361+-0.7690        ? might be 1.0338x slower
   imul-mixed                                      8.5332+-0.1705            8.2173+-0.9343          might be 1.0384x faster
   in-four-cases                                  19.9512+-0.4652           19.8315+-0.3785        
   in-one-case-false                              10.7075+-0.1518           10.6578+-0.0949        
   in-one-case-true                               10.6724+-0.1953           10.6334+-0.0582        
   in-two-cases                                   10.9909+-0.2134     ?     11.0800+-0.4116        ?
   indexed-properties-in-objects                   3.3408+-0.4288            3.1584+-0.0544          might be 1.0578x faster
   infer-closure-const-then-mov-no-inline          4.1874+-0.1841            4.1086+-0.1407          might be 1.0192x faster
   infer-closure-const-then-mov                   18.2084+-0.5326           17.8945+-0.4736          might be 1.0175x faster
   infer-closure-const-then-put-to-scope-no-inline
                                                  13.3309+-0.6924           13.2189+-0.6054        
   infer-closure-const-then-put-to-scope          23.9834+-0.4736     ?     24.0350+-0.4838        ?
   infer-closure-const-then-reenter-no-inline
                                                  56.2847+-4.7050           56.1269+-3.2945        
   infer-closure-const-then-reenter              138.2108+-10.4181    ?    139.2700+-6.6778        ?
   infer-constant-global-property                 31.6315+-1.1774           31.5061+-0.9609        
   infer-constant-property                         2.9818+-0.1056            2.9785+-0.1164        
   infer-one-time-closure-ten-vars                13.2581+-0.8302     ?     13.9448+-4.2653        ? might be 1.0518x slower
   infer-one-time-closure-two-vars                12.5753+-0.6067     ?     13.3019+-1.9465        ? might be 1.0578x slower
   infer-one-time-closure                         12.4528+-0.4170           12.3430+-0.3875        
   infer-one-time-deep-closure                    23.0263+-4.6302           21.3444+-0.5841          might be 1.0788x faster
   inline-arguments-access                         4.7427+-0.2010            4.5918+-0.1666          might be 1.0329x faster
   inline-arguments-aliased-access                 4.6186+-0.2595     ?      4.6206+-0.1660        ?
   inline-arguments-local-escape                   4.6634+-0.1099     ?      4.8917+-0.6974        ? might be 1.0490x slower
   inline-get-scoped-var                           5.5990+-0.0192            5.5920+-0.0302        
   inlined-put-by-id-transition                   12.7468+-2.0369           11.6516+-0.7181          might be 1.0940x faster
   int-or-other-abs-then-get-by-val                5.6766+-0.0161     ?      5.6777+-0.1007        ?
   int-or-other-abs-zero-then-get-by-val          20.0916+-1.6161           20.0161+-3.4022        
   int-or-other-add-then-get-by-val                5.5697+-0.0264     ?      5.5908+-0.0717        ?
   int-or-other-add                                5.6411+-0.0895     ?      5.7104+-0.1988        ? might be 1.0123x slower
   int-or-other-div-then-get-by-val                4.7087+-0.0256            4.6896+-0.0269        
   int-or-other-max-then-get-by-val                4.7458+-0.0435            4.7438+-0.0364        
   int-or-other-min-then-get-by-val                4.7317+-0.0601            4.7131+-0.0791        
   int-or-other-mod-then-get-by-val                4.4659+-0.0777            4.4448+-0.0327        
   int-or-other-mul-then-get-by-val                4.4262+-0.0648            4.4016+-0.0071        
   int-or-other-neg-then-get-by-val                5.1699+-0.0188            5.1487+-0.0181        
   int-or-other-neg-zero-then-get-by-val          23.1425+-4.9950           20.8040+-3.7329          might be 1.1124x faster
   int-or-other-sub-then-get-by-val                5.6215+-0.0352            5.5522+-0.0422          might be 1.0125x faster
   int-or-other-sub                                4.1865+-0.0591            4.1251+-0.0380          might be 1.0149x faster
   int-overflow-local                              5.1078+-0.0657            5.0924+-0.0252        
   Int16Array-alloc-long-lived                    61.8057+-3.8693           61.0450+-6.1071          might be 1.0125x faster
   Int16Array-bubble-sort-with-byteLength         23.1740+-0.9370     ?     25.0162+-4.8986        ? might be 1.0795x slower
   Int16Array-bubble-sort                         24.1298+-2.7438           24.1125+-2.1742        
   Int16Array-load-int-mul                         1.7117+-0.0704            1.6995+-0.0560        
   Int16Array-to-Int32Array-set                   60.3849+-0.1494     !     66.5259+-4.7829        ! definitely 1.1017x slower
   Int32Array-alloc-large                         30.2036+-3.4240     ?     30.9112+-2.6073        ? might be 1.0234x slower
   Int32Array-alloc-long-lived                    65.2349+-4.7380     ?     66.0720+-3.1060        ? might be 1.0128x slower
   Int32Array-alloc                                3.6672+-0.0960     ?      5.9087+-2.2374        ? might be 1.6112x slower
   Int32Array-Int8Array-view-alloc                10.7181+-5.0646     ?     13.1228+-0.9455        ? might be 1.2244x slower
   int52-spill                                     7.0837+-0.2048     ?      7.1232+-0.1400        ?
   Int8Array-alloc-long-lived                     53.8125+-4.1864           52.7590+-4.5165          might be 1.0200x faster
   Int8Array-load-with-byteLength                  4.0134+-0.1780            3.8881+-0.0350          might be 1.0322x faster
   Int8Array-load                                  3.9625+-0.1613     ?      4.0686+-0.2255        ? might be 1.0268x slower
   integer-divide                                 13.4788+-1.7422           12.8658+-0.2347          might be 1.0476x faster
   integer-modulo                                  2.3658+-0.1452            2.3003+-0.0503          might be 1.0285x faster
   large-int-captured                              5.9592+-0.2072            5.8726+-0.0236          might be 1.0147x faster
   large-int-neg                                  17.7653+-0.4935     ?     18.8929+-3.6260        ? might be 1.0635x slower
   large-int                                      17.3626+-2.6058     ?     17.8676+-3.5841        ? might be 1.0291x slower
   logical-not                                     5.1319+-0.1070     ?      5.2973+-0.6646        ? might be 1.0322x slower
   lots-of-fields                                 14.2731+-0.9803           13.8617+-0.6443          might be 1.0297x faster
   make-indexed-storage                            3.2538+-0.2688     ?      3.4366+-0.2006        ? might be 1.0562x slower
   make-rope-cse                                   6.6190+-1.9970            6.4431+-2.0791          might be 1.0273x faster
   marsaglia-larger-ints                          47.5090+-5.2656           46.2736+-1.5693          might be 1.0267x faster
   marsaglia-osr-entry                            27.9537+-5.1668           25.9082+-2.8556          might be 1.0790x faster
   max-boolean                                     3.0325+-0.1551     ?      3.0408+-0.1853        ?
   method-on-number                               19.1545+-0.8813           19.1463+-0.3896        
   min-boolean                                     2.9884+-0.1160            2.9415+-0.0935          might be 1.0160x faster
   minus-boolean-double                            3.3685+-0.0783            3.2651+-0.1103          might be 1.0317x faster
   minus-boolean                                   2.7172+-0.0104     ?      2.7502+-0.0732        ? might be 1.0121x slower
   misc-strict-eq                                 42.0126+-3.8514           40.5999+-1.2340          might be 1.0348x faster
   mod-boolean-double                             11.5218+-1.1092     ?     11.5757+-0.5961        ?
   mod-boolean                                     8.2332+-0.1853     ?      8.8418+-2.1457        ? might be 1.0739x slower
   mul-boolean-double                              3.9012+-0.1704            3.7795+-0.0095          might be 1.0322x faster
   mul-boolean                                     2.9899+-0.1366            2.9445+-0.0214          might be 1.0154x faster
   neg-boolean                                     3.2233+-0.0331     ?      3.2497+-0.0381        ?
   negative-zero-divide                            0.3837+-0.0170            0.3813+-0.0134        
   negative-zero-modulo                            0.4669+-0.1534            0.3840+-0.0123          might be 1.2158x faster
   negative-zero-negate                            0.3695+-0.0585            0.3544+-0.0117          might be 1.0425x faster
   nested-function-parsing                        43.8337+-3.9877     ?     43.9905+-5.4256        ?
   new-array-buffer-dead                           3.3653+-0.0299            3.3430+-0.0452        
   new-array-buffer-push                           7.3150+-0.6778            7.0754+-0.2874          might be 1.0339x faster
   new-array-dead                                 13.4354+-0.8845           13.2428+-0.6179          might be 1.0145x faster
   new-array-push                                  4.4493+-0.0530     ?      4.4738+-0.0712        ?
   number-test                                     3.3275+-0.1070            3.3135+-0.1552        
   object-closure-call                             6.9162+-0.1029     ?      7.0329+-0.2323        ? might be 1.0169x slower
   object-test                                     3.4256+-0.1103     ?      3.4492+-0.1277        ?
   obvious-sink-pathology-taken                  163.9227+-7.7855     ?    166.1490+-4.3187        ? might be 1.0136x slower
   obvious-sink-pathology                        164.3690+-2.9504          164.1571+-9.4036        
   obviously-elidable-new-object                  39.5768+-0.4746     ?     44.5896+-5.5277        ? might be 1.1267x slower
   plus-boolean-arith                              2.9264+-0.1476            2.8796+-0.1734          might be 1.0162x faster
   plus-boolean-double                             3.2928+-0.1670     ?      3.3339+-0.1839        ? might be 1.0125x slower
   plus-boolean                                    2.9635+-0.0679     ?      3.0045+-0.0884        ? might be 1.0138x slower
   poly-chain-access-different-prototypes-simple
                                                   3.4810+-0.1838            3.3849+-0.0177          might be 1.0284x faster
   poly-chain-access-different-prototypes          2.9150+-0.0781     ?      3.0085+-0.0304        ? might be 1.0321x slower
   poly-chain-access-simpler                       3.5714+-0.5142            3.4380+-0.1423          might be 1.0388x faster
   poly-chain-access                               2.9126+-0.1115     ?      3.0053+-0.0938        ? might be 1.0318x slower
   poly-stricteq                                  60.1942+-0.2081     ?     63.7119+-5.9754        ? might be 1.0584x slower
   polymorphic-array-call                          1.4264+-0.1519            1.3713+-0.2092          might be 1.0402x faster
   polymorphic-get-by-id                           3.3870+-0.2178            3.3234+-0.0277          might be 1.0191x faster
   polymorphic-put-by-id                          33.8445+-8.3492           33.6788+-0.8851        
   polymorphic-structure                          19.7099+-3.3952     ?     20.6815+-4.7565        ? might be 1.0493x slower
   polyvariant-monomorphic-get-by-id               9.5603+-0.1780            9.4493+-0.1603          might be 1.0117x faster
   proto-getter-access                            11.4162+-0.3120           11.3123+-0.3887        
   put-by-id-replace-and-transition                9.2173+-0.4414     ?      9.5267+-0.3840        ? might be 1.0336x slower
   put-by-id-slightly-polymorphic                  3.0734+-0.1503     ?      3.0945+-0.1081        ?
   put-by-id                                      15.3000+-0.6690           14.6467+-0.2349          might be 1.0446x faster
   put-by-val-direct                               0.7552+-0.3102            0.6527+-0.0158          might be 1.1570x faster
   put-by-val-large-index-blank-indexing-type
                                                   7.3573+-3.0658     ?      8.7888+-4.4129        ? might be 1.1946x slower
   put-by-val-machine-int                          2.8520+-0.0821            2.7844+-0.1138          might be 1.0243x faster
   rare-osr-exit-on-local                         16.4058+-0.3885     ?     16.5670+-0.2899        ?
   register-pressure-from-osr                     25.3573+-3.3192           23.2443+-0.1175          might be 1.0909x faster
   setter                                          5.8979+-0.3759     ?      6.1323+-1.1367        ? might be 1.0397x slower
   simple-activation-demo                         28.2433+-3.2177           26.4990+-0.4997          might be 1.0658x faster
   simple-getter-access                           14.3135+-0.8034     ?     15.3601+-2.3712        ? might be 1.0731x slower
   simple-poly-call-nested                         8.4711+-0.3251     ?      8.5092+-0.3024        ?
   simple-poly-call                                1.4924+-0.1187     ?      1.5095+-0.2155        ? might be 1.0115x slower
   sin-boolean                                    20.3177+-2.7400     ?     22.1544+-0.5473        ? might be 1.0904x slower
   sinkable-new-object-dag                        77.7684+-3.2921     ?     80.7810+-2.8404        ? might be 1.0387x slower
   sinkable-new-object-taken                      57.4024+-3.1972     ?     58.3740+-4.7410        ? might be 1.0169x slower
   sinkable-new-object                            43.4047+-4.4606           42.8701+-2.3468          might be 1.0125x faster
   slow-array-profile-convergence                  3.0512+-0.1816     ?      3.0845+-0.0573        ? might be 1.0109x slower
   slow-convergence                                3.5784+-0.1208     ?      3.6047+-0.2576        ?
   sparse-conditional                              1.3474+-0.1510            1.3110+-0.0146          might be 1.0277x faster
   splice-to-remove                               21.1516+-4.5606           18.0931+-0.2807          might be 1.1690x faster
   string-char-code-at                            17.9282+-4.3536           17.2486+-1.5261          might be 1.0394x faster
   string-concat-object                            2.8364+-0.9674            2.7655+-0.5849          might be 1.0256x faster
   string-concat-pair-object                       2.7239+-0.5591     ?      2.7786+-0.9421        ? might be 1.0201x slower
   string-concat-pair-simple                      14.9527+-2.8256     ?     15.5881+-4.4191        ? might be 1.0425x slower
   string-concat-simple                           15.6957+-3.1500           15.1970+-3.2209          might be 1.0328x faster
   string-cons-repeat                             10.3460+-3.6113            8.9625+-0.9730          might be 1.1544x faster
   string-cons-tower                               8.8694+-1.6195     ?      9.4406+-1.8179        ? might be 1.0644x slower
   string-equality                                18.2830+-0.2797     ?     18.4494+-0.3666        ?
   string-get-by-val-big-char                      8.5414+-0.3911            8.3685+-0.0901          might be 1.0207x faster
   string-get-by-val-out-of-bounds-insane          4.0970+-0.0686     !      4.3585+-0.1524        ! definitely 1.0638x slower
   string-get-by-val-out-of-bounds                 5.6566+-0.0698            5.4665+-0.2672          might be 1.0348x faster
   string-get-by-val                               3.8069+-0.1616     ?      3.9148+-0.2430        ? might be 1.0283x slower
   string-hash                                     2.2851+-0.0521            2.2841+-0.0512        
   string-long-ident-equality                     15.9465+-1.6368           15.1943+-0.4562          might be 1.0495x faster
   string-out-of-bounds                           15.8334+-0.5343     ?     16.7520+-3.2657        ? might be 1.0580x slower
   string-repeat-arith                            37.4462+-6.8180     ?     40.4728+-4.9967        ? might be 1.0808x slower
   string-sub                                     76.6371+-12.7550    ?     80.0655+-3.6973        ? might be 1.0447x slower
   string-test                                     3.2250+-0.1923     ?      3.2500+-0.0607        ?
   string-var-equality                            32.2584+-0.5086           31.9219+-0.2123          might be 1.0105x faster
   structure-hoist-over-transitions                2.8644+-0.0642            2.8514+-0.1325        
   substring-concat-weird                         47.0954+-4.1738           46.1545+-3.8281          might be 1.0204x faster
   substring-concat                               46.0593+-1.7405     ?     47.5220+-4.8934        ? might be 1.0318x slower
   substring                                      54.2322+-5.3613           53.3533+-5.7962          might be 1.0165x faster
   switch-char-constant                            2.9285+-0.0333     ?      2.9991+-0.2037        ? might be 1.0241x slower
   switch-char                                     6.6383+-0.0172     ?      7.1362+-1.1726        ? might be 1.0750x slower
   switch-constant                                 9.0099+-0.4350            8.8519+-0.0471          might be 1.0179x faster
   switch-string-basic-big-var                    17.3363+-3.7032     ?     17.4444+-4.3102        ?
   switch-string-basic-big                        15.1542+-1.0470           14.6340+-0.7916          might be 1.0356x faster
   switch-string-basic-var                        15.6473+-0.1915     ?     17.0310+-4.3118        ? might be 1.0884x slower
   switch-string-basic                            14.9706+-3.5054           13.6093+-0.2441          might be 1.1000x faster
   switch-string-big-length-tower-var             22.0668+-4.0533     ?     23.5825+-4.1871        ? might be 1.0687x slower
   switch-string-length-tower-var                 17.7955+-3.6107           16.9992+-0.2881          might be 1.0468x faster
   switch-string-length-tower                     13.4550+-0.2795     ?     14.2233+-3.0091        ? might be 1.0571x slower
   switch-string-short                            14.6580+-3.9526           13.1605+-0.1527          might be 1.1138x faster
   switch                                         13.3792+-0.7334     ?     13.5033+-0.5131        ?
   tear-off-arguments-simple                       3.5458+-0.1247     ?      3.5955+-0.0545        ? might be 1.0140x slower
   tear-off-arguments                              4.9512+-0.0778            4.9085+-0.0244        
   temporal-structure                             14.3898+-0.3566     ?     14.5500+-0.2584        ? might be 1.0111x slower
   to-int32-boolean                               16.4320+-0.9564     ?     16.5020+-1.0607        ?
   try-catch-get-by-val-cloned-arguments          17.1218+-7.0712           15.1038+-0.3700          might be 1.1336x faster
   try-catch-get-by-val-direct-arguments           7.7912+-4.2721     ?      9.5403+-4.9859        ? might be 1.2245x slower
   try-catch-get-by-val-scoped-arguments           7.7432+-0.2950     ?     10.1133+-4.5481        ? might be 1.3061x slower
   undefined-property-access                     412.0018+-3.3692          411.4041+-10.6943       
   undefined-test                                  3.3794+-0.1142            3.2518+-0.0249          might be 1.0392x faster
   unprofiled-licm                                23.8595+-1.6782           23.2005+-0.4740          might be 1.0284x faster
   varargs-call                                   15.8480+-0.2993     ?     16.6425+-2.0972        ? might be 1.0501x slower
   varargs-construct-inline                       24.3516+-0.4137     ?     24.4457+-2.2781        ?
   varargs-construct                              35.4243+-3.9162           34.4066+-0.4665          might be 1.0296x faster
   varargs-inline                                  9.3729+-0.1935            9.3037+-0.1563        
   varargs-strict-mode                            10.5999+-1.2984           10.1732+-0.1570          might be 1.0419x faster
   varargs                                        10.4940+-0.6783     ?     11.9133+-4.1850        ? might be 1.1353x slower
   weird-inlining-const-prop                       2.4048+-0.0822            2.3920+-0.1220        

   &lt;geometric&gt;                                     9.4536+-0.0906     ?      9.4818+-0.0443        ? might be 1.0030x slower

                                                      Baseline                    Mine                                       

                                                      Baseline                    Mine                                       
Geomean of preferred means:
   &lt;scaled-result&gt;                                37.0221+-0.1656           36.6503+-0.2423          might be 1.0101x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081740</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-31 12:30:36 -0700</bug_when>
    <thetext>Results look very promising so far</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081750</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 12:47:25 -0700</bug_when>
    <thetext>OK. I&apos;ve checked out Octane r31 (Octane2), set up .run-jsc-benchmarks OctanePath and run-jsc-benchmarks --octane.

Here is the result.

Benchmark report for Octane on yusuke (MacBookPro8,2).

VMs tested:
&quot;Baseline&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/Release/jsc
&quot;Mine&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/identifier/Release/jsc

Collected 4 samples per benchmark/VM, with 4 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                    Mine                                       

encrypt                 0.25831+-0.00168    ?     0.25918+-0.00367       ?
decrypt                 4.43019+-0.04410          4.41634+-0.04528       
deltablue      x2       0.22831+-0.00633          0.22479+-0.00636         might be 1.0157x faster
earley                  0.66089+-0.00957    ?     0.66644+-0.01086       ?
boyer                   7.34057+-0.08287    ?     7.34485+-0.04041       ?
navier-stokes  x2       5.40476+-0.05512    ?     5.42682+-0.08338       ?
raytrace       x2       1.43530+-0.08010          1.41643+-0.08197         might be 1.0133x faster
richards       x2       0.12240+-0.00251    ?     0.12294+-0.00341       ?
splay          x2       0.41684+-0.00369          0.41299+-0.00451       
regexp         x2      35.95270+-0.46315         35.86742+-0.55205       
pdfjs          x2      49.29292+-1.37956         48.88469+-0.78112       
mandreel       x2      59.80098+-0.54078         59.53940+-1.39673       
gbemu          x2      43.88240+-0.30637         43.43907+-0.82390         might be 1.0102x faster
closure                 0.58956+-0.00742    ?     0.59907+-0.00715       ? might be 1.0161x slower
jquery                  7.50632+-0.06683    ?     7.57204+-0.06387       ?
box2d          x2      13.63611+-0.41038         13.48633+-0.17487         might be 1.0111x faster
zlib           x2     429.82747+-30.28566       427.36043+-5.33524       
typescript     x2     881.30328+-20.24660   ?   885.94214+-17.78960      ?

&lt;geometric&gt;             7.39157+-0.03937          7.36756+-0.02529         might be 1.0033x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081751</commentid>
    <comment_count>11</comment_count>
      <attachid>249657</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-31 12:49:19 -0700</bug_when>
    <thetext>Comment on attachment 249657
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081764</commentid>
    <comment_count>12</comment_count>
      <attachid>249657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 13:37:47 -0700</bug_when>
    <thetext>Comment on attachment 249657
Patch

Thank you! I&apos;ve set cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081779</commentid>
    <comment_count>13</comment_count>
      <attachid>249657</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-31 14:26:03 -0700</bug_when>
    <thetext>Comment on attachment 249657
Patch

Clearing flags on attachment: 249657

Committed r182205: &lt;http://trac.webkit.org/changeset/182205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081780</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-31 14:26:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081818</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-31 16:05:09 -0700</bug_when>
    <thetext>This patch was made with an old checkout, and broke bindings generation tests: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/4075/steps/bindings-generation-tests/logs/stdio

I&apos;ll update the results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081886</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 21:43:07 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; This patch was made with an old checkout, and broke bindings generation
&gt; tests:
&gt; https://build.webkit.org/builders/
&gt; Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/4075/steps/bindings-
&gt; generation-tests/logs/stdio
&gt; 
&gt; I&apos;ll update the results.

Oops! Thank you for your fix. http://trac.webkit.org/changeset/182205
It seems that when rebasing the patch I failed to merge http://trac.webkit.org/changeset/181156.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081902</commentid>
    <comment_count>17</comment_count>
      <attachid>249657</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-31 23:18:11 -0700</bug_when>
    <thetext>Comment on attachment 249657
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.h:744
&gt; +    WTF_EXPORT_STRING_API StringImpl&amp; extractFoldedStringInSymbol()

This broke some builds. A function cannot be both exported and inline.

I&apos;ll fix it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081915</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-31 23:54:25 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 249657 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249657&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringImpl.h:744
&gt; &gt; +    WTF_EXPORT_STRING_API StringImpl&amp; extractFoldedStringInSymbol()
&gt; 
&gt; This broke some builds. A function cannot be both exported and inline.
&gt; 
&gt; I&apos;ll fix it now.

Thanks! Sorry for troubling you.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249601</attachid>
            <date>2015-03-27 13:13:35 -0700</date>
            <delta_ts>2015-03-27 13:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143146-20150328051255.patch</filename>
            <type>text/plain</type>
            <size>212642</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDVmMzkxYWQxMjgxYzI0Njk4YjY0NTEyNTdlYzhiMTU1Y2VlOTQyLi41ZDNlZGRjYTg4NjNlMDdm
ZWY1M2RkMGNmODRkMTgwYWJmMTMwYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlm
eSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGEgbG90IG9mIHBsYWNlcywgYElkZW50aWZpZXIo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29uc3RydWN0b3IgaXMgdXNlZC4KKyAgICAg
ICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVzZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRp
ZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9ybWFsIHN0cmluZywgaXQgaXMgcmVwbGFj
YWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZAorICAgICAgICAyKSBgdWlkYCwgd2hpY2ggaG9sZHMg
YGlzU3ltYm9sYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9scy4KKyAgICAgICAgU28g
d2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3RyaW5ncyBhbmQgaW5zdGVh
ZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAgICArIGBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKWAuCisgICAgICAgIEp1
c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmdzLiBUaGUgc3ltYm9sLW5lc3Mgb2Yg
U3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisgICAgICAgICsgYElkZW50aWZpZXI6OmZyb21VaWQo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZCBmb3IgMikgYHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2Vw
dC4KKworICAgICAgICBBbmQgdG8gY2xlYW4gdXAgYFN0cmluZ0ltcGxgIHdoaWNoIGlzIHVzZWQg
YXMgdWlkLAorICAgICAgICB3ZSBpbnRyb2R1Y2UgYFN0cmluZ0tpbmRgIGludG8gYFN0cmluZ0lt
cGxgLiBUaGVyZSdzIDMga2luZHMKKyAgICAgICAgMS4gU3RyaW5nTm9ybWFsIChub24tYXRvbWlj
LCBub24tc3ltYm9sKQorICAgICAgICAyLiBTdHJpbmdBdG9taWMgKGF0b21pYywgbm9uLXN5bWJv
bCkKKyAgICAgICAgMy4gU3RyaW5nU3ltYm9sIChub24tYXRvbWljLCBzeW1ib2wpCisgICAgICAg
IFRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQW5kIChhdG9taWMsIHN5bWJvbCkgY2FzZSBz
aG91bGQgbm90IGV4aXN0LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdE1ha2VGdW5jdGlvbik6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5n
LmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAg
ICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJzOjpy
ZWFsbHlBZGQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFp
bHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21F
eGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRk
Q29uc3RydWN0YWJsZUZ1bmN0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAg
KHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFkZFZhcik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJB
cmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChK
U0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgor
ICAgICAgICAoSlNDOjphZGRFcnJvckluZm8pOgorICAgICAgICAoSlNDOjpoYXNFcnJvckluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBl
Pjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6aXNTeW1ib2wpOgorICAgICAgICAoSlNDOjpJZGVu
dGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVVpZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJ
bkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
OgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5
U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JG
dW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9J
ZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojp0cnlKU09OUFBhcnNlKToKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1l
Ojphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRk
S25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RT
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisKIDIwMTUtMDMtMjYgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgbW9yZSBvYmplY3RzIHVz
ZSBGYXN0TWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmZWNiYzQyZmQ1MmU0M2U4ODIzMjE0MjY1NTVkZWFkMWZkMDEw
NWMuLmEyNDdhMDJlY2FhYjZhNTQwNjcxYTg2ZmQxNTllMjg3NDFmY2QyMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFN0cmluZ0tpbmQgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAg
ICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKToKKyAgICAgICAgV2hlbiByZWdp
c3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLAorICAgICAgICBpdCBzaG91
bGQgbm90IGJlIGEgc3ltYm9sIHN0cmluZworICAgICAgICBiZWNhdXNlIHN5bWJvbCBhbmQgYXRv
bWljIHR5cGVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYSBzeW1ib2wg
c3RyaW5nIGNvbWVzLCB3ZSBleHRyYWN0IGFuIG93bmVyIHN0cmluZworICAgICAgICBmcm9tIGEg
c3ltYm9sIHN0cmluZyBieSB1c2luZyBgU3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0cmluZ0lu
U3ltYm9sKClgLgorICAgICAgICBJdCBhbHdheXMgc3VjY2VlZHMgYmVjYXVzZSBhIHN5bWJvbCAo
bm9uIGVtcHR5KSBzdHJpbmcKKyAgICAgICAgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQg
aGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1wdHkgc3ltYm9sIHN0cmluZyBkb2Vzbid0
IGhhdmUgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkg
YCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZCk6CisgICAgICAgIChXVEY6OkF0
b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp+U3RyaW5nSW1w
bCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbCk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmbGFnSXNTeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2lu
ZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjppc1N5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRv
bWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmZsYWdJc1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmlzVW5pcXVlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKTog
RGVsZXRlZC4KKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgQ01ha2Ugb24gTWFjLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGRkNjdjODAzOTc2MGZkODVjOTM3OWVhMDMzMjQwY2YwZTdkZDU5ZmYuLjljMTFi
MTVhNTRjNmY4OTI0NzExMTcxODRiMWJkMmRkZTlkODdiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMzMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgSWRlbnRpZmllciBjcmVhdGlvbnMuCisKKyAg
ICAgICAgMS4gSWYgdGhlIGNvZGUgY3JlYXRlcyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1wbCoK
KyAgICAgICAgd2hpY2ggaXMgdHJlYXRlZCBhcyBzeW1ib2wgb3Igc3RyaW5nKHVuaXF1ZSBpZCks
IHVzZSBJZGVudGlmaWVyOjpmcm9tVWlkLgorICAgICAgICAyLiBJZiB0aGUgY29kZSBjcmVhdGVz
IElkZW50aWZpZXIgZnJvbSBzdHJpbmcsIHVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nLgorCisg
ICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxh
Y2VtZW50U2NyaXB0SW5qZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFN0cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6
CisgICAgICAgIChXZWJDb3JlOjphZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRK
U09ORm9yUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJv
dGF0aW9uUmF0ZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlv
bk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERv
Y3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1h
Z2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExp
c3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93
TGlzdDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRJbnRlcm5hbFNsb3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJ
bnRlcm5hbFNsb3RGcm9tT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNl
cmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVu
dHM6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2Vi
U2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjppZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGJyaWRnZS90
ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdCk6CisKIDIwMTUtMDMtMjcgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIGFkZGl0aW9u
YWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBwcm9jZXNzZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAwNGY1ZjgyNTg5YzBhNDRlNjYwMGI3MjBiMmU4NDNmODE1ZmM3NjRhLi41MzA5
MDBhZmQwMTNjOTRlOGRlZWZmYmMyMTlhMGU0YTY0OGE2ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xh
cmlmeSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgdG8gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUlu
c3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDllM2M5ZDcxYjNlN2E4NmNmYmU0ZTEwMDRiMWMw
MGVkYjkyM2JhZTEuLjczNDk5MTRlZGU5ZmZiYzJlYmYzMDc1ZDQ0NWFiMDVlNmY4NGY2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBJZGVudGlmaWVyIGZhY3Rv
cmllcyB0byBjbGFyaWZ5IHRoZSBtZWFuaW5nIG9mIFN0cmluZ0ltcGwqCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGNoYW5nZSB0byBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6
CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmVudW1lcmF0ZSk6CisKIDIwMTUtMDMtMjcg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIGFkZGl0
aW9uYWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBwcm9jZXNzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKaW5kZXggOWIxY2I4ZjVmM2YxZGRjZjdhNmY4YWExYjdkMGJhZmJlMzIxODlmZS4uYTBiODNl
NzdmZjU3MDI4N2VmNjdlOTQ3N2MxZTkyN2RiOTU5N2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMSw4
ICs1MjEsMTAgQEAKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNWYWx1ZXMt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAgICAgICAgIFN0YXRpY1ZhbHVlRW50cnkq
IGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Z2V0
UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkKLSAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lKSk7
CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShlbnRyeS0+YXR0
cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
bmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtNTMyLDggKzUz
NCwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY0Z1bmN0aW9ucy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCog
bmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRy
eSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZW50cnkt
PmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IHNo
b3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFuYW1lLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcobmFtZSkpKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDIzNGQyNDg4ZmY4OTBi
OGJlZTY5N2VmNTVhYTY4MDM4MGExODFhNDIuLjZjZTFjMmMxMTMzYjY5MGE3N2NkYzlhY2FjOGFm
MzdjYTg1MzA3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGEKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgo
MSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKLSAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBu
YW1lLT5pZGVudGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXIoZXhlYywgImFub255bW91
cyIpOworICAgIElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4
ZWMtPnZtKCkpIDogSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYW5vbnltb3VzIik7CiAg
ICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PcGFxdWVKU1N0cmluZy5jcHAKaW5kZXggMjJjMTYyMzBjN2MxZDM2OTExYzdkNTg5Y2U1MGYw
OTQyODdhMWQ5ZS4uN2Y5ZWRiNDEzNmUyNzQ5OTc0N2QyOTZkMmYxYTJkYzQ4OWIwNDQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCkBAIC02OSw5ICs3MCw5
IEBAIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6OmlkZW50aWZpZXIoVk0qIHZtKSBjb25zdAog
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcihJZGVudGlmaWVyOjpFbXB0eUlkZW50aWZpZXIpOwog
CiAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBy
ZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwg
bV9zdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIodm0sIG1fc3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5n
dGgoKSk7CiB9CiAKIGNvbnN0IFVDaGFyKiBPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVycygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCmluZGV4IDJkZjc4NzY0MTBlNzhjZjlmYWJmMjQxNzg2ZTYwMjQyZmU0ZWVlMDkuLmYz
YTIyMzhlYmE5OGZjMTI4MjdiODFkZWYyYzgwYzYzMTRjZTA1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1
bWVudChib29sIGFyZ3VtZW50KQogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKIAot
ICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVy
KG1fZXhlYywgbV9uYW1lKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdl
dChtX2V4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBtX25hbWUpKTsKICAgICBp
ZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVl
OwogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5k
ZXggYzAxMjQ4NzdlYmI4OWM3MGNiZjQwYjk3NTg1Yzc3NTg1NzBlNmJiYS4uY2IzMDYwODUyOGFl
NDQ3ZjgyY2IzOTMwOWEwNDM5OTFkZTAwOTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVFeGVjdXRhYmxlSW50ZXJuYWwoY29uc3QgUwogICAgICAgICAKICAgICAgICAgaWYgKGNsb3Nl
ZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFy
aWFibGUtPmlzVW5pcXVlKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJs
ZS0+aXNTeW1ib2woKSk7CiAgICAgfQogICAgIGJvZHktPm92ZXJyaWRlTmFtZShuYW1lKTsKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCBraW5kLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEzZjQ2YjMyYzQ4MGUwNTc4
OTYzNzlkZmE0Li43YjQ3ODNhMWYwMTJlMWMyM2YwYWE4MWJiZjVmNjE3ZjNjZWIwMWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zMSwx
MiArMzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVmaW5lIElOSVRJQUxJU0Vf
QlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSksIG1fIyNuYW1lIyNQcml2
YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
LiIgI25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFt
ZTs7CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJ
ZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSWRlbnRpZmll
ciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElG
SUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1l
OyB9CiAKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgSU5JVElBTElT
RV9CVUlMVElOX05BTUVTKG5hbWUpLCBtXyMjbmFtZSMjU3ltYm9sKElkZW50aWZpZXI6OmZyb21V
aWQoUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFtZSkpKSkKKyNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUp
IGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisgICAgREVDTEFSRV9CVUlMVElOX0lERU5USUZJ
RVJfQUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1N5bWJvbCgp
IGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1ib2w7IH0KKwogI2RlZmluZSBJTklUSUFMSVNF
X1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZCht
XyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOwogI2RlZmluZSBJTklUSUFM
SVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFk
ZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUpOwogICAgIApAQCAtNDgs
MTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIDogbV9lbXB0eUlkZW50
aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKICAgICAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUykKICAg
ICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJ
TklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0VfQlVJTFRJTl9TWU1CT0xT
KQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BV
QkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
V0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKICAg
ICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfUFVCTElD
X1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkK
KyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9T
WU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICB9CiAKICAgICBj
b25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7
CkBAIC02MCwxMSArNjksMTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsKICAgICAKICAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJf
QUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKyAgICBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JV
SUxUSU5fU1lNQk9MX0FDQ0VTU09SKQogCiBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9lbXB0
eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9OQU1FUykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKyAgICBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUNMQVJFX0JVSUxUSU5f
U1lNQk9MUykKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBjb25zdCBJ
ZGVudGlmaWVyKiwgSWRlbnRpZmllclJlcEhhc2g+IEJ1aWx0aW5OYW1lc01hcDsKICAgICBCdWls
dGluTmFtZXNNYXAgbV9wdWJsaWNUb1ByaXZhdGVNYXA7CiAgICAgQnVpbHRpbk5hbWVzTWFwIG1f
cHJpdmF0ZVRvUHVibGljTWFwOwpAQCAtNzMsNyArODQsOSBAQCBjbGFzcyBCdWlsdGluTmFtZXMg
ewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9OQU1FUwogI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJ
Tl9OQU1FUwogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SCi0KKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUworI3VuZGVmIElOSVRJQUxJU0VfQlVJTFRJTl9T
WU1CT0xTCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUgogCiBpbmxpbmUg
Y29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKIHsKQEAgLTkxLDcgKzEwNCw3IEBAIGlubGluZSBjb25zdCBJ
ZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSBjCiAgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlmaWVyOwogfQogCi0gICAgCisKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDBhYmJkYmVkMWQ3NGQ4MTllYjIzYjFjYjYy
MWI1YjhhMjBmYWVhODcuLjc0MzBmYjEyYjBhZTFhYjRhYTAzMzUzZjVkZjhkZjg4YzRlOTJlOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBWZWN0b3I8SWRlbnRpZmllciwgMCwgVW5zYWZl
VmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJpYWJsZXMucmVzZXJ2ZUNhcGFjaXR5
KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7
ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3QuaW1wbCgpLT5pc0F0b21p
YygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0LmltcGwoKS0+aXNBdG9taWMo
KSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzU3ltYm9sKCkpOwogICAgICAgICB2YXJp
YWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAgICAgY29kZUJsb2NrLT5h
ZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjQwNSwxNCArMjQwNSwxNCBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1pdENhdGNoKFRyeURhdGEqIHRyeURh
dGEsIFJlZ2lzdGVySUQqCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVu
Y2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZW1pdE9wY29kZShvcF90aHJv
d19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZh
bHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92bSwgbWVzc2FnZSkpKS0+aW5kZXgo
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5n
Q29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodHJ1ZSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAg
ICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92
bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3Zt
LCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2Up
OwogfQogCkBAIC0yNTc5LDcgKzI1NzksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpCiAgICAgaWYgKCFpc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3RhdGljX2Vycm9yKTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFu
dChJZGVudGlmaWVyKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
KS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUo
YWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChmYWxzZSk7CiB9CiAgICAgCkBAIC0yNTg4LDcgKzI1ODgsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJlbFNjb3Bl
KExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3
VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAg
ICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIpOwogICAgICAg
ICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAppbmRl
eCA2MGE0OTRkZGNmNGIxNTM4MWFjYWYwYzU4MTg5NjQ2NGU3YTJlNDNiLi42NWMzMDFkYmVlMTZk
M2Y3NGI1NDI3YjdhMGY2OTI0ODg0MWM0ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgRGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21t
b25EYXRhKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FkZGVkSWRlbnRpZmllcnMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nSW1wbCogcmVwID0gbV9hZGRlZElkZW50aWZp
ZXJzW2ldOwogICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExlYXN0T25lUmVmKCkpOwotICAgICAg
ICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcigmdm0sIHJlcCkp
OworICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6
ZnJvbVVpZCgmdm0sIHJlcCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBiMjk3
NGFiZmU5ZmNjODY2ZTM5MjAwNGE5OWVmOGQ5NmQ1NWYzZDUzLi4yMWIwOGUzOGYzOWE3ZTY5NTVl
MTg0ZjI5NWE4NDBiYTE2ZjMxZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtMjAzLDIwICsyMDMs
MjAgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIFN0cmluZyBzY3JpcHRJRCA9IFN0cmluZzo6bnVtYmVyKHNvdXJj
ZUNvZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CiAgICAgSlNPYmplY3QqIGxvY2F0aW9uID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmluZyhleGVjLCBzY3JpcHRJ
RCkpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0gICAgbG9jYXRpb24tPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW5OdW1iZXIiKSwganNO
dW1iZXIoY29sdW1uTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmluZyhleGVj
LCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVy
KSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjb2x1bW5OdW1iZXIiKSwganNOdW1iZXIoY29sdW1uTnVtYmVyKSk7CiAK
ICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAg
cmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24i
KSwgbG9jYXRpb24pOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKIAogICAgIFN0cmlu
ZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhlYyk7CiAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
bmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKSwganNTdHJp
bmcoZXhlYywgbmFtZSkpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gZnVuY3Rpb24tPmRp
c3BsYXlOYW1lKGV4ZWMpOwogICAgIGlmICghZGlzcGxheU5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJkaXNwbGF5
TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOworICAgICAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkaXNwbGF5
TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOwogCiAgICAgLy8gRklYTUU6IHBy
b3ZpZGUgZnVuY3Rpb24gc2NvcGUgZGF0YSBpbiAic2NvcGVzUmF3IiBwcm9wZXJ0eSB3aGVuIEpT
QyBzdXBwb3J0cyBpdC4KICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvODcxOTI+IFtKU0Nd
IGV4cG9zZSBmdW5jdGlvbiAoY2xvc3VyZSkgaW5uZXIgY29udGV4dCB0byBkZWJ1Z2dlcgpAQCAt
MjI3LDggKzIyNyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0
YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdEludGVybmFs
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIm5h
bWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIHZhbHVlKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJuYW1lIiks
IGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCB2YWx1ZSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMzgxLDggKzM4MSw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0FycmF5KiBh
cnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7CiAgICAgZm9yIChhdXRv
IGl0ID0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+YmVnaW4oKTsgaXQgIT0gd2Vha01hcC0+d2Vh
a01hcERhdGEoKS0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgSlNPYmplY3QqIGVudHJ5ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5IiksIGl0LT5rZXkpOwotICAgICAgICBlbnRyeS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIGl0LT52YWx1
ZS5nZXQoKSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAia2V5IiksIGl0LT5rZXkpOworICAgICAgICBlbnRyeS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIiks
IGl0LT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBm
ZXRjaGVkKyssIGVudHJ5KTsKICAgICAgICAgaWYgKG51bWJlclRvRmV0Y2ggJiYgZmV0Y2hlZCA+
PSBudW1iZXJUb0ZldGNoKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00MzEsNyArNDMxLDcgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRyaWVzKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIEpTT2JqZWN0KiBlbnRyeSA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIG5leHRWYWx1ZSk7CisgICAgICAgIGVu
dHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
dmFsdWUiKSwgbmV4dFZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMs
IGksIGVudHJ5KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKaW5k
ZXggNGJmZmFkMWUxMDAwYjkxOWJmNTQ4YWZkYjQ3NTQ2MTI0ZTEzMDlmYy4uYjFjZTBhMTM4YmMw
NWYxMDA3NzE1NzVlOWEzYjliNWM1NDc5MGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBKU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKCJ3ZWFrTWFwRW50cmllcyIsIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcywgRG9udEVudW0sIDEpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04oIml0ZXJhdG9yRW50cmllcyIsIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMsIERvbnRFbnVtLCAxKTsKIAotICAgIElkZW50
aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyKCZ2bSwgImV2YWx1YXRlIik7CisgICAgSWRlbnRpZmll
ciBldmFsdWF0ZUlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV2YWx1
YXRlIik7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIGV2YWx1YXRlSWRlbnRpZmllci5zdHJpbmco
KSwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZSk7CiAgICAg
YWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKaW5kZXggNThiYjY4YjBhMWYzODhmMjFjYWY4YjVm
NjIyY2FkNzdiMjA3OWUyZC4uNDgyODM4NjUyNGRjMjZhYjQ2Yzg0MTM1NjgzMWM3MGRjNmU5ZmYz
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApAQCAtNjMsNyArNjMsNyBA
QAogCiAjZGVmaW5lIEpTQ19OQVRJVkVfTk9OX0lOREVYX0FDQ0VTU09SKGpzTmFtZSwgY3BwTmFt
ZSwgYXR0cmlidXRlcykgXAogICAgIHsgXAotICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
JnZtLCBqc05hbWUpOyBcCisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCBqc05hbWUpOyBcCiAgICAgICAgIEdldHRlclNldHRlciogYWNj
ZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsgXAogICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCBpZGVudGlmaWVyLnN0cmluZygpLCBjcHBOYW1lKTsgXAogICAgICAgICBhY2Nlc3Nv
ci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAKaW5kZXggMjdkYzA5OWJkYjU4YjA3NDNhM2JiNmUxNWEyZDMwZDUzYjAxYmNiMi4uZjlm
NmMxYzQ5YWFhNjA2YTM3MzM0OGI2ZTJkOGZjMjcwZmNkZThiNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCkBAIC0xMTksMTEgKzExOSwxMSBAQCBjbGFzcyBDcmVhdGVTY3JpcHRDYWxsU3RhY2tGdW5j
dG9yIHsKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25PYmplY3QsIGludCogbGlu
ZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNlVVJMKQogewogICAgIC8v
IEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6IFNob3Vs
ZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5nIGV4Y2VwdGlvbnMKLSAg
ICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBl
eGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGluZVZhbHVlICYmIGxpbmVW
YWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAg
IEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNWYWx1ZSBjb2x1bW5WYWx1
ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVtYmVyID0gY29sdW1uVmFs
dWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5WYWx1ZS50b051bWJlcihl
eGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRpb25PYmplY3Qt
PmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSk7Cisg
ICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNvdXJjZVVSTCIpKTsKICAg
ICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmco
KSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSA6IEFTQ0lJTGl0
ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDY0NTE2NTBkNjA4
MmVlZDEzYWMxYmQyNTcxMTI5NGQyMWRlNjJkM2YuLjU4Yjg2MzZkODg2ZGJiMmU4NTI5MWIyOTM1
MGQ5Y2Y0ZTE0MjQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAgICAg
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xv
dCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXIKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBA
IC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgpID8gSWRlbnRpZmllcjo6
ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
CiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0
KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIApAQCAtMjMw
LDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSWRlbnRpZmllciBpZGVu
dCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChi
YXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0
KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yNTcsNyArMjU3LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVu
dGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRl
eHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI2Nyw3ICsyNjcs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250
ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBz
bG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dQogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgZmFsc2UsIGV4ZWMt
PmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09iamVjdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcsNyArMjg3LDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVy
IGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRl
bnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2
bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1
aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAg
ICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3QKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHIKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMmIyZDFiN2JhZTc4MjdiMDA3YmNlZjJjZjBk
ZWUxZTc2MmI3Y2M3ZC4uZmE5NGFiNjgzNTIyNmE2ODJlYmY0N2Q2YmUzNmE2YTBkODI0MmIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYxOCwxMSArNjE4LDExIEBAIGNsYXNzIEdsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Z2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRSb290LCAyKTsKICAgICAg
ICAgCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVy
KCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMsIERv
bnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgIk9TUkV4aXQiKSwgMCwgZnVuY3Rpb25VbmRlZmlu
ZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwotICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJpc0Zp
bmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJbnRyaW5zaWMsIERvbnRF
bnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVm
aW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpG
dW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVu
dGlmaWVyKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkRGR1Ry
dWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlND
OjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk9TUkV4aXQiKSwgMCwgZnVuY3Rpb25VbmRlZmlu
ZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJbnRy
aW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInByZWRpY3RJ
bnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRy
aW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZpYXRJbnQ1
MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtIHwg
SlNDOjpGdW5jdGlvbik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImVmZmVj
dGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIsIDApOwpAQCAtNjQ0
LDIwICs2NDQsMjAgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0
IHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4
ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbEV4ZWMoKSwg
aSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKLSAgICAgICAgcHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7Cisg
ICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxFeGVjKCks
ICJhcmd1bWVudHMiKSwgYXJyYXkpOwogICAgICAgICAKLSAgICAgICAgcHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxFeGVjKCksICJj
b25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRnVuY3Rpb24o
Vk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWdu
ZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwg
bmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwg
ZnVuY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rp
b24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5z
aWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2
bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmco
KSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAgIH0KIH07CkBAIC04ODks
NyArODg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAg
ICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwog
ICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBzdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCByZXR1cm5WYWx1
ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGV2YWx1YXRpb25F
eGNlcHRpb24pIHsKICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXZhbHVh
dGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IElkZW50aWZpZXIgc3RhY2tJRChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7
CisgICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKICAgICAgICAgICAgIEpTVmFs
dWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24uZ2V0KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBzdGFja0lEKTsKICAgICAgICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHN0YWNrVmFsdWUu
dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCmluZGV4IGFiMDE1MDFiMTI5MTdkOWVlODBlZDMxNTIzZjkyNThkYzQ0
MmRhMmUuLmVkZmQ2NzAxZGMwZjNkNTkxY2IzNzhkMzk5OGNiN2Q0MmY5MDRjNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAg
dm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKGJpdHdpc2Vf
Y2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3IuYmVnaW4oKSk7CiAjZW5k
aWYKIAotICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSAzMik7
CisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogfQog
I2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDQzZWQ3ZThmMmUxODc0OTJlZjBiMDg1NWVjZmI3MjY3OTg1OTE3N2EuLmZkYTkxZWQ1OTkw
Y2I2ZTRmMmNiNzhhYTZhNGIyZDhjMmMwYzQ3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3OSw3ICsxNzksNyBA
QCBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCiBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KLWNvbnN0IEhhc2hGbGFnczhCaXRC
dWZmZXIgPSAzMgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDgKIAogIyBDb3BpZWQgZnJv
bSBQcm9wZXJ0eU9mZnNldC5oCiBjb25zdCBmaXJzdE91dE9mTGluZU9mZnNldCA9IDEwMApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjNDhlNDFjNTg2NWRm
ZDUwMDc0ZjQ5ZGJhMTNkYzc0NjI5NjYzZWQxLi4wYzY4MDc4ZTNiOTZkMzU4ZDI0NmJkOTRjNjA0
NTI1NDkzMjViZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtNTcxLDcgKzU3MSw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAg
aWYgKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAg
ICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIEFTU0VSVChpZGVudC0+aW1wbCgpLT5pc0F0b21p
YygpKTsKKyAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRvbWljKCkgfHwgaWRlbnQt
PmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCppZGVudCwgYXR0cnMpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1ZjUxZGEyNGI0Mzg1MzliN2Q1YjBm
NDk1NDE0OTA5NTQ2MjcyNzI2Li4yMDQwNTEyMmJiMTU2ODAxNDFiNDU5YTMyYzViYzZkNzI0ZmJh
OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTEsMTAg
KzI5MSwxMCBAQAogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CiAgICAgICAg
IHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewotICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkp
KSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVy
Ojpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJh
bWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgaWYg
KHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZh
cmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmICh2YXJpYWJsZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQpA
QCAtNTIzLDcgKzUyMyw3IEBACiAgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKCFuYW1lLmlzTnVsbCgpKTsKICAgICAKLSAgICBBU1NFUlQobmFtZS5pbXBsKCktPmlzQXRv
bWljKCkpOworICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMoKSB8fCBuYW1lLmltcGwo
KS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7CiAgICAgICAgIGlmIChraW5kID09IERl
Y29uc3RydWN0VG9WYXJpYWJsZXMpCiAgICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRl
Y2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSB2YXJpYWJsZSBu
YW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNDI3Yjg0Y2RhNTMyMzFhNTQ3MDZm
NGNlZmVjM2Q4MWQ3OGI1MGRkYi4uNDBlY2U1M2EwYjY0NGMwODIwNzljMjJkZjBmOTQzYmMyNWRi
ZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAt
NzMsMjAgKzczLDIwIEBACiAgICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IHZtLT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAgICAgIGlmIChjaGFyYWN0
ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewotICAgICAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAg
ICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxh
c3QoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgICAg
IGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAgICAgICAgbV9pZGVudGlm
aWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAg
ICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBtX2lk
ZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBJZGVudGlmaWVyKiBpZGVudCA9
IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAgICAgIGlmIChpZGVudCAm
JiBJZGVudGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQog
ICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQo
SWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAgICAgIG1faWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkp
OwogICAgICAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRp
ZmllcnMubGFzdCgpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiAgICAg
fQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0gICAgICAgICAgICBtX2lk
ZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAg
ICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAKICAg
ICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlTnVt
ZXJpY0lkZW50aWZpZXIoVk0qIHZtLCBkb3VibGUgbnVtYmVyKQogICAgIHsKLSAgICAgICAgbV9p
ZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQobnVtYmVyKSkpOworICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1i
ZXIpKSk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBhZDhiNzU5MGQ4NWU2NTZhOTEyYjRhYTk5MTc2MGZh
ZDM2MzA2MGJmLi5mYzM1YTlmYzUxMjg0YzA1NGQwMGZkZTdmZjg2Y2ZmNzAxOTI0ODMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1h
cC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
RnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVG
dW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPm5leHQsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQsIERv
bnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBmNzY4NjhjMDNlYTUzMzgwMTBh
MmI3YjA2MWZmMGQ0MjkwODU0YmMyLi5iODYyNjc3MDFmNDA5OTA2ODI1NTkzYzNmOWQ2NDViZDFm
YTM2ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIEFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0
ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFy
cmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogfQogCiBib29sIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAppbmRleCBiMmZkNzExODFkMGMxYjdlYTYwNzBkNzg5MzcyMWYzY2VlNmE0Nzc2Li44
MTQ4YTMxYWI3NmI4NDI3Zjg3OGUwZjc3YTVhZjJkZGY1NWM0MDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3Rv
dHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
YXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIH0KIAogYm9vbCBBcnJheVByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNTMx
LDcgKzUzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQ
dXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCkt
PnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQobiksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUo
ZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIg
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBKU1ZhbHVlKHN0YXRp
Y19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9XVEZT
dHJpbmcoZXhlYykpOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0KHRo
aXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHNs
b3QpOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4
IGViOTVmNzg0Y2UyYmYyMWI3NzViY2Q4MzU0YjU4MjRhNjBlZWEyOGYuLjgwN2Q1MWY5MjM5ZGUx
MTRmMDc0NjhlZGYwMjMxNmVjM2QxNmU0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTQwLDkgKzE0MCw5IEBAIGJvb2wg
Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wCiAgICAgaWYgKEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAot
ICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKSB7
CisgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBE
b250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1bmNJdGVyYXRvciwgRG9u
dEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHAKaW5kZXggNTZkZjM0NTAyODdmZjk5OWEzOGZjZjRjYjcxNTBlODYxYTU2NDNlOC4u
MGIyOGQ1Yzg3OTY2NmNiMTUzYjM4YjM4N2VmN2YxMDdjNWJlODBiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjIs
MjUgKzIyLDI4IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKIAogI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZt
LCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29y
ZCh2bSwgI25hbWUpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5h
bWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQorI2RlZmluZSBJTklUSUFMSVpF
X0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICNuYW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQ
cml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKKyNkZWZpbmUg
SU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5h
bWUjI1N5bWJvbCgpKQogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0q
IHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQogICAgICwgZW1wdHlJZGVudGlmaWVyKElkZW50
aWZpZXI6OkVtcHR5SWRlbnRpZmllcikKLSAgICAsIHVuZGVyc2NvcmVQcm90byh2bSwgIl9fcHJv
dG9fXyIpCi0gICAgLCB0aGlzSWRlbnRpZmllcih2bSwgInRoaXMiKQotICAgICwgdXNlU3RyaWN0
SWRlbnRpZmllcih2bSwgInVzZSBzdHJpY3QiKQorICAgICwgdW5kZXJzY29yZVByb3RvKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iKSkKKyAgICAsIHRoaXNJZGVudGlmaWVy
KElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlzIikpCisgICAgLCB1c2VTdHJpY3RJZGVu
dGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2Ugc3RyaWN0IikpCiAgICAgLCBt
X2J1aWx0aW5OYW1lcyhuZXcgQnVpbHRpbk5hbWVzKHZtLCB0aGlzKSkKICAgICBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9O
QU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDZmMzRmYTkzMGQzYjE2Mjg3NTgwYmE0NWRkNWI1N2Q0MDdlZDNlNDYuLjc5OTBiM2Yx
NGQyMTI5ODQ5MzA0MzE4ZTllYzU4NjNiODFkZjUyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjM0LDcgKzIzNCw2IEBA
CiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNy
byhpdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwK
ICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwKQEAgLTI5OCw3ICsyOTcsMTEgQEAKICNk
ZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFM
KG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CiAgICAgICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAotICAgICAgICAKKwor
I2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9sOworICAgICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChKU0NfSURF
TlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMKQorI3VuZGVm
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwK
KwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcAppbmRleCA5MzBiNmZhZjZiYzFmYzY1ZGU5ZTYxYTFmYzdlNjJhOWU1ZmM2ODBlLi4zNjE1
NmExZTA1MTY4MWY1Y2ViNTYxODJiNmU0ZWI5NDI5YjhmNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xMzcsMTcgKzEzNywxNyBAQCBKU09iamVjdCogYWRk
RXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5l
LCBjb25zdCBTbwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0gc291cmNlLnByb3ZpZGVy
KCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCi0gICAgICAgIGVycm9yLT5wdXREaXJl
Y3QoKnZtLCBJZGVudGlmaWVyKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGluZSks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIobGlu
ZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkp
Ci0gICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyKHZtLCBzb3VyY2VVUkxQ
cm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlKTsKKyAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZtLCBzb3VyY2VVUkwpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIAogCiBib29sIGhh
c0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKIHsKLSAgICByZXR1
cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgbGluZVByb3BlcnR5
TmFtZSkpCi0gICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBlcnJvci0+aGFzUHJvcGVy
dHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkK
KyAgICAgICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDY5MTA1YjY4ZDA5N2M5YmRmOGY1Nzdi
MTdjOWM1MjhjMTg0ZWFkZTkuLjVlMTg1OThmODcxYzQ2OWYyYjlkMzg2ZDQ2NDdlNTFmOTA0MjUz
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCkBAIC04Miw4ICs4Miw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVu
ZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKIHsKLSAgICAKLSAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1VuaXF1ZSgpKSB7CisgICAg
aWYgKGlkZW50LmltcGwoKS0+aXNTeW1ib2woKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSht
YWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CmluZGV4IDUxNmI3YWE4MDYzMTU5MTg2OTFmZGZiYWJmYjA0YmZhMWJjYzE3NTQuLjBjODk5NWM3
YjNhZTRhMmQxMmMzYjFhMTY5ZmM0NjhhMWViZWZiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtNTgs
OSArNTgsOSBAQAogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBpZiAo
aWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSkgeworICAgIGlm
IChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0s
IDApOworICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAw
KTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDAxMzJkMGU3NTI4
ZWEzNjNiOGMzMTM2ZWNlNWIwMDhjNTM5YTM4ZWYuLmRlNGFjYmMyYTU3NWI2NjgwOWU0MjcxNjBh
YWE0ZDM5NjY5OWM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmgKQEAgLTM4LDIzICszOCw2IEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIGVudW0gRW1w
dHlJZGVudGlmaWVyRmxhZyB7IEVtcHR5SWRlbnRpZmllciB9OwogICAgIElkZW50aWZpZXIoRW1w
dHlJZGVudGlmaWVyRmxhZykgOiBtX3N0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSB7IEFTU0VS
VChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CiAKLSAgICAvLyBPbmx5IHRvIGJlIHVz
ZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVy
c0NvdW50PgotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQoZXhlYywgY2hhcmFjdGVy
cykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFkZCh2bSwg
Y2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLQot
ICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOwotICAgIElkZW50
aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgSWRlbnRpZmllcihF
eGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZXhlYywgcmVw
KSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAgIElkZW50aWZp
ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMs
IHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAg
IElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKSA6IElkZW50aWZpZXIo
ZXhlYywgQXRvbWljU3RyaW5nKHMpKSB7IH0KLQotICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25z
dCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsg
QVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVyKFZN
KiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBs
ZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRl
bnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQodm0sIHJlcCkp
IHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlmaWVy
KFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZCh2bSwgcy5pbXBsKCkpKSB7
IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0KICAgICBjb25zdCBTdHJp
bmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgQXRvbWljU3RyaW5n
SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwq
PihtX3N0cmluZy5pbXBsKCkpOyB9CiAKQEAgLTYzLDEyICs0NiwzMyBAQCBjbGFzcyBJZGVudGlm
aWVyIHsKICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWko
KTsgfQogICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnV0ZjgoKTsg
fQogCi0gICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShjb25zdCBQcml2YXRlTmFtZSYgbmFtZSkK
LSAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9zdHJp
bmcgPSBuYW1lLnVpZCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICAvLyBU
aGVyZSdzIDIgZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5nLCAo
MSkgZnJvbVN0cmluZyBhbmQgKDIpIGZyb21VaWQuCisgICAgLy8gVGhleSBoYXZlIGRpZmZlcmVu
dCBtZWFuaW5ncyBpbiBrZWVwaW5nIG9yIGRpc2NhcmRpbmcgc3ltYm9sLW5lc3Mgb2Ygc3RyaW5n
cy4KKyAgICAvLyAoMSk6IGZyb21TdHJpbmcKKyAgICAvLyBKdXN0IGNvbnN0cnVjdCBJZGVudGlm
aWVyIGZyb20gc3RyaW5nLiBTdHJpbmcgaGVsZCBieSBJZGVudGlmaWVyIGlzIGFsd2F5cyBhdG9t
aXplZC4KKyAgICAvLyBTeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiwgd2hpY2ggcmVwcmVzZW50
cyB0aGF0IHRoZSBzdHJpbmcgaXMgaW50ZWRlZCB0byBiZSB1c2VkIGZvciBFUzYgU3ltYm9scywg
aXMgZGlzY2FyZGVkLgorICAgIC8vIFNvIGEgY29uc3RydWN0ZWQgSWRlbnRpZmllciBuZXZlciBy
ZXByZXNlbnRzIGEgc3ltYm9sLgorICAgIC8vICgyKTogZnJvbVVpZAorICAgIC8vIGBTdHJpbmdJ
bXBsKiB1aWRgIHJlcHJlc2VudHMgZXRoZXIgU3RyaW5nIG9yIFN5bWJvbCBwcm9wZXJ0eS4KKyAg
ICAvLyBmcm9tVWlkIGtlZXBzIHN5bWJvbC1uZXNzIG9mIHByb3ZpZGVkIFN0cmluZ0ltcGwqIHdo
aWxlIGZyb21TdHJpbmcgZGlzY2FyZHMgaXQuCisgICAgLy8gVXNlIGZyb21VaWQgd2hlbiBjb25z
dHJ1Y3RpbmcgSWRlbnRpZmllciBmcm9tIFN0cmluZ0ltcGwqIHdoaWNoIG1heSByZXByZXNlbnQg
c3ltYm9scy4KKworICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4K
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJz
Q291bnRdKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFyICgmY2hhcmFj
dGVycylbY2hhcmFjdGVyc0NvdW50XSk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmlu
ZyhWTSosIGNvbnN0IExDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVN0cmluZyhWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIElk
ZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOworICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqKTsKKworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoVk0qLCBTdHJpbmdJ
bXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQoRXhlY1N0YXRlKiwgU3Ry
aW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKGNvbnN0IFByaXZh
dGVOYW1lJik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVMQ2hhckZyb21VQ2hhcihW
TSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVybiBJZGVudGlmaWVyKHZt
LCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQogCkBAIC04MSw2ICs4NSw3IEBAIGNsYXNzIElkZW50
aWZpZXIgewogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051
bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1w
dHkoKTsgfQorICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVybiBpbXBsKCktPmlzU3lt
Ym9sKCk7IH0KIAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IElkZW50aWZpZXImKTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC0xMDUsNiArMTEwLDIwIEBAIGNsYXNz
IElkZW50aWZpZXIgewogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAKKyAgICAvLyBP
bmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAgdGVtcGxhdGU8dW5zaWdu
ZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIElkZW50aWZpZXIoVk0qIHZtLCBjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQodm0sIGNoYXJhY3Rl
cnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CisKKyAgICBJZGVu
dGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRk
KHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9
CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1f
c3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCop
OworICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAg
SWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2
bSwgc3RyaW5nLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7
IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFk
ZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorCisg
ICAgZW51bSBVbmlxdWVJZGVudGlmaWVyRmxhZyB7IFVuaXF1ZUlkZW50aWZpZXIgfTsKKyAgICBJ
ZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXJGbGFnLCBTdHJpbmdJbXBsKiB1aWQpIDogbV9zdHJp
bmcodWlkKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzU3ltYm9sKCkpOyB9CisKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWlu
dDMyX3QgdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBib29sJiBvayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0NzJkODQ3ZDc1YjMwM2U2NDU0
ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjQwNjIyMWE2M2FhZDk2NWY0NzMwZTQ2ODgzNDczNjdjM2Iy
NjcwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
cklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0cmluZykKICNpZm5kZWYgTkRF
QlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAgICAgaWYgKHN0
cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLT5sZW5ndGgoKSB8fCBB
dG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBz
dHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1N5bWJvbCgpIHx8IEF0b21p
Y1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmlu
ZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4ZWMpOwogICAg
IGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJp
bmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5n
LmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmlu
Zy5pbXBsKCktPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3RyaW5nVGFi
bGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVy
IHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC03
MCw2ICs3MCw3MCBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5n
OjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcigqdm0sIHIpOwogfQogCitpbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1wbCogdWlkKQoreworICAg
IGlmICghdWlkIHx8ICF1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBJZGVudGlmaWVy
KHZtLCB1aWQpOworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXIsIHVpZCk7
Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoRXhlY1N0YXRlKiBl
eGVjLCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb21VaWQoJmV4ZWMtPnZtKCks
IHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21VaWQoY29uc3Qg
UHJpdmF0ZU5hbWUmIG5hbWUpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoVW5pcXVlSWRlbnRp
ZmllciwgbmFtZS51aWQoKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3Vu
dD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRl
bnRpZmllcih2bSwgY2hhcmFjdGVycyk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
cnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgY2hhcmFjdGVycyk7Cit9CisKK2lu
bGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0qIHZtLCBjb25zdCBMQ2hh
ciogcywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVuZ3Ro
KTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSogdm0s
IGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBJZGVudGlmaWVyKHZt
LCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZp
ZXIodm0sIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgcmV0dXJuIElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5pbXBsKCkpOworfQorCitp
bmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBJZGVudGlmaWVy
KGV4ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0
cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBhdG9taWNTdHJpbmcpOworfQor
CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogcykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBBdG9taWNT
dHJpbmcocykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZp
ZXJJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKaW5kZXggNDg3NTZiYTNiMzNmNmNkZTg5MDRlMDFmN2Y3YjA5MzRkZDNlMGFkNy4uN2Q2MWNh
MmQ5MDIxZDgwYzdlMmM5NjcwZGZkYjIxNTY3MGNlMjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIzMyw4ICsyMzMsOCBAQCB2b2lkIEpT
VmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCIgKGF0b21pYykiKTsKICAgICAgICAgICAgICAgICBpZiAoaW1wbC0+aXNB
dG9taWMoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKGlkZW50aWZpZXIpIik7
Ci0gICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiICh1bmlxdWUpIik7CisgICAgICAgICAgICAgICAgaWYgKGltcGwtPmlz
U3ltYm9sKCkpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiIChzeW1ib2wpIik7CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAodW5yZXNvbHZl
ZCkiKTsKICAgICAgICAgICAgIG91dC5wcmludCgiOiAiLCBpbXBsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGE0MGY5OGY4
OTkzYjJiZGFjZTY4YjE1MjhmNDg4YTNiZWY0MzE4ZjcuLjcyYzBjZDlkMmY1ZWRjZjk2NzMxZTcy
ZWQ5ZTFiODZmZDkzNzYzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjE4LDcgKzYxOCw3IEBAIEFMV0FZU19JTkxJTkUg
SWRlbnRpZmllciBKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3RyaW5n
KTsKICAgICBpZiAocHJpbWl0aXZlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBJZGVudGlm
aWVyOjpmcm9tKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1lKCkpOworICAgICAgICBy
ZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChhc1N5bWJvbChwcmltaXRpdmUpLT5wcml2YXRlTmFt
ZSgpKTsKICAgICByZXR1cm4gcHJpbWl0aXZlLnRvU3RyaW5nKGV4ZWMpLT50b0lkZW50aWZpZXIo
ZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBhNWVhYWZiMWJlN2NjZGZiMmRmYmYxOGNhYTMyY2RlMjI4MjRhMGY0
Li5hOWQ1ZjRmMWUwYzdhMzRmY2U0YTBjYzU3NTA2OGYyNTJkYTNiMDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MTQsNyAr
NDE0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7
IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVkQXJyYXlzW3R5cGVkQXJyYXlJ
bmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdHlwZWRBcnJheUlu
ZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0t
Pm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERv
bnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5k
ZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFycmF5SW5kZXhd
LCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRl
bnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIENvbnNvbGVQcm90b3R5
cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Nv
bnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVByb3RvdHlwZSkpOwogICAg
IEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZtLCBtX2NvbnNv
bGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3QsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0LCBEb250RW51bSk7CiAKICAgICByZXNldFBy
b3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IDU4NzRmMjMzMzdl
YTU1NDc2OTY1MGY0MGE4MDk0YmE0Zjk2OWVmODUuLmMxMTA3ZTZkNjY2NDQ1YWM0OTgyY2U1ZGU5
ZTkwZjk4ZDkxZWY5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTExMiw3ICsxMTIsOSBAQCB2b2lkIEpT
TGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZS5zY29wZU9mZnNldCgpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlz
U3ltYm9sKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAvLyBTa2lwIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxl
bWVudGF0aW9uIG9mIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNmZGQ2YmUxMzkxM2IyYzYyMzc0ZmMw
NjkxYWVlZDAxYzUxMzYwYjEuLjUyM2QxMmE5MjAzYjcwMzM4YzMwZDE1MjhkNTBmZjFiYTYwMjYx
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKIAogICAgICAgICBmb3IgKGF1dG8g
aXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQoKTsgKytpdGVyKSB7CiAg
ICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IHNob3Vs
ZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0ZXItPmF0dHJpYnV0ZXMo
KSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkpKTsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgaXRlci5r
ZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdm9pZCBK
U09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXIg
PSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQoKTsgKytpdGVyKSB7
CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
Ci0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci5r
ZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwgdGhpcywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggM2Y1ZTI1ZDE1
YjAzZTYwZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBkYzQ5YzEyMzA3ZGFmNDUy
MjE2YWI3ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNl
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJ
ZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRp
Zmllcigmdm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
bmFtZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZkZmMyN2QyMGE4NjVh
MzQzYWYyMWQ1Yzc0ODhkYzQzNjViMTcxNS4uYjhhNWFkYWU5ODdlNDAzN2Q2NTVlMGEzZjZhZDAy
OGY4NDFlMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0ganNDYXN0PEpTUHJvbWlz
ZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBMZXQgJ2l0ZXJhdG9yJyBi
ZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFibGUpLgotICAgIEpTVmFs
dWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBp
dGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAtNDgwLDcgKzQ4MCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jQWxs
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBqc0Nh
c3Q8SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAogICAgIC8vIDQuIExldCAn
aXRlcmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVyYXRvcihpdGVyYWJsZSku
Ci0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JG
dW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyODFhZTQ2MjAzOTIwNGI0NTI4
YjRlYTUxMWMwNzVjNmU4NWVmYmQ5Li5jMWFmMGNhZTFjNjIzYjM2MmNmNGRiMzYyYjVjOTU0OTVl
OGM3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTQ2
Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhWTSogdm0s
IFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0cmluZzo6dG9JZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcihl
eGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBBTFdBWVNfSU5MSU5FIEF0
b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVjZTliYjg3M2U5NTBmMGZm
Li4yYjAxODYyZDZhNDlkMWEwZTA0NjYwNTQzMjQzNDQ5OWMwMmU5YzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApA
QCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7
CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNVbmlxdWUoKSkK
KyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQo
KSkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21V
aWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBmNmY1
ZmUxNzNjNzA0ZWRlMGY2NTNiNjgzOGUwOTgwNmNhNDQyZWI3Li5kNDU0NGE0ZjZmMjZjYWE4YzM4
NDVkYWYwZmNhZmU3MzIzMjhiZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNTcsMTcgKzU3LDE3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAgIGRvIHsKICAgICAg
ICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5PiBwYXRoOwogICAgICAgICAvLyBVbmd1YXJkZWQgbmV4
dCB0byBzdGFydCBvZmYgdGhlIGxleGVyCi0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50
aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAg
ICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52
bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICBKU09OUFBhdGhF
bnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0gbV9leGVjLT52bSgpLnByb3BlcnR5TmFt
ZXMtPnZhcktleXdvcmQpIHsKICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tJ
ZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGVu
dHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURlY2xhcmU7Ci0gICAgICAgICAgICBlbnRy
eS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50
VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09OUFBhdGhFbnRyeVR5cGVE
b3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRv
a2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBl
bnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZt
KCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFw
cGVuZChlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZXhlYy0+dm0oKS5rZXl3b3Jk
cy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSkpCkBAIC05NCw3ICs5NCw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQogICAg
ICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURvdDsKICAgICAg
ICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rSWRlbnRpZmllcikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVu
dHJ5TmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
c3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIFRva0xQYXJlbjogewpAQCAtMTM1LDE3ICsxMzUsMTcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVu
dGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3Rl
cikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywg
bGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+
dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAg
ICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAg
ICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhl
Yy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJz
W2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2No
YXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFj
dGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJl
dHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApA
QCAtMTU1LDE3ICsxNTUsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2Uo
Y29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4
ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0
ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50
aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlm
aWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0
SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVu
Z3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAg
ICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAg
ICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRl
bnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCks
IGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJz
W2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0g
PSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9y
ZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
Jm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJ
ZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaAppbmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkwNDEwZmZjNGNjMzJkZDAzOTQ4MGZh
Li5hOGEzMzY3ZjUzZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBlOWNmYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjkzLDcgKzI5Myw3IEBAIGlubGluZSB2b2lk
IHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlICgmdmFs
dWVzKVtudW1iZXJPCiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250
aW51ZTsgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUo
JnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUubV9rZXkpLCBzdHJsZW4o
dmFsdWUubV9rZXkpKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVl
Lm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1
dGVzKCkgJiBCdWlsdGluKSB7CiAgICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5i
dWlsdGluR2VuZXJhdG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYWI1NTgzOTQ5MGI4ZWZjMDAyMTZlYzJkOWVmMWQyZGZhOTFiMzZiNy4u
ZmFkNTJjMDU2MDQ4ZTE4YjdlZWM0OThmZjE0OTUzZmQ5MGZjZmVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjksNyArNjks
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMp
KTsKIAotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7CisgICAgSlNWYWx1ZSBp
dGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggODA2N2NiMjBmMGMzN2Q2NmE3NzhiZTlkMWVmNmFmZGIzYzZkZTgyOC4uY2E3ZGMwOGYyOGUw
ZjY2ZmJkNmViYmFmNWQ4YjY4YWI0ZThmZDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNDYsNyArNDYs
NyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIE1hcEl0
ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgTWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQs
IERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5jcHAKaW5kZXggODhkZjU4M2EwNjZlNWU4MTgyZTAxMTIyOGE2NmUxZmZkODE1
NGE4OC4uZmU1MjVlY2ZjNDg0MDk1YjNiNjZiMTVhZTZhNWE2NzNjOTZhYWU3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5rZXlzLCBtYXBQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1hcFByb3RvRnVuY1ZhbHVl
cywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+ZW50cmllcywgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgbWFw
UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1hcFByb3RvRnVuY0VudHJpZXMsIERv
bnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
aXplLnN0cmluZygpLCBtYXBQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMjhmZjVjOGQ5Mjc5ZWU1OWU1YjExZTc1MWI5
OWI1NGIyZjZmMDM5NC4uNTE1NmVkMmVmZDVmMDA0MTJmYzI3MDQ2NzBhZDhkYWIzZmIyNzg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTg3
LDQ5ICs4Nyw0OSBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiRSIpLCBqc051bWJlcihleHAoMS4wKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4xMCIpLCBqc051bWJlcihsb2coMTAuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMkUiKSwganNOdW1iZXIoMS4wIC8g
bG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMTBFIiksIGpzTnVt
YmVyKDAuNDM0Mjk0NDgxOTAzMjUxOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJQ
SSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJT
UVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigm
dm0sICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0g
fCBSZWFkT25seSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWJzIiksIDEsIG1hdGhQcm90
b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgImFjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3MsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYXNpbiIpLCAxLCBt
YXRoUHJvdG9GdW5jQVNpbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFjb3No
IiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhc2luaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVNp
bmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAiYXRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW4yIiksIDIsIG1hdGhQ
cm90b0Z1bmNBVGFuMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmNDYnJ0LCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNlaWwiKSwg
MSwgbWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0NvcywgQ29z
SW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAi
Y29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJleHAiKSwgMSwgbWF0aFByb3RvRnVuY0V4
cCwgRXhwSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIo
JnZtLCAiZXhwbTEiKSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImZsb29yIiksIDEsIG1hdGhQ
cm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcigmdm0sICJmcm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY0Zyb3VuZCwgRlJv
dW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiaHlwb3QiKSwgMiwgbWF0aFByb3RvRnVuY0h5cG90LCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZyIpLCAxLCBtYXRoUHJvdG9G
dW5jTG9nLCBMb2dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcigmdm0sICJsb2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibG9nMXAiKSwgMSwg
bWF0aFByb3RvRnVuY0xvZzFwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzIiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzIsIE5vSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAibWF4
IiksIDIsIG1hdGhQcm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1pbiIpLCAyLCBtYXRoUHJvdG9GdW5jTWluLCBN
aW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0s
ICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicmFuZG9tIiksIDAsIG1hdGhQcm90b0Z1
bmNSYW5kb20sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAicm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5kLCBSb3VuZEludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpZ24iKSwg
MSwgbWF0aFByb3RvRnVuY1NpZ24sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
LSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXIoJnZtLCAic2luIiksIDEsIG1hdGhQcm90b0Z1bmNTaW4sIFNpbklu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNp
bmgiKSwgMSwgbWF0aFByb3RvRnVuY1NpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0
aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic3FydCIpLCAxLCBtYXRoUHJvdG9GdW5jU3Fy
dCwgU3FydEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFByb3Rv
RnVuY1RhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5jLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImltdWwiKSwgMSwg
bWF0aFByb3RvRnVuY0lNdWwsIElNdWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMTAiKSwganNOdW1iZXIobG9nKDEwLjAp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxPRzJFIiksIGpz
TnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUEkiKSwganNOdW1iZXIocGlEb3Vi
bGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiU1FSVDFfMiIp
LCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFi
cyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhY29zIiksIDEsIG1hdGhQ
cm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW4iKSwgMSwgbWF0aFByb3RvRnVuY0FTaW4s
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXNpbmgiKSwg
MSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW5oIiksIDEsIG1hdGhQcm90
b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdGFuMiIpLCAyLCBtYXRoUHJvdG9GdW5jQVRhbjIs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiY2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2JydCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29zIiksIDEs
IG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvc2giKSwgMSwgbWF0aFByb3RvRnVu
Y0Nvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4cEludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9JbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmbG9v
ciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZnJvdW5kIiksIDEs
IG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImh5cG90IiksIDIsIG1hdGhQ
cm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywg
TG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzEwLCBOb0ludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2cyIiks
IDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1heCIpLCAyLCBtYXRoUHJvdG9G
dW5jTWF4LCBNYXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJtaW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50
cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJhbmRv
bSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJvdW5kIiksIDEsIG1h
dGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1
bmNTaWduLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBTaW5JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNxcnQi
KSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW4iKSwgMSwgbWF0aFBy
b3RvRnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBO
b0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDNjZmU5NDEx
NmZhMDYxYmNiNWEyMTI3MTY1YTRkMDE0ODQxNzJmNWQuLjk1YThkY2E5MDhmYTViN2ZlYTE1OTEy
OTUxMDkxNzI0M2FiN2MwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCB2b2lkIE51bWJl
ckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJlclByb3RvdHlwZSogbnVt
YmVyUHJvdG90eXBlKQogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIkVQU0lMT04i
KSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1ZBTFVFIiksIGpzRG91YmxlTnVt
YmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2
bSwgIk1JTl9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBEb250RGVsZXRlIHwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXIoJnZtLCAiTUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcig5MDA3MTk5
MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUlOX1NBRkVfSU5U
RUdFUiIpLCBqc0RvdWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKC1z
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RGVsZXRlIHwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXIoJnZtLCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyKCZ2bSwgIk5hTiIpLCBqc05hTigpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBu
dW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyKCZ2bSwgImlzRmluaXRl
IiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0s
ICJpc0ludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRl
bnRpZmllcigmdm0sICJpc05hTiIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc05hTiwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCks
IElkZW50aWZpZXIoJnZtLCAiaXNTYWZlSW50ZWdlciIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1
bmNJc1NhZmVJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJzZUZsb2F0IiksIDEsIGds
b2JhbEZ1bmNQYXJzZUZsb2F0LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJzZUludCIpLCAxLCBn
bG9iYWxGdW5jUGFyc2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
Ik1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJNSU5fVkFMVUUiKSwganNE
b3VibGVOdW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5
MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1JTl9TQUZF
X0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3NDA5OTEuMCksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJORUdBVElWRV9JTkZJTklUWSIpLCBq
c0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIlBPU0lUSVZFX0lORklO
SVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJOYU4iKSwg
anNOYU4oKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworCisgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0Zpbml0ZSIpLCAx
LCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlciwg
Tm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNOYU4iKSwgMSwgbnVtYmVyQ29uc3Ry
dWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzU2FmZUlu
dGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlciwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VG
bG9hdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFyc2VJbnQiKSwgMSwgZ2xv
YmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiB9CiAK
IC8vIEVDTUEgMTUuNy4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOGY1MDVmNmEwMDZhOWY4YjUzNzA4ZTFkNWYxNWZi
ZjlmY2UyMTQwNy4uOGY3MWVmN2VhMDgxYzViMWUzZmM1MmY3YmIwOTYwYjk1MTZkOWM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcApAQCAtODYsNyArODYsNyBAQAogCiB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk9iamVjdCIpLnN0cmlu
ZygpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgb2JqZWN0UHJvdG90eXBlLT5jbGFz
c0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gbm8u
IG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYwM2Y3YzgyZDE3ODczOWFk
NTYwOGJmNjQuLmNjY2NjMzlmYTkzOTEzYjNmYTYxYzc1MGU2OGRjNzI5MTZlNWI3MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtMzMsMTkgKzMz
LDE5IEBACiBjbGFzcyBQcml2YXRlTmFtZSB7CiBwdWJsaWM6CiAgICAgUHJpdmF0ZU5hbWUoKQot
ICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSgpKQorICAgICAg
ICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSgpKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgfQotICAgIFByaXZhdGVOYW1lKGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0gICAgICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNy
ZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
aW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3Ry
aW5nSW1wbCogdWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAgewotICAgICAgICBBU1NF
UlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNTeW1ib2wo
KSk7CisgICAgfQorCisgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbikKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKGRlc2Ny
aXB0aW9uLmltcGwoKSkpCisgICAgewogICAgIH0KIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIHVp
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihtX2ltcGwu
Z2V0KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAppbmRleCAwMzcwYTM1NDhkYTk4NmQwNDExMzEzZTA0ZGFjMmQxNWM2
YmEwOTA0Li43NTRkYTJkOGU4MTU1NTRiNzdiNjhmZTNlNTJmYzRjODIyZDMwMjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgUHJvcGVydHlUYWJsZTo6ZW5kKCkgY29uc3QKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5k
X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAg
IEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwga2V5LT5pc1VuaXF1
ZSgpKTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNTeW1ib2woKSk7CiAg
ICAgdW5zaWduZWQgaGFzaCA9IGtleS0+ZXhpc3RpbmdIYXNoKCk7CiAgICAgdW5zaWduZWQgc3Rl
cCA9IDA7CiAKQEAgLTMwNSw3ICszMDUsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9p
dGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKIGlubGluZSBQ
cm9wZXJ0eVRhYmxlOjpWYWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtleS0+aXNBdG9taWMoKSB8
fCBrZXktPmlzVW5pcXVlKCkpOworICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkgfHwga2V5LT5p
c1N5bWJvbCgpKTsKIAogICAgIGlmICghbV9rZXlDb3VudCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4
IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYuLjY1NWU3NGQ2MmFjMzYx
MjBhMTk2MWFiZDcwMTFmZjZiZWM1MjE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFByb3BlcnR5TmFt
ZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lt
cGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9p
bXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+aXNTeW1ib2woKSk7CiAgICAgfQogCiAgICAgUHJv
cGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTkzLDggKzkzLDcg
QEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICAgICAgOiBtX2ltcGwoc3RhdGljX2Nhc3Q8QXRv
bWljU3RyaW5nSW1wbCo+KHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9pbXBsKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgICAg
IEFTU0VSVChtX2ltcGwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1N5
bWJvbCgpKTsKICAgICB9CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQoKSBjb25zdApAQCAt
MTA0LDE0ICsxMDMsMTQgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKIAogICAgIEF0b21pY1N0cmlu
Z0ltcGwqIHB1YmxpY05hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
aXNVbmlxdWUoKSA/IG51bGxwdHIgOiBtX2ltcGw7CisgICAgICAgIHJldHVybiAoIW1faW1wbCB8
fCBtX2ltcGwtPmlzU3ltYm9sKCkpID8gbnVsbHB0ciA6IG1faW1wbDsKICAgICB9CiAKICAgICBz
dGF0aWMgY29uc3QgdWludDMyX3QgTm90QW5JbmRleCA9IFVJTlRfTUFYOwogCiAgICAgdWludDMy
X3QgYXNJbmRleCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pbXBsID8gdG9VSW50MzJGcm9t
U3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKKyAgICAgICAgcmV0dXJuIChtX2ltcGwg
JiYgIW1faW1wbC0+aXNTeW1ib2woKSkgPyB0b1VJbnQzMkZyb21TdHJpbmdJbXBsKG1faW1wbCkg
OiBOb3RBbkluZGV4OwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmNwcAppbmRleCA0NDc1Yjg5OGE5NzQ5NzdjZTY4ZTQ3NTlkY2FkMDZiZDZhMDQ4
MzczLi5lNGU1ZTI3YTA0ZmEwNGY2ODVlNmM3YjNjZWVmOTdiZDVhMTFiNDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBA
IC0zMSw5ICszMSw5IEBACiAKIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBs
KiBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaWRlbnRpZmllciB8fCBpZGVudGlmaWVyID09
IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSk7CisgICAgQVNT
RVJUKCFpZGVudGlmaWVyIHx8IChpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwg
aWRlbnRpZmllci0+aXNBdG9taWMoKSB8fCBpZGVudGlmaWVyLT5pc1N5bWJvbCgpKSk7CiAgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3QgaW5kZXggPSBQcm9wZXJ0
eU5hbWUoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRleCgpOworICAgICAgICB1
aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGlk
ZW50aWZpZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5kZXgsIGluZGV4
ID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBtX3ByZXZpb3VzbHlFbnVt
ZXJhdGVkTGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0MDExZTQxYjIzMzhmOWQw
NTA0YjJkNDliZmYzOWEuLjg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1OTQ2OWM5ODExYTdjNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgdm9p
ZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
bV9zZXQtPmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwg
aWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDQ1ZTgwZjVjZGMxNWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5OTIuLmVlMWQ4YjNmYzY5
Zjk0M2I5NGE1MjU5Y2Y3YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAK
IAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWdFeHBQ
cm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgSWRlbnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8gRUNNQSAxNS4xMC41LjEgUmVn
RXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCmluZGV4IDQyM2E2YmQ1ZWJhZGY5YjkyYjVlNWJiZmRhNDcxNmI4MjkwZjI1
ODEuLmZiOTdiNmQ5ZmEwZDBlZTYzYTFkNTJhOTg4N2VjNzc2OThmNzUzZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjKSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFs
dWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
CmluZGV4IDUyNjFiZjNjYWNjMWQ0ZTBlNDU3NTUxYTAyMmRlNjdjOTE5NGRmZjkuLmYxYjhiNzk0
ODExODkwOTNhMDFhNjJjNTg2MTRkZDlkZWVkOGYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgdm9pZCBTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBT
ZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFNldEl0ZXJh
dG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNO
ZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDQwMDY2YWU3OGQ0OWFjZDU3YzY0M2YwZGRiYzNmYzc0
NmVhMDQxMWMuLmIzMTU4NjFhNDY1NWUyYzFmYjdlMjY0YTU2YTA2ZDI3OWQ1MGU4OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+a2V5cywgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBzZXRQcm90b0Z1bmNW
YWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKLSAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUs
IHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBzZXRQcm90b0Z1bmNLZXlzLCBEb250
RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6
ZS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggNTNl
MGNjYjMxNDRmMzk1OTZlNjQ1NWVhN2IzMmY3NTcwYmJmMWFkYi4uNDY4YjcyZDBmY2E3NGY5MjQ3
NTIxMWJjNDFkOWFlZjBjNTlmNzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgs
NyBAQCB2b2lkIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwogCi0gICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBzdHJp
bmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVJdGVyYXRvciwgRG9udEVudW0sIDApOwogfQogCiBib29sIFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAppbmRleCBhZWE1OTI2OTUyMmI4NTk4ODk0YzQ3ZWU1ZDQ5YTRlYmM2MmQyMTMzLi5jYTYyYzQx
YjBmMzU4OTY5MTZkMWM2MjVkN2MzNDBmYTRkZjI0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInN0YXJ0
c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlND
X05BVElWRV9GVU5DVElPTigiZW5kc1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgRG9u
dEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImluY2x1ZGVzIiwgc3RyaW5nUHJv
dG9GdW5jSW5jbHVkZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0l0ZXJh
dG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAw
KTsKIAogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmNoYXJDb2RlQXRQcml2YXRlTmFtZSwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwgRG9udEVu
dW0sIDEsIENoYXJDb2RlQXRJbnRyaW5zaWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBkY2U1MWI1Y2U4ZGQxYTE0MzM4ZTIyYTc2NTEwODgz
ZTJiYzIwY2M3Li4zYjhhZTFjZTczNWJiMjVlNzdiZDMxMTg4MTMyMGNkY2M3MmEyNTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTkzOSw3ICs5
MzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0m
IHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIHx8
ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAgIGlmICghaXRlci0+a2V5
LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgc2hvdWxk
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAgICAgaWYgKCFpdGVyLT5r
ZXktPmlzU3ltYm9sKCkgJiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSB8fCBzaG91
bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkgewogICAgICAgICAgICAgaWYgKGtu
b3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkS25vd25VbmlxdWUo
aXRlci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNlNjg2Mjc0ZmQ3NzM5
MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi5hYTk0ZmEzMWYxYTA5NWJlMzg4NGM0MTc4MDI0NGI3
MTg4YjMwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAKICNkZWZpbmUgSU5JVElB
TElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgI25hbWUpLCBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCAzYWY4MTdkYTMxYWE2OGZmZGZjZTQ5NGM1ZjU1ZWQyNDZkMmY1
MmEyLi5lNzYzOTQ3NWMzMmFlZTFkZDFlOTUzOGRjYjhhMmY1ZWRkYTFiMmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NjIsMTAgKzY2MiwxMCBAQCBKU1ZhbHVlIFZN
Ojp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCiAgICAgICAg
IHVuc2lnbmVkIGxpbmU7CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKICAgICAgICAgc3RhY2tG
cmFtZS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwotICAgICAgICBleGNlcHRp
b24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAibGluZSIpLCBqc051bWJlcihs
aW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJl
Y3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgImNvbHVtbiIpLCBqc051bWJlcihjb2x1bW4pLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhp
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAibGluZSIpLCBqc051bWJlcihsaW5lKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRo
aXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgImNvbHVtbiIpLCBqc051bWJlcihjb2x1
bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuc291
cmNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlz
LCBJZGVudGlmaWVyKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tGcmFt
ZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgZXhjZXB0
aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgInNvdXJj
ZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSk7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24tPmlzRXJyb3JJbnN0YW5jZSgp
ICYmIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5oYXNTb3VyY2VBcHBl
bmRlcigpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0
b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDA5YWZmMDM1MTAwMDY4OWFmOGU3YWI4NDNi
NzIxYmE0ZTgxNTAyYmUuLjIzYzQzMzMwZDYyZWYwOTcyN2ZmNmI5MTI0NTZhNTA0MDRkYTc4YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0
cnVjdG9yLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJG
dW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVu
Y3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9y
UHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IDE5NjM5
Y2FiMzE0Zjk2OGExNWQ3MmU2Nzk0NWJmMGQ5NmE4ZmJhOTEuLmZhN2U0MzQ3YTEyM2JmNmIxNzVi
MDZhMzhjNWU5Y2EyMmI4ZWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAK
QEAgLTQwMyw2ICs0MDMsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5z
bGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmlu
Z0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJl
dHVybiBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKwogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3Vs
ZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4i
KTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKQEAgLTQyMSw2ICs0MjQs
OSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7
CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5n
VGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBzaG91bGQg
bm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7
CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBAIC01MDMsNiArNTA5LDEy
IEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKFN0cmluZ0lt
cGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMo
KSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0aGUgZmFzdCBjYXNlLiIp
OwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisKKyAgICBpZiAoc3Ry
aW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFjdEZvbGRl
ZFN0cmluZ0luU3ltYm9sKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2Vy
OwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1Rh
YmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQoJnN0cmlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA4NDE2MDEyZmFiZjk4NTg0ZjMy
ZmVhZGY0Nzk2OWJjZTZkNDg3NzAxLi4zYTJmY2Y1ZjM1ODJjYzA3NDBlMDQ1YTBiMzkyZmEwNmNl
ZmI5OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE5OSwxMSArMTk5LDkg
QEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1w
bD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8
IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
c3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNVbmlxdWUoKSB8fCBpc0lu
QXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20g
YW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAgIHJl
dHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKCpzdHJp
bmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0KICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29u
c3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0YpCkBAIC0y
MTMsMTEgKzIxMSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFibGVQcm92aWRl
ciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5p
c1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcpLCAiVGhlIGF0b21pYyBz
dHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgIGlmICghc3RyaW5n
KQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
YWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0
cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3Ry
aW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAt
MjI5LDcgKzIyNSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0cmluZyhB
U0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIAorCisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsJiBzdHJpbmcpCisg
ICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUo
JnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEi
KTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmlu
Z0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgewor
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IGlzSW5B
dG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20g
YW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUsIHN0cmluZyk7CisgICAg
fQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRk
U2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwgU3RyaW5nSW1w
bCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBlMTVkZTExMzg5NTQ2ZjQ5
MDllZWQ4MDdlZDIxMmIxNjIzZmIzMmVlLi45ZmFiZjJiYWIyZWE2YzFiZGY3MjgwYmM2NjY1N2Vk
MDZmOTk5ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKIAogICAgIFNUUklOR19TVEFUU19S
RU1PVkVfU1RSSU5HKCp0aGlzKTsKIAotICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0aCgpICYm
ICFpc1VuaXF1ZSgpKQorICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0aCgpICYmICFpc1N5bWJv
bCgpKQogICAgICAgICBBdG9taWNTdHJpbmc6OnJlbW92ZSh0aGlzKTsKIAogICAgIEJ1ZmZlck93
bmVyc2hpcCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKQEAgLTI4NiwxMyArMjg2LDE0
IEBAIHZvaWQgU3RyaW5nSW1wbDo6ZGVzdHJveShTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQogICAg
IHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQorUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0aCgpOwogICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHkoKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHN0cmluZyA9IGNy
ZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBzdHJpbmctPm1f
aGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmluZy0+bV9oYXNoQW5kRmxh
Z3MpOworICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKKyAgICBzdHJpbmctPm1faGFz
aEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+bV9oYXNoQW5kRmxhZ3Mp
OwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXgg
MjJiZmNiNmRiYmRjOTViYzZjNDU1YThlNjBjYjcwNjMyNTMwZGFlOS4uNTA0Y2I4MmEwM2M1YzM1
OTNiNjc0Y2JkMjg0MzQyNDc2MjQ0OTIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAg
LTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIEJ1ZmZlclN1YnN0
cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2ggYXJl
IGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDY7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0g
MTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdD
b3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2Zs
YWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3RyaW5nS2luZENvdW50ID0g
NDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRv
bWljID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCk7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wgPSAxdSA8PCAoc19mbGFnU3RyaW5n
S2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tTdHJp
bmdLaW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNfaGFzaEZsYWdTdHJpbmdL
aW5kSXNTeW1ib2w7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWc4Qml0QnVm
ZmVyID0gMXUgPDwgMzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0RpZFJl
cG9ydENvc3QgPSAxdSA8PCAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNr
QnVmZmVyT3duZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOworCisgICAgZW51bSBTdHJp
bmdLaW5kIHsKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsIC8vIG5vbi1zeW1ib2wsIG5vbi1h
dG9taWMKKyAgICAgICAgU3RyaW5nQXRvbWljID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21p
YywgLy8gbm9uLXN5bWJvbCwgYXRvbWljCisgICAgICAgIFN0cmluZ1N5bWJvbCA9IHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNTeW1ib2wsIC8vIHN5bWJvbCwgbm9uLWF0b21pYworICAgIH07CisKICAg
ICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hpY2ggaGF2ZSBhbiBzcGVj
aWFsIHJlZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ryb3llZCwgd2hpY2ggaXMg
aW1wb3J0YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBh
Y3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgpA
QCAtMTUwLDcgKzE2OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291
bnQoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0aCgwKQog
ICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0
aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hh
c2hGbGFnSXNBdG9taWMgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZlck93bmVkKQogICAgIHsK
ICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhhdCBBdG9t
aWNTdHJpbmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAgICAgIC8vIHdpdGggaW1w
dW5pdHkuIFRoZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGlzIG5ldmVyIGVu
dGVyZWQgaW50bwpAQCAtMTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hhcj4oKSkKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQor
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAg
ICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcgQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0YWlsUG9pbnRlcjxVQ2hh
cj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0x
OTMsNyArMjEyLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChz
X3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAg
LCBtX2RhdGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAgICAgICwgbV9oYXNoQW5k
RmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTIwNiw3ICsyMjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
QnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFsIHwg
QnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwogICAgICAg
ICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQotICAgICAgICAs
IG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCisg
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3Jt
YWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAg
ICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBAQCBjbGFzcyBTdHJpbmdJ
bXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMubGVha1B0
cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVkKQorICAgICAgICAsIG1f
aGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTI0NCw3ICsy
NjMsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291
bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0
YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTI2
MSw3ICsyODAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNf
cmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAs
IG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyU3Vi
c3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1
YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwogICAgICAgICBBU1NF
UlQobV9kYXRhMTYpOwpAQCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAg
ICAgfQogCi0gICAgZW51bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENyZWF0ZUVtcHR5VW5pcXVl
IH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykKKyAgICBlbnVtIENyZWF0
ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKKyAgICBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbEVtcHR5VGFnKQogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5n
dGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAgICAgICAgLy8gdG8gcmVw
cmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAgLCBtX2RhdGE4KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZl
ckludGVybmFsKSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JTeW1i
b2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM3OCwxMiArMzk3LDEyIEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVu
Z3RoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlVW5pcXVlRW1wdHkoKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHkpKTsKICAgICB9CiAKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlxdWUo
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxT
dHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLAogICAgIC8vIGFuZCB0
aGUgYnVmZmVyIG93bmVyc2hpcCBtdXN0IGJlIEJ1ZmZlckludGVybmFsLiBKdXN0IGxpa2UgdGhl
IGlucHV0IHBvaW50ZXIgb2YgcmVhbGxvYygpLApAQCAtMzkzLDggKzQxMiw5IEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zmc2V0KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdzKTsgfQogICAgIHN0YXRp
YyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0K
LSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lz
QXRvbWljOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIHNf
aGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7
IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9CisgICAgc3RhdGljIHVuc2ln
bmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7
IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hN
YXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3NCwyMSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFz
aEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza1N0
cmluZ0tpbmQpOyB9CisgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFu
ZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQorICAgIGJvb2wgaXNBdG9t
aWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5k
SXNBdG9taWM7IH0KIAotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hB
bmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21pYzsgfQogICAgIHZvaWQgc2V0SXNBdG9taWMoYm9v
bCBpc0F0b21pYykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7Ci0gICAgICAg
IEFTU0VSVCghaXNVbmlxdWUoKSk7Ci0gICAgICAgIGlmIChpc0F0b21pYykKLSAgICAgICAgICAg
IG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdJc0F0b21pYzsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdJc0F0b21pYzsKKyAgICAgICAg
QVNTRVJUKCFpc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKGlzQXRvbWljKSB7CisgICAgICAgICAg
ICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOworICAgICAg
ICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdTdHJpbmdLaW5k
SXNBdG9taWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ05vcm1h
bCk7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMKQEAgLTcxNyw2ICs3NDEs
MTYgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9s
KCkpOworICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5n
KTsKKyAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAgICAgICAgQVNTRVJUKCFz
dWJzdHJpbmdCdWZmZXIoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHJldHVybiAqc3Vic3RyaW5n
QnVmZmVyKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29u
c3QKICAgICB7CkBAIC03ODMsMjMgKzgxNywxMiBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxv
Y2F0ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFyVHlwZSom
KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25lZCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvclVu
aXF1ZSh1bnNpZ25lZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1bnNp
Z25lZCBoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5zaWduZWQgZmxhZ3MpOwogCiAgICAgLy8gVGhl
IGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFs
KSBzdHJpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRGbGFnSXNTdGF0
aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNy
ZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRlcmVmIHdpdGhvdXQgZGlz
dHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8gVGhlIGJvdHRvbSA3IGJp
dHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Zs
YWdDb3VudCA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUg
PDwgc19mbGFnQ291bnQpIC0gMTsKLSAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBT
dHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRz
X2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hGbGFnSXNVbmlxdWUgPSAxdSA8PCA2OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hh
c2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWdJc0F0b21pYyA9IDF1IDw8IDQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9IDF1IHwgKDF1IDw8IDEpOwotCiAjaWYgU1RS
SU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmluZ1N0YXRzIG1fc3RyaW5n
U3RhdHM7CiAjZW5kaWYKQEAgLTgxNCw3ICs4MzcsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAog
ICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29uc3RydWN0RnJvbUxpdGVyYWwuCiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxSZWZDb3VudCA9IHNfcmVmQ291bnRJ
bmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9
IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWw7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hhc2hTaGlmdCA9IHNfZmxhZ0NvdW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1N0YXRpY3MuY3BwCmluZGV4IDY1YmI2NzIxZDc0M2ZhMTA0MWMyOTJiNjBmNGQwMzI5Mjgz
ZDhlNTEuLjM5NDVjNzNlMDA4Y2Q0MzdkYTU0OWExNWE1YWFiYjQ4NjUzMzZkMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNDcsMTggKzQ3LDE4IEBAIFN0cmluZ0lt
cGwqIFN0cmluZ0ltcGw6OmVtcHR5KCkKICAgICByZXR1cm4gJmVtcHR5U3RyaW5nLmdldCgpOwog
fQogCi0vLyBTZXQgdGhlIGhhc2ggZWFybHksIHNvIHRoYXQgYWxsIHVuaXF1ZSBTdHJpbmdJbXBs
cyBoYXZlIGEgaGFzaCwKKy8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwgc3ltYm9s
IFN0cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAogLy8gYW5kIGRvbid0IHVzZSB0aGUgbm9ybWFsIGhh
c2hpbmcgYWxnb3JpdGhtIC0gdGhlIHVuaXF1ZSBuYXR1cmUgb2YgdGhlc2UKIC8vIGtleXMgbWVh
bnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2ggYW55IG90aGVyIHN0cmluZyAoaW4g
ZmFjdCwKIC8vIHRoYXQncyBleGFjdGx5IHRoZSBvcG9zaXRlIG9mIHdoYXQgd2Ugd2FudCEpLCBh
bmQgdGhlIG5vcm1hbCBoYXNoIHdvdWxkCiAvLyBsZWFkIHRvIGxvdHMgb2YgY29uZmxpY3RzLgot
dW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKHVuc2lnbmVkIGZsYWdz
KQordW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3ltYm9sKHVuc2lnbmVkIGZs
YWdzKQogewotICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRIYXNoQW5kRmxhZ3NGb3JVbmlxdWUg
PSAwOwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSArPSAxIDw8IHNfZmxhZ0NvdW50
OwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8PSAxIDw8IDMxOwotICAgIHVuc2ln
bmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19mbGFnTWFzaykgfCBzX2hhc2hGbGFnSXNB
dG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7Ci0gICAgcmV0dXJuIHNfbmV4dEhhc2hBbmRGbGFn
c0ZvclVuaXF1ZSB8IGZsYWdzRm9yVW5pcXVlOworICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRI
YXNoQW5kRmxhZ3NGb3JTeW1ib2wgPSAwOworICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJv
bCArPSAxIDw8IHNfZmxhZ0NvdW50OworICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclN5bWJvbCB8
PSAxIDw8IDMxOworICAgIHVuc2lnbmVkIGZsYWdzRm9yU3ltYm9sID0gKChmbGFncyAmIHNfZmxh
Z01hc2spICYgKH5zX2hhc2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5nU3ltYm9sOworICAgIHJl
dHVybiBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgfCBmbGFnc0ZvclN5bWJvbDsKIH0KIAog
V1RGX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDdlYTdjYmFhYTdlN2ZlNzdiZjAyOTI3NmZkY2E3YTI2
MzU5YjEwNGYuLmFjNzRmZjYxMjJmZDk2OTI0ZGYzNDMzYzkzM2E3ZjdjNjNjOWU5MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkKICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxh
Y2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIo
ZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpTQzo6SlNWYWx1ZSByZXBs
YWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKICAgICBpZiAo
cmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6
Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgCiAgICAgLy8gTG9va3VwIHRoZSAiY3JlYXRlUGx1Z2luUmVw
bGFjZW1lbnQiIGZ1bmN0aW9uLgotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9u
ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVQ
bHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlv
biA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYgKHJlcGxhY2VtZW50RnVu
Y3Rpb24uaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpT
Qzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2JqZWN0ID0gcmVwbGFjZW1lbnRGdW5jdGlvbi50b09i
amVjdChleGVjKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICB9CiAKICAg
ICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRoZSBwbHVnLWluLgotICAg
IEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXIoZXhlYywgInZpZGVvIikpOworICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50
LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZpZGVvIikpOwog
ICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gSlNIVE1MVmlkZW9FbGVtZW50Ojp0b1dyYXBw
ZWQodmFsdWUpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgfQogCiAg
ICAgLy8gR2V0IHRoZSBzY3JpcHRpbmcgaW50ZXJmYWNlLgotICAgIHZhbHVlID0gcmVwbGFjZW1l
bnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAic2NyaXB0T2JqZWN0IikpOworICAg
IHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAic2NyaXB0T2JqZWN0IikpOwogICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkg
JiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1fc2NyaXB0T2JqZWN0ID0g
dmFsdWUudG9PYmplY3QoZXhlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmI1MDE4YzE3OTkyZDYwZDJlZjI0YmZl
ZDY4MTBiMjI0NzE3MjcxNi4uNmY4MDY2MTRlYTRiMGNiNDE2YTUzZjI3MjkyZDljZWQ5NWNmNjky
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgZ2V0KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQsIEoKICAgICB9
CiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgp
LmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYg
KCFhc09iamVjdChvYmplY3QpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IGFzT2JqZWN0KG9iamVjdCktPmdldChleGVj
LCBpZGVudGlmaWVyKTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJvb2wgc2V0KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50LAog
ewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVjLT52bSgpLCBrZXlQYXRo
RWxlbWVudC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0
YSgpKTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnRp
ZmllciwganNWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApp
bmRleCAwYzUwNjRkNmIxN2RjZjQ4Njg4YWI5YmE0YmE3MGJiNGZkNDExOTc1Li5iOTM5MDczZDYx
YjY3MWY0NDAzYjMwN2JjNTM0OWUwNmQ3N2MzZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAg
LTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogCiAgICAgICAgIHByb3Bl
cnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgICAg
ICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcihleGVjLCBqc1Byb3BlcnR5TmFt
ZXNbaV0uaW1wbCgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnNbaV0gPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tpXSk7CiAgICAgfQogCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggZTFkNzI1ZjhjNmQx
MTEzNDEyMTVlMTBiZGQ3YWI2NzI3ZTc0ZWFkNC4uNDUxZGFjNjIzMTNiMjMzYWRmNjVkOGY3MGJh
YjMxYzM4MzY1OTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZv
a2VDYWxsYmFjayhKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjaygpLT5t
ZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxsRGF0YSk7CiAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNr
KCktPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAg
ZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKaW5kZXggZGE1
MmNlYzJjZmRjYzc2YTFjZDQwZDJlNDVhZTA5NTY0NjVlMWY3Ni4uOGQyZDAyMDY0ZTU3ZWFhNDc4
MTgwYmI4ZTQ1YmQzMDA0ZThmMzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcApAQCAtODksOCArODks
OCBAQCBzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29ucwogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgSlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInVzZUNhcHR1cmUiKSwganNC
b29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ldLnVzZUNhcHR1cmUpKTsK
KyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKKyAgICAgICAgbGlzdGVu
ZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgInVzZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVj
dG9yW2ldLnVzZUNhcHR1cmUpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVj
LCBvdXRwdXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsKICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElI
b3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmICghbGlz
dGVuZXJzLT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBdG9taWNT
dHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRUeXBlOwotICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIGV2ZW50VHlwZS5p
bXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV2ZW50VHlwZS5pbXBsKCkp
LCBKU1ZhbHVlKGxpc3RlbmVycykpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWls
ZGVyLmNwcAppbmRleCAwODEwYmM4MWU5YTA1ZWVhZGVlZjRmMGU2Njk5NGQyMWI5MzUzYWE3Li5h
OWYzNzI2NTcwZTI4OTRhYmE2MWU4NWNjMDlmMDljMTQ4YjE4Zjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAK
QEAgLTU2LDIxICs1NiwyMSBAQAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChj
b25zdCBjaGFyKiBrZXksIHVuc2lnbmVkIHZhbHVlKQogewogICAgIFZNJiB2bSA9IG1fZXhlYy0+
dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIG1f
ZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc051bWJlcih2YWx1ZSkpOwog
fQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAg
SWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAgICBtX2RpY3Rpb25hcnkt
PnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVjLCB2YWx1ZSkpOwogfQog
CiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgp
OwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6
OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmUKIHZvaWQg
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBDcnlw
dG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxkZXIpCiB7CiAgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IGtleSk7CiAgICAgY29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyJiBqc0J1aWxkZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXImPihuZXN0ZWRCdWlsZGVy
KTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCdWlsZGVy
LnJlc3VsdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDY0ZDU2ZDk3MGE3NGU1ZGMx
YWVhYTM4NTk1YjU2YmQxZTYzNDZmZTIuLjRhZTZhZTUwNjI0NmUzOWZiZmNjNTJkMzcwYzA2NmY4
OWNlMDNjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODksNyArODksNyBAQCBib29sIEpT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdQogCiBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKGV4ZWMsIG5hbWUpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3Qob2JqZWN0KTsKIAogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dGlmaWVyLCBzbG90KSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxn
b3JpdGhtKEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGRpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKIAotICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCAiaGFzaCIpOworICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhc2giKTsKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QpOwogCiAgICAgSlNWYWx1ZSBoYXNoID0gZ2V0UHJvcGVydHkoZXhl
Yywgb2JqZWN0LCAiaGFzaCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5kZXggZmJiMzk3ZTRiNWEy
MzBmNDQ0MThkNjNkYWY3NzNkNTJhOTlkN2E0Ni4uODM1MDU3YjgzN2QxYjZjNzFlMWUwYWY3YjYz
ODA4MzAyNmU4MjhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC01Miw3ICs1Miw3IEBACiAK
IHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmll
ciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNP
TihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksCiAKIHN0
YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpz
b24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24p
OwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRpZmllciwgc2xv
dCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwKIAogc3RhdGljIGJv
b2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNv
bnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uKTsKIAogICAg
IGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpAQCAt
NTAxLDcgKzUwMSw3IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlTaXpl
SXNWYWxpZChzaXplX3Qgc2l6ZUluQml0cykgY29uc3QKIHN0YXRpYyB2b2lkIGFkZFRvSlNPTihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1dERpcmVjdCh2bSwgaWRl
bnRpZmllciwganNTdHJpbmcoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAtNTQyLDEzICs1NDIsMTMg
QEAgc3RhdGljIHZvaWQgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ3J5cHRvS2V5RGF0YVIKICAgICAgICAgYWRkVG9KU09OKGV4ZWMsIGpzUHJp
bWVJbmZvLCAidCIsIGJhc2U2NFVSTEVuY29kZShkYXRhLm90aGVyUHJpbWVJbmZvcygpW2ldLmZh
Y3RvckNSVENvZWZmaWNpZW50KSk7CiAgICAgICAgIG90aC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aSwganNQcmltZUluZm8pOwogICAgIH0KLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJvdGgiKSwgb3RoKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvdGgiKSwgb3RoKTsKIH0K
IAogc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBq
c29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpz
b24tPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCb29sZWFuKHZhbHVlKSk7CiB9CiAKQEAg
LTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCoganNvbiwgQ3J5cHRvS2V5VXNhZ2UgdXNhZwogICAgIGlmICh1c2FnZXMg
JiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCiAgICAgICAgIGtleU9wcy0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
ZGVyaXZlQml0cyIpKSk7CiAKLSAgICBqc29uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
ZmllcihleGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOworICAgIGpzb24tPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlfb3BzIiksIGtleU9wcyk7
CiB9CiAKIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDc4MzY2
ODE5MDJmYzNiMjQwYmFhMGU1ZWE4ZTY2ZjRkMWIwZDJmNmQuLjU0ZWIzMzExNjNkZTY4Yzk2N2Ex
YjRjM2MxOWU2NWJmNWQ0YzQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgU3Ry
aW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3Ry
aW5nJiBwcmVmaXgpCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwogICAgICAgICAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNv
bHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsK
KyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
CmluZGV4IDNhZmFhZTIzNDA3NzQ5YWM3YTlmMjcyMGYzZjg5N2YwYmU1N2NkZTcuLjUyNTk4Y2Vj
MjQ3NWYxNmFiY2Q5MTgxN2EwYzgzNjFiZjVjZmMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPmdldE5h
bWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KElkZW50aWZpZXIoZXhlYywgbmFtZXNbaV0pKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFzZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCA2MTk5MjY1NmM4ZGY1NTg0MDJmNjRjODcwZWE5ODg5ZjFjYzM1ODhkLi5iZTc3N2Ey
ODUwYTM4MTdkZjVmZjIzYzJhNWJjMGYwMmQwZWQ5MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00MjgsNyArNDI4LDcgQEAg
Ym9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
RG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMu
Ci0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5h
bWUgPT0gSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSkKKyAgICBpZiAoZGVzY3JpcHRvci5p
c0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBK
U0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIGlmIChGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVET01XaW5kb3coZXhlYykuZnJhbWUo
KSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJh
Y2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS5wYXJlbnQo
KSkgewogICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCBpbXBsKCkpKQotICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dD
cmVhdGVkKERPTVdpbmRvdyYgZGlhbG9nKQogICAgIC8vICAgICAgICB3b3JsZCBpZiBkaWFsb2dB
cmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAgICBKU0RPTVdpbmRvdyog
Z2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZCht
X2V4ZWMtPnZtKCkpKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1bWVudHMgPSBtX2V4ZWMt
PmFyZ3VtZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPnZt
KCksIElkZW50aWZpZXIobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiksIGRpYWxvZ0FyZ3VtZW50
cyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1l
bnRzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBj
b25zdApAQCAtNTM0LDcgKzUzNCw3IEBAIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJl
dHVyblZhbHVlKCkgY29uc3QKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RP
TVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMtPnZtKCkpKTsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSWRl
bnRpZmllciBpZGVudGlmaWVyKG1fZXhlYywgInJldHVyblZhbHVlIik7CisgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJyZXR1cm5WYWx1
ZSIpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKCFKU0ds
b2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgbV9leGVjLCBpZGVu
dGlmaWVyLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCmluZGV4IGZjYTdjN2VkNmFkNWQ4NzNlMDdhMjAyNzM3MWU3NjhmNmUzMmJiMzcuLmVjYmIz
M2VlZjg3OGM1ZTVmMWUwM2M5ZjhiNzY2MDNlMmNiMjIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBA
IC00OCw3ICs0OCw3IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBh
bHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09i
amVjdChleGVjKTsKIAotICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAieCIpKTsKKyAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29sIGNhblByb3ZpZGVYID0g
IXhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtNTYsNyArNTYsNyBAQAogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIHlW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInkiKSk7CisgICAgSlNW
YWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJ5IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsK
QEAgLTY0LDcgKzY0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJ6IikpOworICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZVogPSAh
elZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC04Niw3ICs4Niw3IEBACiAgICAgLy8gR2l2
ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTVmFsdWUg
YWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFscGhhIikp
OworICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImFscGhhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEgPSAhYWxwaGFW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtOTQsNyArOTQsNyBAQAogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIGJldGFW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImJldGEiKSk7CisgICAg
SlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJiZXRhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9ICFiZXRhVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIGdhbW1hVmFsdWUgPSBv
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpKTsKKyAgICBKU1ZhbHVl
IGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJnYW1tYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gIWdhbW1hVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKTsKQEAgLTExOSwxOCArMTE5LDE4IEBACiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0
ZUFjY2VsZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24q
IGFjY2VsZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgo
KSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlv
bi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ6
IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+
eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgo
KSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ5Iiks
IGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgp
KSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/
IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9uUmF0ZU9iamVjdChjb25z
dCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSwgRXhlY1N0YXRl
KiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90
YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblBy
b3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJn
YW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRp
b25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJh
dGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6
IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVCZXRh
KCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKKyAgICBv
YmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90
YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCAyMGQ4
ZjgzY2QwZTQ5YWE2YTA0YzNmNjdiYzhkMjVlZTIzYmY5OGYwLi5lOTg0OTA5ZTc2YjI1OTQwZGE5
ZWVjZDBkOTY1OTllMGU4ZjZmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIEpTRGljdGlvbmFyeTo6R2V0UHJvcGVy
dHlSZXN1bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIGZpbmFsUmVzdWx0KSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbGlk
KCkpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMs
IHByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9pbml0aWFsaXplck9iamVj
dC5nZXQoKSk7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZXJPYmplY3QuZ2V0KCktPmdldFByb3Bl
cnR5U2xvdChtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZTJkMjkyZDI4NGZkMmNiOWIyM2Mx
M2EyOTQ4NWVmMjkyNzJiMzE3My4uZmZiMDU4MGYzYzc0MzEzYTA3Yjc0OTQ3NmQ3ZDI3Yjc1YTE2
MThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRh
KTsKICAgICAvLyBJZiBqc0Z1bmN0aW9uIGlzIG5vdCBhY3R1YWxseSBhIGZ1bmN0aW9uLCBzZWUg
aWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UgYW5kIHVzZSB0aGF0
CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBoYW5kbGVFdmVu
dEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRs
ZUV2ZW50IikpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IikpOwogICAg
ICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRh
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODEyMjUwN2I0ZmJjNjhlMTIzZjY3MmZh
MzEwODhhNTJjYTcwZTk2NS4uM2ViYTQyMWJjNzM0MTc3M2FjOGY2YWE2YjEyMWVhY2QxZTgyYTdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rp
b24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLml0ZW0oaW5kZXgpKSk7CiAKICAgICAgICAg
Ly8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0NvbGxlY3Rpb24sIElkZW50
aWZpZXIoZXhlYywgc3RyaW5nKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5h
bWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IHN0cmluZykpKTsKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0
aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudApAQCAtMTA2LDEyICsxMDYsMTIgQEAgSlNWYWx1
ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJf
dCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5
TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
KCksIGltcGwoKS5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIG5hbWVkSXRlbXMoZXhlYywgdGhp
cywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKTsKKyAgICByZXR1cm4gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbShF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoZXhlYywg
dGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlz
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8g
anNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNhZDlhNDcyOTAzNGNkZDA3NzY5Zjdj
ZTYwYzdkZWYyYjFjOTA5NTIuLjZkMzljNDU5ZDdkMjU1NTRhOTdkZTRkYjcyNGQzMTY1YzI5MzNk
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxEb2N1
bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQog
SlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAg
ICAvLyBJZiAiYWxsIiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJuIHRoZSBvdmVyd3JpdHRl
biB2YWx1ZQotICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJhbGwiKSk7CisgICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpKTsKICAgICBpZiAodikKICAgICAgICAg
cmV0dXJuIHY7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50Ojph
bGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBBZGQgImFsbCIgdG8gdGhl
IHByb3BlcnR5IG1hcC4KLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiYWxsIiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogc3RhdGljIERvY3VtZW50KiBm
aW5kQ2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0Niw3ICsxNDYsNyBAQCBK
U1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRv
d1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQo
ZXhlYykpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlIGZ1bmN0aW9uID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm9wZW4i
KSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvcGVuIikpOwogICAgICAgICAgICAgICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
OjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CmluZGV4IDI4NjdkNjBmMmEwMjYyN2YwN2NkMDBhMzQwZTU5Yzc4MTEyNGQ5ODMuLjI4NDg5NzEy
YTdmNmNjYzQ5OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b25DdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAK
IEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJ
ZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwo
KSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IGU2YTE0MGY1NDU4NDliOGFhNjQ5NDdlMGQ2NjdmODgz
NmY0YzlhZWEuLmEyNWRjYTk5MThjM2FlMmVlNzZhMTgwNWEyMGQwYjEwYmRhZjE5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoRXhlY1N0YXRlKiBleGVjKQogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1
dG9JbmNyZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7Ci0gICAgICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0gb3B0aW9uc1ZhbHVlLmdl
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlQYXRoIikpOworICAgICAgICBKU1ZhbHVlIGtl
eVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAia2V5UGF0aCIpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcwLDcgKzcwLDcgQEAgSlNW
YWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvSW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJhdXRvSW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgYXV0b0luY3JlbWVu
dCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAKaW5kZXggMDQwNDRkMzVkMzk1OWM1ZjE4Y2YyYmQ1YjM1NTNiYTgyZDgzNWVlYy4uODUw
N2U0OTRhMzc2ZGI3OTllNTZmYmVlOGJkMWNjNmQ5ZDE2NzgyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTY3
LDExICs2NywxMSBAQCBKU1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAgIGJvb2wgbXVsdGlFbnRy
eSA9IGZhbHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
LSAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICB1bmlxdWUgPSBvcHRpb25zVmFs
dWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVuaXF1ZSIpKS50b0Jv
b2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIG11bHRpRW50cnkgPSBvcHRpb25z
VmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm11bHRpRW50cnkiKSkudG9Cb29sZWFu
KGV4ZWMpOworICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRvQm9vbGVhbihleGVjKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDA1YzBjZDk5MjU2OTVkMTA5NWYzZWQ0YzlkMzJhNTU0
MzQ1ZTNhOGIuLjVlYjZkNThjMjZjYzI5MGY4OWRlOTc3NjRmZmMxOTM3ZTAzNzBkNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAgICAgCiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIEltYWdlRGF0YSwgaW1hZ2VEYXRhKTsKLSAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMs
ICJkYXRhIik7CisgICAgSWRlbnRpZmllciBkYXRhTmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgImRhdGEiKTsKICAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZGF0
YU5hbWUsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEtPmRhdGEoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5k
SG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIwYzM4MDZiZGU2N2U5ZGI0YTY2NzQyODI2Njlh
ZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0YWM1NDJmYzdiNzU0NjQzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
Q29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0
TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkg
ewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFycmF5LT5nZXRJbmRleChleGVj
LCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwotICAgICAgICBKU1ZhbHVlIGlkID0gaXRlbS0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwotICAgICAgICBKU1ZhbHVlIGVuYWJs
ZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZW5hYmxlZCIpKTsKLSAgICAg
ICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNo
ZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CisgICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVt
LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGFiZWwiKSk7CisgICAg
ICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1ZhbHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlkIikpOworICAgICAgICBKU1ZhbHVlIGVuYWJs
ZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZW5hYmxl
ZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQiKSk7CisgICAgICAgIEpTVmFsdWUgc3ViSXRl
bXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic3ViSXRl
bXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggZTUzNzc2Y2Q4ZDFiNjk2NDM3NmY3NGY5MDdiOTgwYmJhYzliNTQzMy4u
Y2YxMzM3ZjAxMzhiYjBkNjdiNmFmNzZiNjk4MTQxODkyNDJhYTRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGludCBvdmVycmlkZUxpbmVO
dW1iZXIgPSBtX3Bvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwogCiAgICAgSlNPYmplY3Qq
IGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygK
LSAgICAgICAgZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlm
aWVyKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgCisgICAgICAgIGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtX2Z1bmN0
aW9uTmFtZSksCiAgICAgICAgIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9uLCBvdmVycmlkZUxpbmVO
dW1iZXIpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCA3
MTcyNmJiZjFiMWViNjcxZTFhNmI0ZWQ0ODJjNjFlMmI1OGFiY2EzLi43YjQxMTlhNWE1ZDBiNzI4
OWYzZTEzNjhkOTEwZDc2YTc5OGQ4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc2hv
cnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuZ2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgImFjY2VwdE5vZGUiKSk7CisgICAgICAgIGZpbHRlciA9IGZpbHRl
ci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWNjZXB0Tm9kZSIpKTsK
ICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRhKTsKICAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewogICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5vZGVGaWx0ZXIg
b2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlvbiIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwCmluZGV4IDNjOTJiZWIxMzRlZDA2MzMxYjM5ZjYxZjM2OWU0ZDg4ZGMzMzNkYTMu
LjhjOWViOGY5YzE5ZjkwYTAwYTM2ZGY1MzVmOTkzYmFjN2ExM2ViZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6
aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpz
VmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmlu
ZGV4IDk0MmM0ZGZiNmU3ZTY4Zjg5YTBjZjc5ZDU0NWUzMTkxNDZiYzI3MzcuLmQ2NDYwM2UxYjhk
MjVlZGY1ZDFmMjljNWY3MDM3MjFiNmJjYTMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTU3Rv
cmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+
a2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGksIGVjKSkpOwogICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCmluZGV4IGE4OGMwMzhkOTc1MGU4M2Ux
NDMwZTg5ZTcxYTY2ZDQ1MDA3MTdiNWIuLjM5ZmE2NGQ5ZGFjZDQ0YWE4NmM2NWJlMWJmZDIxZmJh
ODc4M2RlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgc2V0SW50ZXJuYWxT
bG90VG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRl
TmFtZSYKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhl
Yyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7Ci0gICAg
b2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKG5hbWUpLCB2YWx1ZSwg
cHJvcGVydHlTbG90KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQobmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOwogfQogCiBKU1ZhbHVlIGdldElu
dGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVl
LCBQcml2YXRlTmFtZSYgbmFtZSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNWYWx1ZSBnZXRJbnRlcm5h
bFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJp
dmF0ZU4KICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhlYyk7
CiAgICAgUHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7CiAKLSAgICBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFtZSk7CisgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpOwogICAgIGlmICgh
b2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHBy
b3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgcmV0dXJuIHByb3Bl
cnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggY2I0OTMxZGQ1NmE3
NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5Yi4uMDNkNDQ3NjU4OTc5NzhjMDA0YWQ5MzFhYzE2
NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUV4
Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiBib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRl
LCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CiAgICAgcmV0dXJu
IGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTYxLDE0ICs2MSwxNCBAQCBi
b29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgY2hhciogbmFtZSwgSW5zcAogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0
YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2Ny
aXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7
CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9i
YWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0
ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZh
bHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBKU1ZhbHVl
IGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZXQoc2NyaXB0
U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAgICBKU1ZhbHVlIGpzVmFs
dWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZXQoc2NyaXB0U3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpKTsKICAgICBpZiAoIWpz
VmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODIsNyArODIsNyBAQCBib29sIFNj
cmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
Y2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlwdFN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1l
KSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2Ny
aXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpKTsKICAg
ICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
YmEyNjAzYzBlYmMwYzZiMGU3N2Y0Nzc4YWFjNmUxNzNkZDU3ZTQwNi4uMDBlYTExYjQ2NGY2MzVj
NmNiZGU2NGEyNjI2NjAxNjFjYWRmOWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01MjcsNyArNTI3LDcgQEAg
Y2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgOiBDbG9uZUJhc2Uo
ZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iVVJMcyhibG9i
VVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBlbXB0eVN0cmluZygpKQor
ICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lvbik7CiAg
ICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdl
UG9ydHMpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xv
bmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgICAgIHdyaXRlKG1f
ZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd3JpdGUoSWRlbnRp
ZmllcihtX2V4ZWMsIHN0cikpOworICAgICAgICAgICAgd3JpdGUoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0KIAogICAgIHZvaWQgd3JpdGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0yNDg3LDExICsyNDg3LDExIEBAIERlc2VyaWFsaXphdGlv
blJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRUZXJtaW5hbCgpKSB7Ci0g
ICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3RhY2subGFzdCgpLCBJZGVu
dGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRlcm1pbmFsKTsKKyAgICAg
ICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmluZygpKSwgdGVybWluYWwp
OwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVy
KTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVyKG1fZXhl
YywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lU3Rh
Y2suYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0
cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDVkOWQ4ZjU5MDdlNjA1NTIxMDg3
NjkzNWZhYWViNjZlNDk2NzFiNjMuLjNhOTNlYmY1YWI2YzRkN2U1MzUxNzAzZWMxODE1YTVmYzE0
ZGIwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhvZDooTlNT
dHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdzCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAg
ICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gW3Nl
bGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhu
YW1lKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oW3NlbGYg
X2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Ci0gICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhr
ZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlw
ZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhr
ZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlw
ZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDA3LDcg
KzQwNyw3IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgICAgICAvLyBs
ZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gW3NlbGYg
X2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xl
KGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihO
U1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmlu
ZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhr
ZXkpKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhj
ZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIC0gKEJPT0wpaGFzV2Vi
U2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgQk9PTCByZXN1bHQgPSBb
c2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcoa2V5
KSkpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDE0YmFmNGIzNDBhZTYzZDhiZDc3ZTI4MDE1YWMxODhjMTNjMDhlY2YuLjViOWY4
NGU1ZWE2NTM3MTI3ZTAyY2JmNGE0NjYzOTQ3NDUwMmQ2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xOTkxLDcgKzE5
OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15ICRl
bmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRzaWduYXR1cmUp
OwogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgp
KSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
XCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRu
YW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmVtb3ZlRGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUpO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKQEAgLTI1ODAsMTAgKzI1ODAsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3Rv
clR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3Iu
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlz
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1
ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBvYmplY3QuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1l
XCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpO1xuIik7CkBAIC0yNjkyLDcgKzI2OTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCku
bGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTtc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4
IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYuLmQyNGEyZWE3MDZhZTJk
OTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMjQx
LDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5n
dGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTRmxv
YXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBjMzBmYTgwMTZh
ODc1ZWEwOTkxMjRkMTFiM2NmYmFkNWIxMTI5ZWIzLi5hYjI5ODEyMmE0ZmQxMGQ5MTRjYmFjOTEy
MjU2OGNiN2MzM2UwNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3Vu
dCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotICAgICBCYXNl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
aW5kZXggMTRhNzg1YTliM2I0NWYyMTViMGVhM2Y1MDNiNmI5MjcxZmFmM2Y4Ny4uMWEyNzRhZjli
ZWQwOWNkOWE5YTAzZDhhNDBmYzkxZWUyYmMxYjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4OTcsOCAr
MTg5Nyw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHZhbHVlKTsKKyAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIGNhc3RlZFRoaXMtPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKIApAQCAtMjcwNiw4ICsyNzA2LDgg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1
ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjcyMSw4ICsyNzIxLDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZU9iamUKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmpl
Y3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxB
dHRyNSIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
KyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAt
MjczNiw4ICsyNzM2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CisgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9u
YWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjg3NCw4ICsyODc0LDggQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC4KLSAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAicmVwbGFjZWFibGVB
dHRyaWJ1dGUiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdAor
ICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggNzc0ZmRmYzNmNGVmOTUzZWZkN2JkNmZk
OTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1ZWFkOTM4NThlMDIzMDljZDgyZGM1YTczMjM5NWVj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBTdHJpbmcqIHN0cmluZykK
IAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBjb252
ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4x
RmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAogfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2QzNGU1ZjEyMDJkN2YzYWRiZGMxODMwOTg3ZWY4NmJh
ZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3YjkyZmFiOTBhZjg0YWFiZTk1YWVmN2UyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNGYWxsYmFja09iamVjdEltcDo6
ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4ob2JqZWN0
KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVk
RmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKIH0K
IAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5kZXggOTU3MzBjNDNkNzQw
OTg1N2IxYmZkMjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZjZTdlN2VlMTEzYTIxMGI4
N2NjMzNhNzI2YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5k
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKQEAg
LTM4MCw3ICszODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAg
IAogICAgICAgICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3QgKilOUE5fQ3JlYXRlT2Jq
ZWN0IChteUZ1bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4ZWMs
IElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0
KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsKKyAgICAgICAgZ2xvYmFs
LnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJ
bnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAq
KW15T2JqZWN0KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7
IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJv
bUZpbGUoYXJndltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVj
dFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6
OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJsaW5lIikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhW
YWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9OdW1iZXIo
ZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5k
aW5ncy5tbQppbmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMxMmM1ZDllNGMyNzcwLi4z
NTMyYjBhNjg5YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0SW50ZXJmYWNlICpteUlu
dGVyZmFjZSA9IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07CiAgICAgICAgIAotICAg
ICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNl
OjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2b2lk
ICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9i
amVjdChJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlKSk7
CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAg
ICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltp
XSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog
ICAgICAgICAgICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS5hc2Np
aSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChl
eGVjLElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBs
aW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggODkwNmNiN2IwZWFlMjk2MDU0MTZmNDY1
MDE3ZmNiMTEyYjdhMDM4Ny4uNGY3ZThmYTE1ZTU0MGI4ZTRmMmE1OGVjNGRiNDEyYjU5ZGVlNDJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTc3LDExICs3NywxMSBAQCBzdGF0aWMgc3Rk
OjplcnJvcl9jb2RlIGdldFR5cGVGbGFncyhFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTVmFsdWUm
IHR5cGVWYWx1ZSwgUgogICAgIAogc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkVHJpZ2dlcihF
eGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2VyJiB0cmlnZ2VyKQog
ewotICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZleGVjLCBJZGVu
dGlmaWVyKCZleGVjLCAidHJpZ2dlciIpKTsKKyAgICBKU1ZhbHVlIHRyaWdnZXJPYmplY3QgPSBy
dWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInRyaWdn
ZXIiKSk7CiAgICAgaWYgKCF0cmlnZ2VyT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwg
IXRyaWdnZXJPYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNp
b25FcnJvcjo6SlNPTkludmFsaWRUcmlnZ2VyOwogICAgIAotICAgIEpTVmFsdWUgdXJsRmlsdGVy
T2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwt
ZmlsdGVyIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOwog
ICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0aW9uKCkgfHwgIXVybEZp
bHRlck9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVy
cm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dlcjsKIApAQCAtOTEsMTggKzkxLDE4IEBA
IHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBKU09i
amVjdCYgcnVsZU9iamVjdCwgVHJpZ2dlCiAKICAgICB0cmlnZ2VyLnVybEZpbHRlciA9IHVybEZp
bHRlcjsKIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZl
IikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQo
JmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwtZmlsdGVyLWlzLWNhc2Ut
c2Vuc2l0aXZlIikpOwogICAgIGlmICh1cmxGaWx0ZXJDYXNlVmFsdWUgJiYgIWV4ZWMuaGFkRXhj
ZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZVZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICB0cmln
Z2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZpbHRlckNhc2VWYWx1ZS50b0Jvb2xl
YW4oJmV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmpl
Y3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAicmVzb3VyY2UtdHlwZSIpKTsKKyAgICBK
U1ZhbHVlIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJyZXNvdXJjZS10eXBlIikpOwogICAgIGlmIChyZXNv
dXJjZVR5cGVWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhdXRvIHR5
cGVGbGFnc0Vycm9yID0gZ2V0VHlwZUZsYWdzKGV4ZWMsIHJlc291cmNlVHlwZVZhbHVlLCB0cmln
Z2VyLmZsYWdzLCByZWFkUmVzb3VyY2VUeXBlKTsKICAgICAgICAgaWYgKHR5cGVGbGFnc0Vycm9y
KQogICAgICAgICAgICAgcmV0dXJuIHR5cGVGbGFnc0Vycm9yOwogICAgIH0KIAotICAgIEpTVmFs
dWUgbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZl
eGVjLCAibG9hZC10eXBlIikpOworICAgIEpTVmFsdWUgbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJP
YmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAibG9hZC10eXBl
IikpOwogICAgIGlmIChsb2FkVHlwZVZhbHVlICYmICFleGVjLmhhZEV4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGF1dG8gdHlwZUZsYWdzRXJyb3IgPSBnZXRUeXBlRmxhZ3MoZXhlYywgbG9hZFR5cGVW
YWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRUeXBlKTsKICAgICAgICAgaWYgKHR5cGVGbGFn
c0Vycm9yKQpAQCAtMTE0LDExICsxMTQsMTEgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2Fk
VHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmlnZ2UKIAog
c3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmpl
Y3QmIHJ1bGVPYmplY3QsIEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpTVmFsdWUgYWN0aW9uT2Jq
ZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJhY3Rpb24iKSk7
CisgICAgSlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBpZiAoIWFjdGlvbk9iamVj
dCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3QuaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRBY3Rpb247CiAK
LSAgICBKU1ZhbHVlIHR5cGVPYmplY3QgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlm
aWVyKCZleGVjLCAidHlwZSIpKTsKKyAgICBKU1ZhbHVlIHR5cGVPYmplY3QgPSBhY3Rpb25PYmpl
Y3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAidHlwZSIpKTsKICAg
ICBpZiAoIXR5cGVPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhdHlwZU9iamVjdC5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52
YWxpZEFjdGlvblR5cGU7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9j
b2RlIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgQWN0
aW9uJgogICAgIGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gImJsb2NrLWNvb2tpZXMiKQogICAgICAg
ICBhY3Rpb24gPSBBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM7CiAgICAgZWxzZSBpZiAoYWN0aW9u
VHlwZSA9PSAiY3NzLWRpc3BsYXktbm9uZSIpIHsKLSAgICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9
IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJzZWxlY3RvciIpKTsK
KyAgICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJzZWxlY3RvciIpKTsKICAgICAgICAgaWYgKCFzZWxl
Y3RvciB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFzZWxlY3Rvci5pc1N0cmluZygpKQogICAg
ICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDU1NEaXNw
bGF5Tm9uZUFjdGlvblR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDFhOWUyOThmNjQ0ZDZiMWUxYThmMzJmMjJjN2IxZDc0Y2I3NmU3MWIuLjU5ZjRk
ZWFjYTVlYzI5YTEwZDEzNWE3NjU4ZGUyODBhNTlhMTY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzY1OSw3ICszNjU5LDcgQEAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9i
YWxPYmplY3QmIGcKICAgICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1
cm4gSlNDOjpqc051bGwoKTsKICAgICAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0
KCZleGVjLnZtKCksICJjb250cm9sc0hvc3QiKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJv
bHNIb3N0ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZtKCksICJjb250cm9s
c0hvc3QiKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNXcmFwcGVyID0gbWVkaWFK
U1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsKICAgICBpZiAoZXhlYy5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0zNjY4LDcg
KzM2NjgsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpTQzo6RXhl
Y1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlmICghY29udHJvbHNIb3N0
SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIAotICAgIEpT
Qzo6SWRlbnRpZmllciBjb250cm9sbGVySUQoJmV4ZWMudm0oKSwgImNvbnRyb2xsZXIiKTsKKyAg
ICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZleGVjLnZtKCksICJjb250cm9sbGVyIik7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xs
ZXJKU1dyYXBwZXIgPSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29u
dHJvbGxlcklEKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIC8vICAgICBOb25lCiAgICAgLy8gUmV0
dXJuIHZhbHVlOgogICAgIC8vICAgICBOb25lCi0gICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVl
ID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAidXBk
YXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKKyAgICBKU0M6OkpTVmFsdWUgbWV0aG9kVmFsdWUgPSBj
b250cm9sbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOwogICAgIEpTQzo6SlNPYmplY3QqIG1ldGhv
ZE9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0aG9kVmFsdWUp
OwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CkBAIC01ODUxLDcgKzU4
NTEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3Rl
ZFNjcmlwdCgpCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOworICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
blZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc0Z1
bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01ODc0LDcgKzU4NzQsNyBAQCBz
dGF0aWMgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIGNvbnRybwogewogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHByb3Bl
cnR5U2xvdChjb250cm9sbGVyVmFsdWUpOwogICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJP
YmplY3QgPSBjb250cm9sbGVyVmFsdWUudG9PYmplY3QoZXhlYyk7Ci0gICAgY29udHJvbGxlck9i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3QsIGV4ZWMsIEpTQzo6SWRl
bnRpZmllcihleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNOdW1iZXIocGFnZVNjYWxl
RmFjdG9yKSwgcHJvcGVydHlTbG90KTsKKyAgICBjb250cm9sbGVyT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5wdXQoY29udHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJwYWdlU2NhbGVGYWN0b3IiKSwgSlNDOjpqc051bWJlcihwYWdlU2NhbGVGYWN0
b3IpLCBwcm9wZXJ0eVNsb3QpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKQEAgLTU5MDMsNyArNTkwMyw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dS
b290KiByb290KQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgQSByZWZlcmVuY2Ug
dG8gdGhlIGNyZWF0ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4KIAotICAgIEpTQzo6SlNW
YWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlm
aWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb25W
YWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTMyLDcgKzU5MzIsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCogcm9vdCkKIAogICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRpYUNvbnRyb2xsZXJIb3N0
LCBhbmQgQ29udHJvbGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhlaXIgcmVsYXRpb25zaGlw
CiAgICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBtZWRpYUpTV3JhcHBl
ci50b09iamVjdChleGVjKTsKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNIb3N0KCZleGVj
LT52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9z
dCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwgImNvbnRyb2xzSG9z
dCIpOwogICAgIAogICAgIEFTU0VSVCghbWVkaWFKU1dyYXBwZXJPYmplY3QtPmhhc1Byb3BlcnR5
KGV4ZWMsIGNvbnRyb2xzSG9zdCkpOwogCkBAIC01OTQyLDcgKzU5NDIsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkK
ICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIoJmV4ZWMtPnZtKCksICJj
b250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIgPSBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7CiAKICAgICBBU1NF
UlQoIWNvbnRyb2xsZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRyb2xsZXIpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXgg
NzQzZTk5NjRiNTk4NjYxMDQxZWYzZjQ4NjI0MTUyNjYyOWEzY2U0MS4uODNmMWI3ZTYwZTczMTkz
YWVkMDFjMTdmNTE0YWUwYjVkOTAwYzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJv
b3QpCiAgICAgYXJnTGlzdC5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4oIW1fc25hcHNob3RJbWFnZSkp
OwogCiAgICAgLy8gSXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJvdmlkZXMgYSBjcmVhdGVP
dmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rpb24uCi0gICAgSlNDOjpK
U09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmll
cihleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsKKyAgICBKU0M6OkpTT2Jq
ZWN0KiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KGV4ZWMpOwogICAgIEpT
Qzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJs
YXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92ZXJsYXksIGNhbGxEYXRhKTsKICAgICBp
ZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDJlM2Y0OWVmN2M4MWZmOGE3
MDQzMTg0YjY0MGMwNThlNmY2ZDY5Ny4uYjUyZDFlNjJhNTY2Yjk5NmRjZDkyYWM5NGQ0YTMwZjI0
NmJiYzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdChK
U0NvbnRleHRSZWYgY29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlzPERvY3VtZW50Pigqc2Ny
aXB0Q29udGV4dCkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0Q29u
dGV4dCkpKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4o
c2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250
ZXh0UmVmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IDljZDY1NWM5ZjcxMDUz
NWE5ZGYyYWY0NTdkNzA0NDZhNmQ5YjZlNjcuLjM0NDFlNGZiMTM3OGQ5Mzg3NTY0NTZlYjk1OWQ1
ZGZkMTFmOGJiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02MjcsNyArNjI3LDcgQEAg
c3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKElkZW50aWZpZXJS
ZXAqIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlzU3RyaW5nKCkpOwogICAK
ICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsgICAgCi0gICAgcmV0
dXJuIElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBTdHJpbmc6OmZyb21VVEY4
V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKKyAgICByZXR1cm4gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVU
RjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpOwogfQogCiBrZXJuX3JldHVy
bl90IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQs
IHVpbnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0SUQsIHVpbnQ2NF90IHNlcnZlcklk
ZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5tbQppbmRleCAwZGYwZGVjMGMyNDc4ZjBmYjFmZTg4YzY0ODkzMGIyYWE4MmYwZjAy
Li43NTFiMTZhZGNiMDNlYTllM2M5NjEzOTBjYWM0ZWE4NDNiYTBkZDBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTMyMSw3
ICszMjEsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogCiAgICAgICAgIGlmIChpZGVudGlm
aWVyLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlm
aWVyLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcigmSlNE
T01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2so
c3RyLCBzdHJsZW4oc3RyKSkpKTsKKyAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmll
ci0+bnVtYmVyKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMWNlZDI5M2ViOGNj
Yzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZmRiZTgxYThlMGJlOTc2OTQ5OWFjOWIyZDNl
MGZhMzFkYmI1NTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZv
aWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBp
ZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBzdHJsZW4o
c3RyaW5nKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZp
ZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0
aCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyaW5nLCBsZW5n
dGgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNw
cAppbmRleCAwZDE2Njc0ZTVjMTVmNDcxNzE4NTQzZDI1Y2E0ZjMxMDljMDUyZDIyLi5hNjVjODkz
M2ZjZTBjYjgwYmQwOTZjNzY0NzY4YzAyYzEwOGZjMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmll
clJlcChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJSZXAqIGlkCiAgICAgY29uc3QgY2hhciog
c3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgaW50IGxlbmd0aCA9IHN0cmxl
bihzdHJpbmcpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgpKTsKKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aGFzTWV0aG9k
KE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgTlBKU09i
amVjdDo6ZW51bWVyYXRlKE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXJzLCB1aW50MzJfdCogaWRl
bnRpZmllckNvdW50CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG1fanNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldFByb3BlcnR5TmFtZXMobV9qc09iamVjdC5nZXQoKSwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgbV9qc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhtX2pzT2JqZWN0LmdldCgpLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGU6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAg
ICAgTlBJZGVudGlmaWVyKiBuYW1lSWRlbnRpZmllcnMgPSBucG5NZW1OZXdBcnJheTxOUElkZW50
aWZpZXI+KHByb3BlcnR5TmFtZXMuc2l6ZSgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249603</attachid>
            <date>2015-03-27 13:31:32 -0700</date>
            <delta_ts>2015-03-28 02:00:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143146-20150328053052.patch</filename>
            <type>text/plain</type>
            <size>212081</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDVmMzkxYWQxMjgxYzI0Njk4YjY0NTEyNTdlYzhiMTU1Y2VlOTQyLi41ZDNlZGRjYTg4NjNlMDdm
ZWY1M2RkMGNmODRkMTgwYWJmMTMwYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlm
eSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGEgbG90IG9mIHBsYWNlcywgYElkZW50aWZpZXIo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29uc3RydWN0b3IgaXMgdXNlZC4KKyAgICAg
ICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVzZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRp
ZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9ybWFsIHN0cmluZywgaXQgaXMgcmVwbGFj
YWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZAorICAgICAgICAyKSBgdWlkYCwgd2hpY2ggaG9sZHMg
YGlzU3ltYm9sYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9scy4KKyAgICAgICAgU28g
d2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3RyaW5ncyBhbmQgaW5zdGVh
ZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAgICArIGBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKWAuCisgICAgICAgIEp1
c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmdzLiBUaGUgc3ltYm9sLW5lc3Mgb2Yg
U3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisgICAgICAgICsgYElkZW50aWZpZXI6OmZyb21VaWQo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZCBmb3IgMikgYHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2Vw
dC4KKworICAgICAgICBBbmQgdG8gY2xlYW4gdXAgYFN0cmluZ0ltcGxgIHdoaWNoIGlzIHVzZWQg
YXMgdWlkLAorICAgICAgICB3ZSBpbnRyb2R1Y2UgYFN0cmluZ0tpbmRgIGludG8gYFN0cmluZ0lt
cGxgLiBUaGVyZSdzIDMga2luZHMKKyAgICAgICAgMS4gU3RyaW5nTm9ybWFsIChub24tYXRvbWlj
LCBub24tc3ltYm9sKQorICAgICAgICAyLiBTdHJpbmdBdG9taWMgKGF0b21pYywgbm9uLXN5bWJv
bCkKKyAgICAgICAgMy4gU3RyaW5nU3ltYm9sIChub24tYXRvbWljLCBzeW1ib2wpCisgICAgICAg
IFRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQW5kIChhdG9taWMsIHN5bWJvbCkgY2FzZSBz
aG91bGQgbm90IGV4aXN0LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdE1ha2VGdW5jdGlvbik6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5n
LmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAg
ICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJzOjpy
ZWFsbHlBZGQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFp
bHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21F
eGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRk
Q29uc3RydWN0YWJsZUZ1bmN0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAg
KHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFkZFZhcik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJB
cmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChK
U0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgor
ICAgICAgICAoSlNDOjphZGRFcnJvckluZm8pOgorICAgICAgICAoSlNDOjpoYXNFcnJvckluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBl
Pjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6aXNTeW1ib2wpOgorICAgICAgICAoSlNDOjpJZGVu
dGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVVpZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJ
bkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
OgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5
U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JG
dW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9J
ZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojp0cnlKU09OUFBhcnNlKToKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1l
Ojphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRk
S25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RT
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisKIDIwMTUtMDMtMjYgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgbW9yZSBvYmplY3RzIHVz
ZSBGYXN0TWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmZWNiYzQyZmQ1MmU0M2U4ODIzMjE0MjY1NTVkZWFkMWZkMDEw
NWMuLmEyNDdhMDJlY2FhYjZhNTQwNjcxYTg2ZmQxNTllMjg3NDFmY2QyMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFN0cmluZ0tpbmQgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAg
ICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKToKKyAgICAgICAgV2hlbiByZWdp
c3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLAorICAgICAgICBpdCBzaG91
bGQgbm90IGJlIGEgc3ltYm9sIHN0cmluZworICAgICAgICBiZWNhdXNlIHN5bWJvbCBhbmQgYXRv
bWljIHR5cGVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYSBzeW1ib2wg
c3RyaW5nIGNvbWVzLCB3ZSBleHRyYWN0IGFuIG93bmVyIHN0cmluZworICAgICAgICBmcm9tIGEg
c3ltYm9sIHN0cmluZyBieSB1c2luZyBgU3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0cmluZ0lu
U3ltYm9sKClgLgorICAgICAgICBJdCBhbHdheXMgc3VjY2VlZHMgYmVjYXVzZSBhIHN5bWJvbCAo
bm9uIGVtcHR5KSBzdHJpbmcKKyAgICAgICAgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQg
aGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1wdHkgc3ltYm9sIHN0cmluZyBkb2Vzbid0
IGhhdmUgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkg
YCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZCk6CisgICAgICAgIChXVEY6OkF0
b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp+U3RyaW5nSW1w
bCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbCk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmbGFnSXNTeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2lu
ZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjppc1N5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRv
bWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmZsYWdJc1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmlzVW5pcXVlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKTog
RGVsZXRlZC4KKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgQ01ha2Ugb24gTWFjLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGRkNjdjODAzOTc2MGZkODVjOTM3OWVhMDMzMjQwY2YwZTdkZDU5ZmYuLjljMTFi
MTVhNTRjNmY4OTI0NzExMTcxODRiMWJkMmRkZTlkODdiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMzMgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgSWRlbnRpZmllciBjcmVhdGlvbnMuCisKKyAg
ICAgICAgMS4gSWYgdGhlIGNvZGUgY3JlYXRlcyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1wbCoK
KyAgICAgICAgd2hpY2ggaXMgdHJlYXRlZCBhcyBzeW1ib2wgb3Igc3RyaW5nKHVuaXF1ZSBpZCks
IHVzZSBJZGVudGlmaWVyOjpmcm9tVWlkLgorICAgICAgICAyLiBJZiB0aGUgY29kZSBjcmVhdGVz
IElkZW50aWZpZXIgZnJvbSBzdHJpbmcsIHVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nLgorCisg
ICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxh
Y2VtZW50U2NyaXB0SW5qZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFN0cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6
CisgICAgICAgIChXZWJDb3JlOjphZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRK
U09ORm9yUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJv
dGF0aW9uUmF0ZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlv
bk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERv
Y3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1h
Z2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExp
c3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93
TGlzdDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRJbnRlcm5hbFNsb3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJ
bnRlcm5hbFNsb3RGcm9tT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNl
cmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVu
dHM6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2Vi
U2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjppZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGJyaWRnZS90
ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdCk6CisKIDIwMTUtMDMtMjcgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIGFkZGl0aW9u
YWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBwcm9jZXNzZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAwNGY1ZjgyNTg5YzBhNDRlNjYwMGI3MjBiMmU4NDNmODE1ZmM3NjRhLi41MzA5
MDBhZmQwMTNjOTRlOGRlZWZmYmMyMTlhMGU0YTY0OGE2ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xh
cmlmeSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgdG8gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUlu
c3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDllM2M5ZDcxYjNlN2E4NmNmYmU0ZTEwMDRiMWMw
MGVkYjkyM2JhZTEuLjA1MTY0NTI3MGE2M2NkNDM5NDkzNGY5YjUyNWYwYWYwNDA1YmFkMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBJZGVudGlmaWVyIGZhY3Rv
cmllcyB0byBjbGFyaWZ5IHRoZSBtZWFuaW5nIG9mIFN0cmluZ0ltcGwqCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGNoYW5nZSB0byBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6
CisKIDIwMTUtMDMtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGb3J3YXJkIGFkZGl0aW9uYWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBw
cm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOWIxY2I4ZjVmM2YxZGRjZjdhNmY4YWExYjdkMGJhZmJl
MzIxODlmZS4uYTBiODNlNzdmZjU3MDI4N2VmNjdlOTQ3N2MxZTkyN2RiOTU5N2NmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKQEAgLTUyMSw4ICs1MjEsMTAgQEAKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQg
PSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAgICAgICAgIFN0
YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAgICAgICAgICAg
IGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAm
JiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8
IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghbmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUp
KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IApAQCAtNTMyLDggKzUzNCwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0
YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3Rh
dGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVt
KSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFuYW1lLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBT
dHJpbmcobmFtZSkpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4
IDIzNGQyNDg4ZmY4OTBiOGJlZTY5N2VmNTVhYTY4MDM4MGExODFhNDIuLjZjZTFjMmMxMTMzYjY5
MGE3N2NkYzlhY2FjOGFmMzdjYTg1MzA3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQg
cGEKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgc3RhcnRpbmdMaW5lTnVt
YmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKLSAgICBJZGVudGlmaWVyIG5h
bWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXIo
ZXhlYywgImFub255bW91cyIpOworICAgIElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUt
PmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpIDogSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YW5vbnltb3VzIik7CiAgICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKaW5kZXggMjJjMTYyMzBjN2MxZDM2
OTExYzdkNTg5Y2U1MGYwOTQyODdhMWQ5ZS4uN2Y5ZWRiNDEzNmUyNzQ5OTc0N2QyOTZkMmYxYTJk
YzQ4OWIwNDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgog
CkBAIC02OSw5ICs3MCw5IEBAIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6OmlkZW50aWZpZXIo
Vk0qIHZtKSBjb25zdAogICAgICAgICByZXR1cm4gSWRlbnRpZmllcihJZGVudGlmaWVyOjpFbXB0
eUlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gSWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIElkZW50aWZp
ZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBtX3N0cmluZy5sZW5ndGgoKSk7CiB9CiAKIGNvbnN0IFVDaGFyKiBPcGFxdWVKU1N0cmluZzo6
Y2hhcmFjdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDJkZjc4NzY0MTBlNzhjZjlmYWJmMjQxNzg2ZTYw
MjQyZmU0ZWVlMDkuLmYzYTIyMzhlYmE5OGZjMTI4MjdiODFkZWYyYzgwYzYzMTRjZTA1ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChib29sIGFyZ3VtZW50KQogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sobV9leGVjKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9l
eGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9
IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBt
X25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBoYWRF
eGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKaW5kZXggYzAxMjQ4NzdlYmI4OWM3MGNiZjQwYjk3NTg1Yzc3NTg1NzBlNmJi
YS4uY2IzMDYwODUyOGFlNDQ3ZjgyY2IzOTMwOWEwNDM5OTFkZTAwOTc1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoY29uc3QgUwogICAgICAgICAKICAg
ICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZC5pbXBsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2xvc2VkVmFyaWFibGUtPmlzVW5pcXVlKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjbG9zZWRWYXJpYWJsZS0+aXNTeW1ib2woKSk7CiAgICAgfQogICAgIGJvZHktPm92ZXJyaWRl
TmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNl
LCBib2R5LCBraW5kLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEz
ZjQ2YjMyYzQ4MGUwNTc4OTYzNzlkZmE0Li43YjQ3ODNhMWYwMTJlMWMyM2YwYWE4MWJiZjVmNjE3
ZjNjZWIwMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC0zMSwxMiArMzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVm
aW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSks
IG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJ
TGl0ZXJhbCgiU3ltYm9sLiIgI25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1F
UyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNu
YW1lIyNQcml2YXRlTmFtZTs7CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1l
KSAsIG1fIyNuYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1l
IyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpKQorI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsg
Y29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNv
bnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25h
bWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMo
bmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpLCBtXyMjbmFtZSMjU3ltYm9sKElk
ZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFt
ZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgREVDTEFSRV9CVUlM
VElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisgICAgREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1ib2w7IH0KKwogI2Rl
ZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRv
UHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOwog
I2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGlj
VG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUp
OwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAg
IDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikK
ICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJ
TFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0Vf
QlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElT
RV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BV
QkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9f
UFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkK
ICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsK
ICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlM
VElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NP
UikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQogCiBwcml2YXRlOgogICAgIElk
ZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKyAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChE
RUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJlcEhhc2g+IEJ1aWx0aW5OYW1l
c01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1ByaXZhdGVNYXA7CiAgICAgQnVp
bHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAtNzMsNyArODQsOSBAQCBjbGFz
cyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9OQU1FUwogI3VuZGVmIElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVS
X0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUworI3VuZGVmIElOSVRJ
QUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NF
U1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKQEAgLTkxLDcgKzEwNCw3IEBA
IGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlmaWVyOwog
fQogCi0gICAgCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDBhYmJkYmVkMWQ3
NGQ4MTllYjIzYjFjYjYyMWI1YjhhMjBmYWVhODcuLjc0MzBmYjEyYjBhZTFhYjRhYTAzMzUzZjVk
ZjhkZjg4YzRlOTJlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBWZWN0b3I8SWRlbnRp
ZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJpYWJsZXMu
cmVzZXJ2ZUNhcGFjaXR5KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1WYXJpYWJsZXM7ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3Qu
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0Lmlt
cGwoKS0+aXNBdG9taWMoKSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzU3ltYm9sKCkp
OwogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAg
ICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjQwNSwxNCArMjQw
NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1pdENhdGNo
KFRyeURhdGEqIHRyeURhdGEsIFJlZ2lzdGVySUQqCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZW1p
dE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92bSwgbWVz
c2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBtZXNz
YWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodHJ1ZSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50
KElkZW50aWZpZXIobV92bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmFsc2UpOwogfQogCkBAIC0yNTc5LDcgKzI1NzksNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpCiAgICAgaWYgKCFpc1N0
cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3Rh
dGljX2Vycm9yKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAgICAgCkBAIC0yNTg4LDcgKzI1
ODgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUg
PSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwg
c3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JQcml2YXRlTmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVy
YXRvclN5bWJvbCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51
bGxwdHIpOwogICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElk
ZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50
aWZpZXJzLmNwcAppbmRleCA2MGE0OTRkZGNmNGIxNTM4MWFjYWYwYzU4MTg5NjQ2NGU3YTJlNDNi
Li42NWMzMDFkYmVlMTZkM2Y3NGI1NDI3YjdhMGY2OTI0ODg0MWM0ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgRGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBD
b21tb25EYXRhKiBjb21tb25EYXRhKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fk
ZGVkSWRlbnRpZmllcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nSW1wbCogcmVwID0g
bV9hZGRlZElkZW50aWZpZXJzW2ldOwogICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExlYXN0T25l
UmVmKCkpOwotICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcigmdm0sIHJlcCkpOworICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBl
bmQoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHJlcCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAppbmRleCBiMjk3NGFiZmU5ZmNjODY2ZTM5MjAwNGE5OWVmOGQ5NmQ1NWYzZDUzLi4yMWIw
OGUzOGYzOWE3ZTY5NTVlMTg0ZjI5NWE4NDBiYTE2ZjMxZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApA
QCAtMjAzLDIwICsyMDMsMjAgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rp
b25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFN0cmluZyBzY3JpcHRJRCA9IFN0cmlu
Zzo6bnVtYmVyKHNvdXJjZUNvZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CiAgICAgSlNPYmplY3Qq
IGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgbG9jYXRpb24tPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmlu
ZyhleGVjLCBzY3JpcHRJRCkpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0g
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1
bW5OdW1iZXIiKSwganNOdW1iZXIoY29sdW1uTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIp
LCBqc1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZU51bWJlciIpLCBqc051
bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW5OdW1iZXIiKSwganNOdW1iZXIoY29s
dW1uTnVtYmVyKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAibG9jYXRpb24iKSwgbG9jYXRpb24pOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9u
KTsKIAogICAgIFN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhlYyk7CiAgICAgaWYgKCFu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
Im5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1l
ID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKGV4ZWMpOwogICAgIGlmICghZGlzcGxheU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOwogCiAg
ICAgLy8gRklYTUU6IHByb3ZpZGUgZnVuY3Rpb24gc2NvcGUgZGF0YSBpbiAic2NvcGVzUmF3IiBw
cm9wZXJ0eSB3aGVuIEpTQyBzdXBwb3J0cyBpdC4KICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvODcxOTI+IFtKU0NdIGV4cG9zZSBmdW5jdGlvbiAoY2xvc3VyZSkgaW5uZXIgY29udGV4dCB0
byBkZWJ1Z2dlcgpAQCAtMjI3LDggKzIyNyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNPYmplY3QqIGNv
bnN0cnVjdEludGVybmFsUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIHZhbHVlKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzgxLDggKzM4MSw4IEBAIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7
CiAgICAgZm9yIChhdXRvIGl0ID0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+YmVnaW4oKTsgaXQg
IT0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgSlNPYmpl
Y3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5IiksIGl0LT5rZXkpOwot
ICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZh
bHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5IiksIGl0LT5rZXkpOworICAg
ICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInZhbHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChleGVjLCBmZXRjaGVkKyssIGVudHJ5KTsKICAgICAgICAgaWYgKG51bWJlclRvRmV0
Y2ggJiYgZmV0Y2hlZCA+PSBudW1iZXJUb0ZldGNoKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00
MzEsNyArNDMxLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRy
aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRyeS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIG5leHRWYWx1
ZSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAidmFsdWUiKSwgbmV4dFZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIGVudHJ5KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHAKaW5kZXggNGJmZmFkMWUxMDAwYjkxOWJmNTQ4YWZkYjQ3NTQ2MTI0ZTEzMDlm
Yy4uYjFjZTBhMTM4YmMwNWYxMDA3NzE1NzVlOWEzYjliNWM1NDc5MGQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmEKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJ3ZWFrTWFwRW50cmllcyIsIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcywgRG9udEVudW0s
IDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oIml0ZXJhdG9yRW50cmllcyIsIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMsIERvbnRFbnVtLCAx
KTsKIAotICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyKCZ2bSwgImV2YWx1YXRlIik7
CisgICAgSWRlbnRpZmllciBldmFsdWF0ZUlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImV2YWx1YXRlIik7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIGV2YWx1YXRlSWRl
bnRpZmllci5zdHJpbmcoKSwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVF
dmFsdWF0ZSk7CiAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKaW5kZXggNThiYjY4YjBh
MWYzODhmMjFjYWY4YjVmNjIyY2FkNzdiMjA3OWUyZC4uNDgyODM4NjUyNGRjMjZhYjQ2Yzg0MTM1
NjgzMWM3MGRjNmU5ZmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApA
QCAtNjMsNyArNjMsNyBAQAogCiAjZGVmaW5lIEpTQ19OQVRJVkVfTk9OX0lOREVYX0FDQ0VTU09S
KGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHsgXAotICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBqc05hbWUpOyBcCisgICAgICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBqc05hbWUpOyBcCiAgICAgICAgIEdl
dHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsgXAogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBpZGVudGlmaWVyLnN0cmluZygpLCBjcHBOYW1lKTsgXAog
ICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggMjdkYzA5OWJkYjU4YjA3NDNhM2JiNmUxNWEyZDMw
ZDUzYjAxYmNiMi4uZjlmNmMxYzQ5YWFhNjA2YTM3MzM0OGI2ZTJkOGZjMjcwZmNkZThiNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMTksMTEgKzExOSwxMSBAQCBjbGFzcyBDcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGdW5jdG9yIHsKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QsIGludCogbGluZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNl
VVJMKQogewogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJ
bnNwZWN0b3I6IFNob3VsZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5n
IGV4Y2VwdGlvbnMKLSAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1
ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGlu
ZVZhbHVlICYmIGxpbmVWYWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihl
eGVjKSkgOiAwOwotICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdl
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNW
YWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVt
YmVyID0gY29sdW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5W
YWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBl
eGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJz
b3VyY2VVUkwiKSk7CisgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNv
dXJjZVVSTCIpKTsKICAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJM
VmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSA6IEFTQ0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRp
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDY0NTE2NTBkNjA4MmVlZDEzYWMxYmQyNTcxMTI5NGQyMWRlNjJkM2YuLjU4Yjg2MzZkODg2
ZGJiMmU4NTI5MWIyOTM1MGQ5Y2Y0ZTE0MjQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvCiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVy
IGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoYmFzZSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgp
ID8gSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJCiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmll
ciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJl
c3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3Qp
OwogICAgIApAQCAtMjMwLDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0
KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBA
IC0yNTcsNyArMjU3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2so
KS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5w
dXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2Nr
KCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09i
amVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAK
LSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRl
bnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlm
aWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVu
dCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiBleGVjLCBTdHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMmIyZDFiN2JhZTc4
MjdiMDA3YmNlZjJjZjBkZWUxZTc2MmI3Y2M3ZC4uZmE5NGFiNjgzNTIyNmE2ODJlYmY0N2Q2YmUz
NmE2YTBkODI0MmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYxOCwxMSArNjE4LDExIEBA
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRS
b290LCAyKTsKICAgICAgICAgCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0
aGlzLCBJZGVudGlmaWVyKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1Ry
dWVJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcigmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgInByZWRpY3RJbnQzMiIpLCAw
LCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERv
bnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50
aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMs
IERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwg
SXNGaW5hbFRpZXJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVh
cFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5z
aWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImVmZmVjdGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFk
ZXIsIDApOwpAQCAtNjQ0LDIwICs2NDQsMjAgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4
KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsK
LSAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogICAgICAgICAKLSAgICAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxFeGVjKCksICJjb25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIHZv
aWQgYWRkRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRp
Zmllci5zdHJpbmcoKSwgZnVuY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25z
dHJ1Y3RhYmxlRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZt
LCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRl
bnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAg
IH0KIH07CkBAIC04ODksNyArODg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChpKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIEpTVmFs
dWUgZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xMjcwLDcgKzEyNzAs
NyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVz
XG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZh
bHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9u
OiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgc3RhY2tJRChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgInN0YWNrIik7CisgICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKICAg
ICAgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24uZ2V0KGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKICAgICAgICAgICAgIGlmICghc3Rh
Y2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiJXNc
biIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFiMDE1MDFiMTI5MTdkOWVlODBl
ZDMxNTIzZjkyNThkYzQ0MmRhMmUuLmVkZmQ2NzAxZGMwZjNkNTkxY2IzNzhkMzk5OGNiN2Q0MmY5
MDRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAg
QVNTRVJUKGJpdHdpc2VfY2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3Iu
YmVnaW4oKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJp
dEJ1ZmZlciA9PSAzMik7CisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVm
ZmVyID09IDgpOwogfQogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IDQzZWQ3ZThmMmUxODc0OTJlZjBiMDg1NWVjZmI3MjY3OTg1OTE3
N2EuLmZkYTkxZWQ1OTkwY2I2ZTRmMmNiNzhhYTZhNGIyZDhjMmMwYzQ3MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTE3OSw3ICsxNzksNyBAQCBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCiBjb25zdCBMTEludFJldHVy
blBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KLWNvbnN0
IEhhc2hGbGFnczhCaXRCdWZmZXIgPSAzMgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDgK
IAogIyBDb3BpZWQgZnJvbSBQcm9wZXJ0eU9mZnNldC5oCiBjb25zdCBmaXJzdE91dE9mTGluZU9m
ZnNldCA9IDEwMApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRl
eCBjNDhlNDFjNTg2NWRmZDUwMDc0ZjQ5ZGJhMTNkYzc0NjI5NjYzZWQxLi4wYzY4MDc4ZTNiOTZk
MzU4ZDI0NmJkOTRjNjA0NTI1NDkzMjViZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaApAQCAtNTcxLDcgKzU3MSw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgIHsKICAgICAgICAgaWYgKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRl
bnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIEFTU0VSVChpZGVudC0+
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRv
bWljKCkgfHwgaWRlbnQtPmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIG1fc2NvcGUubV92
YXJEZWNsYXJhdGlvbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCppZGVudCwgYXR0cnMpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1ZjUxZGEy
NGI0Mzg1MzliN2Q1YjBmNDk1NDE0OTA5NTQ2MjcyNzI2Li4yMDQwNTEyMmJiMTU2ODAxNDFiNDU5
YTMyYzViYzZkNzI0ZmJhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yOTEsMTAgKzI5MSwxMCBAQAogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7CiAgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewotICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwg
dmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJp
YWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMuaW1wbCgpKQpAQCAtNTIzLDcgKzUyMyw3IEBACiAgICAgQVNTRVJUKCFuYW1lLmlzRW1w
dHkoKSk7CiAgICAgQVNTRVJUKCFuYW1lLmlzTnVsbCgpKTsKICAgICAKLSAgICBBU1NFUlQobmFt
ZS5pbXBsKCktPmlzQXRvbWljKCkpOworICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMo
KSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7CiAgICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpCiAgICAgICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3Qg
dG8gYSB2YXJpYWJsZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNDI3Yjg0
Y2RhNTMyMzFhNTQ3MDZmNGNlZmVjM2Q4MWQ3OGI1MGRkYi4uNDBlY2U1M2EwYjY0NGMwODIwNzlj
MjJkZjBmOTQzYmMyNWRiZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaApAQCAtNzMsMjAgKzczLDIwIEBACiAgICAgICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIHZtLT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewotICAg
ICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywg
bGVuZ3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID09IDEp
IHsKICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAg
ICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVu
Z3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAg
ICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAg
ICAgIGlmIChpZGVudCAmJiBJZGVudGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAg
ICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJh
Y3RlcnMsIGxlbmd0aCkpOwogICAgICAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
cy5sYXN0KCk7CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50
aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0g
ICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYs
NyArMTE2LDcgQEAKICAgICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmll
ckFyZW5hOjptYWtlTnVtZXJpY0lkZW50aWZpZXIoVk0qIHZtLCBkb3VibGUgbnVtYmVyKQogICAg
IHsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgU3RyaW5nOjpu
dW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOworICAgICAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdChudW1iZXIpKSk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3Qo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBhZDhiNzU5MGQ4NWU2NTZh
OTEyYjRhYTk5MTc2MGZhZDM2MzA2MGJmLi5mYzM1YTlmYzUxMjg0YzA1NGQwMGZkZTdmZjg2Y2Zm
NzAxOTI0ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZv
aWQgQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAg
IHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBmNzY4
NjhjMDNlYTUzMzgwMTBhMmI3YjA2MWZmMGQ0MjkwODU0YmMyLi5iODYyNjc3MDFmNDA5OTA2ODI1
NTkzYzNmOWQ2NDViZDFmYTM2ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTksNyArNTksNyBA
QCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFBy
b3RvdHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDAp
OwogfQogCiBib29sIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiMmZkNzExODFkMGMxYjdlYTYwNzBkNzg5Mzcy
MWYzY2VlNmE0Nzc2Li44MTQ4YTMxYWI3NmI4NDI3Zjg3OGUwZjc3YTVhZjJkZGY1NWM0MDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90
eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBE
b250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIH0KIAog
Ym9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQpAQCAtNTMxLDcgKzUzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgp
ICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2
NF90PihuKSkudG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCmluZGV4IGViOTVmNzg0Y2UyYmYyMWI3NzViY2Q4MzU0YjU4MjRhNjBlZWEyOGYu
LjgwN2Q1MWY5MjM5ZGUxMTRmMDc0NjhlZGYwMjMxNmVjM2QxNmU0MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTQwLDkg
KzE0MCw5IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgaWYgKEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAotICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lKSB7CisgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKSB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRz
RnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1
bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNTZkZjM0NTAyODdmZjk5OWEzOGZjZjRjYjcx
NTBlODYxYTU2NDNlOC4uMGIyOGQ1Yzg3OTY2NmNiMTUzYjM4YjM4N2VmN2YxMDdjNWJlODBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcApAQCAtMjIsMjUgKzIyLDI4IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUo
bmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUp
ICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlf
TkFNRShuYW1lKSAsIG5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUo
bmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5h
bWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9i
dWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQogICAgICwgZW1wdHlJ
ZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRlbnRpZmllcikKLSAgICAsIHVuZGVyc2NvcmVQ
cm90byh2bSwgIl9fcHJvdG9fXyIpCi0gICAgLCB0aGlzSWRlbnRpZmllcih2bSwgInRoaXMiKQot
ICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcih2bSwgInVzZSBzdHJpY3QiKQorICAgICwgdW5kZXJz
Y29yZVByb3RvKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iKSkKKyAgICAs
IHRoaXNJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlzIikpCisgICAg
LCB1c2VTdHJpY3RJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2Ugc3Ry
aWN0IikpCiAgICAgLCBtX2J1aWx0aW5OYW1lcyhuZXcgQnVpbHRpbk5hbWVzKHZtLCB0aGlzKSkK
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdP
UkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9T
WU1CT0wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDZmMzRmYTkzMGQzYjE2Mjg3NTgwYmE0NWRkNWI1N2Q0MDdl
ZDNlNDYuLjc5OTBiM2YxNGQyMTI5ODQ5MzA0MzE4ZTllYzU4NjNiODFkZjUyY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MjM0LDcgKzIzNCw2IEBACiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFj
cm8pIFwKICAgICBtYWNybyhpdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwKQEAgLTI5OCw3
ICsyOTcsMTEgQEAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BF
UlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7
CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TAotICAgICAgICAKKworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VM
TF9LTk9XTl9TWU1CT0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9s
OworICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dO
X1NZTUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dO
X1NZTUJPTF9HTE9CQUwKKwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGlj
TmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA5MzBiNmZhZjZiYzFmYzY1ZGU5ZTYxYTFmYzdlNjJh
OWU1ZmM2ODBlLi4zNjE1NmExZTA1MTY4MWY1Y2ViNTYxODJiNmU0ZWI5NDI5YjhmNTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xMzcsMTcgKzEzNywxNyBA
QCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTbwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0g
c291cmNlLnByb3ZpZGVyKCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCi0gICAgICAg
IGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwg
anNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5w
dXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBsaW5lUHJvcGVydHlOYW1l
KSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3Vy
Y2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVy
KHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZt
LCBzb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiBlcnJvcjsK
IH0KIAogCiBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJv
cikKIHsKLSAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgbGluZVByb3BlcnR5TmFtZSkpCi0gICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBl
cnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBsaW5l
UHJvcGVydHlOYW1lKSkKKyAgICAgICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKIEpT
T2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDY5MTA1YjY4
ZDA5N2M5YmRmOGY1NzdiMTdjOWM1MjhjMTg0ZWFkZTkuLjVlMTg1OThmODcxYzQ2OWYyYjlkMzg2
ZDQ2NDdlNTFmOTA0MjUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04Miw4ICs4Miw3IEBAIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNP
YmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICAKLSAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1Vu
aXF1ZSgpKSB7CisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNTeW1ib2woKSkgewogICAgICAgICBT
dHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAi
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oCmluZGV4IDUxNmI3YWE4MDYzMTU5MTg2OTFmZGZiYWJmYjA0YmZhMWJj
YzE3NTQuLjBjODk5NWM3YjNhZTRhMmQxMmMzYjFhMTY5ZmM0NjhhMWViZWZiYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaApAQCAtNTgsOSArNTgsOSBAQAogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKLSAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRl
TmFtZSkgeworICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCkgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0Z1bmNJdGVy
YXRvciwgRG9udEVudW0sIDApOworICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmlu
ZGV4IDAxMzJkMGU3NTI4ZWEzNjNiOGMzMTM2ZWNlNWIwMDhjNTM5YTM4ZWYuLmRlNGFjYmMyYTU3
NWI2NjgwOWU0MjcxNjBhYWE0ZDM5NjY5OWM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTM4LDIzICszOCw2IEBAIGNsYXNzIElkZW50aWZpZXIg
ewogICAgIGVudW0gRW1wdHlJZGVudGlmaWVyRmxhZyB7IEVtcHR5SWRlbnRpZmllciB9OwogICAg
IElkZW50aWZpZXIoRW1wdHlJZGVudGlmaWVyRmxhZykgOiBtX3N0cmluZyhTdHJpbmdJbXBsOjpl
bXB0eSgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CiAKLSAgICAv
LyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQo
ZXhlYywgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7
IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1f
c3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNB
dG9taWMoKSk7IH0KLQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1w
bCopOwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0g
ICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmlu
ZyhhZGQoZXhlYywgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsg
fQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9z
dHJpbmcoYWRkKGV4ZWMsIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBz
KSA6IElkZW50aWZpZXIoZXhlYywgQXRvbWljU3RyaW5nKHMpKSB7IH0KLQotICAgIElkZW50aWZp
ZXIoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0s
IHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAg
ICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJp
bmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmlu
ZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0K
LSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZCh2
bSwgcy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0K
ICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAg
ICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21pY1N0cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9CiAKQEAgLTYzLDEyICs0NiwzMyBA
QCBjbGFzcyBJZGVudGlmaWVyIHsKICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuYXNjaWkoKTsgfQogICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLnV0ZjgoKTsgfQogCi0gICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShjb25zdCBQcml2
YXRlTmFtZSYgbmFtZSkKLSAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgcmVzdWx0OwotICAgICAg
ICByZXN1bHQubV9zdHJpbmcgPSBuYW1lLnVpZCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KKyAgICAvLyBUaGVyZSdzIDIgZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBJZGVudGlmaWVy
IGZyb20gc3RyaW5nLCAoMSkgZnJvbVN0cmluZyBhbmQgKDIpIGZyb21VaWQuCisgICAgLy8gVGhl
eSBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncyBpbiBrZWVwaW5nIG9yIGRpc2NhcmRpbmcgc3ltYm9s
LW5lc3Mgb2Ygc3RyaW5ncy4KKyAgICAvLyAoMSk6IGZyb21TdHJpbmcKKyAgICAvLyBKdXN0IGNv
bnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5nLiBTdHJpbmcgaGVsZCBieSBJZGVudGlmaWVy
IGlzIGFsd2F5cyBhdG9taXplZC4KKyAgICAvLyBTeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiwg
d2hpY2ggcmVwcmVzZW50cyB0aGF0IHRoZSBzdHJpbmcgaXMgaW50ZWRlZCB0byBiZSB1c2VkIGZv
ciBFUzYgU3ltYm9scywgaXMgZGlzY2FyZGVkLgorICAgIC8vIFNvIGEgY29uc3RydWN0ZWQgSWRl
bnRpZmllciBuZXZlciByZXByZXNlbnRzIGEgc3ltYm9sLgorICAgIC8vICgyKTogZnJvbVVpZAor
ICAgIC8vIGBTdHJpbmdJbXBsKiB1aWRgIHJlcHJlc2VudHMgZXRoZXIgU3RyaW5nIG9yIFN5bWJv
bCBwcm9wZXJ0eS4KKyAgICAvLyBmcm9tVWlkIGtlZXBzIHN5bWJvbC1uZXNzIG9mIHByb3ZpZGVk
IFN0cmluZ0ltcGwqIHdoaWxlIGZyb21TdHJpbmcgZGlzY2FyZHMgaXQuCisgICAgLy8gVXNlIGZy
b21VaWQgd2hlbiBjb25zdHJ1Y3RpbmcgSWRlbnRpZmllciBmcm9tIFN0cmluZ0ltcGwqIHdoaWNo
IG1heSByZXByZXNlbnQgc3ltYm9scy4KKworICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Cisg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7CisgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IExDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7
CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5n
SW1wbCopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKKworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21V
aWQoVk0qLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQo
RXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
VWlkKGNvbnN0IFByaXZhdGVOYW1lJik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVM
Q2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVy
biBJZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQogCkBAIC04MSw2ICs4NSw3
IEBAIGNsYXNzIElkZW50aWZpZXIgewogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVy
biBpbXBsKCktPmlzU3ltYm9sKCk7IH0KIAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC0xMDUsNiAr
MTEwLDIwIEBAIGNsYXNzIElkZW50aWZpZXIgewogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmc7CiAKKyAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAg
dGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIElkZW50aWZpZXIoVk0qIHZt
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhh
ZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkp
OyB9CisKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgp
IDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBp
bnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJp
bmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRv
bWljU3RyaW5nSW1wbCopOworICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6
IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwo
KS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVw
KSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQorCisgICAgZW51bSBVbmlxdWVJZGVudGlmaWVyRmxhZyB7IFVuaXF1ZUlkZW50
aWZpZXIgfTsKKyAgICBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXJGbGFnLCBTdHJpbmdJbXBs
KiB1aWQpIDogbV9zdHJpbmcodWlkKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzU3ltYm9s
KCkpOyB9CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sJiBvayk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0NzJk
ODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjQwNjIyMWE2M2FhZDk2NWY0NzMw
ZTQ2ODgzNDczNjdjM2IyNjcwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRlbnRp
Zmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0cmlu
ZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhl
Yyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
LT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcp
LCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1N5
bWJvbCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJU
aGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3Ry
aW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IHN0cmluZy5pbXBsKCktPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0lu
QXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21l
cyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogI2VuZGlmCkBAIC03MCw2ICs3MCw3MCBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVy
biAqQXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcigqdm0sIHIpOwogfQog
CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1w
bCogdWlkKQoreworICAgIGlmICghdWlkIHx8ICF1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJl
dHVybiBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlk
ZW50aWZpZXIsIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21V
aWQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb21V
aWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUpCit7CisgICAgcmV0dXJuIElkZW50aWZp
ZXIoVW5pcXVlSWRlbnRpZmllciwgbmFtZS51aWQoKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycyk7Cit9CisKK3RlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgY2hhcmFj
dGVycyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0q
IHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cih2bSwgcywgbGVuZ3RoKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVy
biBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
cmV0dXJuIElkZW50aWZpZXIodm0sIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5p
bXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljU3RyaW5nKQoreworICAgIHJl
dHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlm
aWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNT
dHJpbmcmIGF0b21pY1N0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBhdG9t
aWNTdHJpbmcpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cihleGVjLCBBdG9taWNTdHJpbmcocykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIElkZW50aWZpZXJJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNDg3NTZiYTNiMzNmNmNkZTg5MDRlMDFmN2Y3YjA5MzRk
ZDNlMGFkNy4uN2Q2MWNhMmQ5MDIxZDgwYzdlMmM5NjcwZGZkYjIxNTY3MGNlMjU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIzMyw4ICsy
MzMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKGF0b21pYykiKTsKICAgICAgICAgICAgICAg
ICBpZiAoaW1wbC0+aXNBdG9taWMoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIg
KGlkZW50aWZpZXIpIik7Ci0gICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bmlxdWUpIik7CisgICAgICAgICAgICAg
ICAgaWYgKGltcGwtPmlzU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
IChzeW1ib2wpIik7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiAodW5yZXNvbHZlZCkiKTsKICAgICAgICAgICAgIG91dC5wcmludCgiOiAiLCBpbXBsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CmluZGV4IGE0MGY5OGY4OTkzYjJiZGFjZTY4YjE1MjhmNDg4YTNiZWY0MzE4ZjcuLjcyYzBjZDlk
MmY1ZWRjZjk2NzMxZTcyZWQ5ZTFiODZmZDkzNzYzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjE4LDcgKzYxOCw3IEBA
IEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdG9QcmltaXRpdmUoZXhl
YywgUHJlZmVyU3RyaW5nKTsKICAgICBpZiAocHJpbWl0aXZlLmlzU3ltYm9sKCkpCi0gICAgICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1l
KCkpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChhc1N5bWJvbChwcmltaXRp
dmUpLT5wcml2YXRlTmFtZSgpKTsKICAgICByZXR1cm4gcHJpbWl0aXZlLnRvU3RyaW5nKGV4ZWMp
LT50b0lkZW50aWZpZXIoZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhNWVhYWZiMWJlN2NjZGZiMmRmYmYxOGNh
YTMyY2RlMjI4MjRhMGY0Li5hOWQ1ZjRmMWUwYzdhMzRmY2U0YTBjYzU3NTA2OGYyNTJkYTNiMDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQ
RURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVkQXJy
YXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5
cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVk
QXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0
eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rpb24q
IGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5
TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpA
QCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVBy
b3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3Jl
YXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3Qs
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0LCBEb250RW51bSk7
CiAKICAgICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmlu
ZGV4IDU4NzRmMjMzMzdlYTU1NDc2OTY1MGY0MGE4MDk0YmE0Zjk2OWVmODUuLmMxMTA3ZTZkNjY2
NDQ1YWM0OTgyY2U1ZGU5ZTkwZjk4ZDkxZWY5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTExMiw3ICsx
MTIsOSBAQCB2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZS5zY29wZU9m
ZnNldCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAg
aWYgKGl0LT5rZXktPmlzU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5r
ZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBTa2lwIHRoZSBKU0Vudmlyb25t
ZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNmZGQ2YmUx
MzkxM2IyYzYyMzc0ZmMwNjkxYWVlZDAxYzUxMzYwYjEuLjUyM2QxMmE5MjAzYjcwMzM4YzMwZDE1
MjhkNTBmZjFiYTYwMjYxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkp
KTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTY3OSw3ICsx
Njc5LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5l
bmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlm
aWVyKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwg
dGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggM2Y1ZTI1ZDE1YjAzZTYwZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBk
YzQ5YzEyMzA3ZGFmNDUyMjE2YWI3ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNl
dFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJ
ZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAg
ICByZXR1cm4gSWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtl
SWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWZkZmMyN2QyMGE4NjVhMzQzYWYyMWQ1Yzc0ODhkYzQzNjViMTcxNS4uYjhhNWFkYWU5ODdlNDAz
N2Q2NTVlMGEzZjZhZDAyOGY4NDFlMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzE3LDcgKzMxNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5j
UmFjZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0g
anNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBM
ZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFi
bGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJh
dG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAt
NDgwLDcgKzQ4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29u
c3RydWN0b3JGdW5jQWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCog
ZGVmZXJyZWQgPSBqc0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAog
ICAgIC8vIDQuIExldCAnaXRlcmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVy
YXRvcihpdGVyYWJsZSkuCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUu
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpT
VmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJl
ZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyODFh
ZTQ2MjAzOTIwNGI0NTI4YjRlYTUxMWMwNzVjNmU4NWVmYmQ5Li5jMWFmMGNhZTFjNjIzYjM2MmNm
NGRiMzYyYjVjOTU0OTVlOGM3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhWTSogdm0sIFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBK
U1N0cmluZzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1
cm4gSWRlbnRpZmllcihleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBB
TFdBWVNfSU5MSU5FIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVj
ZTliYjg3M2U5NTBmMGZmLi4yYjAxODYyZDZhNDlkMWEwZTA0NjYwNTQzMjQzNDQ5OWMwMmU5Yzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9
IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtl
eS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAppbmRleCBmNmY1ZmUxNzNjNzA0ZWRlMGY2NTNiNjgzOGUwOTgwNmNhNDQyZWI3Li5kNDU0
NGE0ZjZmMjZjYWE4YzM4NDVkYWYwZmNhZmU3MzIzMjhiZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNTcsMTcgKzU3LDE3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQog
ICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5PiBwYXRoOwogICAgICAgICAv
LyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxleGVyCi0gICAgICAgIElkZW50aWZp
ZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVy
LmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAg
ICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0gbV9leGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAgICAgICAgICAgIGlmIChtX2xleGVy
Lm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURlY2xhcmU7Ci0g
ICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZt
KCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5t
X3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0g
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChl
bnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09O
UFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJ
ZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAg
ICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZXhl
Yy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSkpCkBAIC05
NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENo
YXJUeXBlJiBjKQogICAgICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5
VHlwZURvdDsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rSWRlbnRp
ZmllcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5tX3BhdGhF
bnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewpAQCAtMTM1LDE3ICsxMzUsMTcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMp
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1D
YWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0o
KSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5n
dGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFj
dGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElk
ZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9z
aG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
bV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9y
ZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwot
ICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXTsKIH0KIApAQCAtMTU1LDE3ICsxNTUsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
SlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwog
ICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAg
ICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsK
KyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAo
IW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hv
cnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwg
Y2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0u
aXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3Jl
Y2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICBy
ZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkwNDEwZmZj
NGNjMzJkZDAzOTQ4MGZhLi5hOGEzMzY3ZjUzZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBlOWNmYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjkzLDcgKzI5Myw3
IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IEhhc2hU
YWJsZVZhbHVlICgmdmFsdWVzKVtudW1iZXJPCiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAg
ICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUu
bV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIGlm
ICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKSB7CiAgICAgICAgICAgICB0aGlzT2JqLnB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1dGVzKCkp
OwogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWI1NTgzOTQ5MGI4ZWZjMDAyMTZlYzJkOWVm
MWQyZGZhOTFiMzZiNy4uZmFkNTJjMDU2MDQ4ZTE4YjdlZWM0OThmZjE0OTUzZmQ5MGZjZmVkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMpKTsKIAotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJh
YmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7
CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAKaW5kZXggODA2N2NiMjBmMGMzN2Q2NmE3NzhiZTlkMWVmNmFmZGIzYzZkZTgy
OC4uY2E3ZGMwOGYyOGUwZjY2ZmJkNmViYmFmNWQ4YjY4YWI0ZThmZDYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGlu
aGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7
CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJp
dmF0ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIE1hcEl0ZXJhdG9yUHJv
dG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggODhkZjU4M2EwNjZlNWU4MTgyZTAx
MTIyOGE2NmUxZmZkODE1NGE4OC4uZmU1MjVlY2ZjNDg0MDk1YjNiNjZiMTVhZTZhNWE2NzNjOTZh
YWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBtYXBQcm90b0Z1bmNLZXlzLCBEb250RW51bSwg
MCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1h
cFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0s
IDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQ
cml2YXRlTmFtZSwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1hcFByb3Rv
RnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3Ig
PSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBtYXBQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMjhmZjVjOGQ5Mjc5
ZWU1OWU1YjExZTc1MWI5OWI1NGIyZjZmMDM5NC4uNTE1NmVkMmVmZDVmMDA0MTJmYzI3MDQ2NzBh
ZDhkYWIzZmIyNzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAKQEAgLTg3LDQ5ICs4Nyw0OSBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCi0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiRSIpLCBqc051bWJl
cihleHAoMS4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMTjIiKSwganNOdW1i
ZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4xMCIpLCBqc051
bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMkUiKSwg
anNOdW1iZXIoMS4wIC8gbG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAi
TE9HMTBFIiksIGpzTnVtYmVyKDAuNDM0Mjk0NDgxOTAzMjUxOCksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJTUVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcigmdm0sICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWJz
IiksIDEsIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3Ms
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiYXNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVNpbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1
bmNBVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImFjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhc2luaCIpLCAxLCBt
YXRoUHJvdG9GdW5jQVNpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0
YW4yIiksIDIsIG1hdGhQcm90b0Z1bmNBVGFuMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmND
YnJ0LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgImNlaWwiKSwgMSwgbWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjb3MiKSwgMSwgbWF0aFBy
b3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIoJnZtLCAiY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zaCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJleHAiKSwgMSwg
bWF0aFByb3RvRnVuY0V4cCwgRXhwSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiZXhwbTEiKSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImZs
b29yIiksIDEsIG1hdGhQcm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJmcm91bmQiKSwgMSwgbWF0aFByb3Rv
RnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXIoJnZtLCAiaHlwb3QiKSwgMiwgbWF0aFByb3RvRnVuY0h5cG90LCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZyIp
LCAxLCBtYXRoUHJvdG9GdW5jTG9nLCBMb2dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAibG9nMXAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzFwLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzIiKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZzIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAibWF4IiksIDIsIG1hdGhQcm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1pbiIpLCAyLCBtYXRo
UHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicmFuZG9tIiks
IDAsIG1hdGhQcm90b0Z1bmNSYW5kb20sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5k
LCBSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgInNpZ24iKSwgMSwgbWF0aFByb3RvRnVuY1NpZ24sIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic2luIiksIDEsIG1hdGhQcm90
b0Z1bmNTaW4sIFNpbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgInNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY1NpbmgsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic3FydCIpLCAxLCBt
YXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbmgi
KSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5j
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgImltdWwiKSwgMSwgbWF0aFByb3RvRnVuY0lNdWwsIElNdWxJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjAp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMTAiKSwganNO
dW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkw
MzI1MTgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUEkiKSwg
anNOdW1iZXIocGlEb3VibGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJh
Y29zIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW4iKSwgMSwgbWF0
aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRh
biwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiYXNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW5o
IiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdGFuMiIpLCAyLCBtYXRo
UHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2Jy
dCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiY29zIiksIDEsIG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvc2giKSwg
MSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1
bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImh5
cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2ciKSwgMSwgbWF0
aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVuY0xv
ZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJsb2cyIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1heCIp
LCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJtaW4iKSwgMiwgbWF0aFByb3Rv
RnVuY01pbiwgTWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
InJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaWduIiks
IDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9G
dW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0
YW4iKSwgMSwgbWF0aFByb3RvRnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW5oIiksIDEsIG1hdGhQ
cm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVu
YywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDNjZmU5NDExNmZhMDYxYmNiNWEyMTI3MTY1YTRkMDE0ODQxNzJmNWQuLjk1YThkY2E5
MDhmYTViN2ZlYTE1OTEyOTUxMDkxNzI0M2FiN2MwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDIxICs1OSwy
MSBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJl
clByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9y
IGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIkVQU0lMT04iKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjplcHNpbG9uKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1ZBTFVF
IiksIGpzRG91YmxlTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJs
ZU51bWJlcig5MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiTUlOX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5MS4w
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpz
RG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3Vi
bGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk5hTiIpLCBqc05hTigpLCBEb250RGVsZXRlIHwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVy
KCZ2bSwgImlzRmluaXRlIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwg
SWRlbnRpZmllcigmdm0sICJpc0ludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJ
bnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc05hTiIpLCAxLCBudW1iZXJDb25zdHJ1Y3Rv
ckZ1bmNJc05hTiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNTYWZlSW50ZWdlciIpLCAxLCBudW1i
ZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJz
ZUZsb2F0IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUZsb2F0LCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJw
YXJzZUludCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2
MjMxNTdFKzMwOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJN
SU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIo
OTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3NDA5
OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJORUdBVElW
RV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IlBPU0lUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJOYU4iKSwganNOYU4oKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVt
YmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNOYU4iKSwg
MSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImlzU2FmZUludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50
ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBn
bG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFy
c2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CiB9CiAKIC8vIEVDTUEgMTUuNy4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOGY1MDVmNmEwMDZhOWY4
YjUzNzA4ZTFkNWYxNWZiZjlmY2UyMTQwNy4uOGY3MWVmN2VhMDgxYzViMWUzZmM1MmY3YmIwOTYw
Yjk1MTZkOWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcApAQCAtODYsNyArODYsNyBAQAogCiB2b2lkIE9iamVjdENvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwg
Ik9iamVjdCIpLnN0cmluZygpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgb2JqZWN0
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjIuMy4x
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYw
M2Y3YzgyZDE3ODczOWFkNTYwOGJmNjQuLmNjY2NjMzlmYTkzOTEzYjNmYTYxYzc1MGU2OGRjNzI5
MTZlNWI3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZh
dGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUu
aApAQCAtMzMsMTkgKzMzLDE5IEBACiBjbGFzcyBQcml2YXRlTmFtZSB7CiBwdWJsaWM6CiAgICAg
UHJpdmF0ZU5hbWUoKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVF
bXB0eSgpKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSgp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgfQotICAg
IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0gICAgICAgIDogbV9pbXBs
KFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQg
UHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAg
ewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1f
aW1wbC0+aXNTeW1ib2woKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3Jl
YXRlU3ltYm9sKGRlc2NyaXB0aW9uLmltcGwoKSkpCisgICAgewogICAgIH0KIAogICAgIEF0b21p
Y1N0cmluZ0ltcGwqIHVpZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmlu
Z0ltcGwqPihtX2ltcGwuZ2V0KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCAwMzcwYTM1NDhkYTk4NmQwNDEx
MzEzZTA0ZGFjMmQxNWM2YmEwOTA0Li43NTRkYTJkOGU4MTU1NTRiNzdiNjhmZTNlNTJmYzRjODIy
ZDMwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZW5kKCkgY29uc3QKIGlubGluZSBQcm9w
ZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZpbmQoY29uc3QgS2V5VHlw
ZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkg
fHwga2V5LT5pc1VuaXF1ZSgpKTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+
aXNTeW1ib2woKSk7CiAgICAgdW5zaWduZWQgaGFzaCA9IGtleS0+ZXhpc3RpbmdIYXNoKCk7CiAg
ICAgdW5zaWduZWQgc3RlcCA9IDA7CiAKQEAgLTMwNSw3ICszMDUsNyBAQCBpbmxpbmUgUHJvcGVy
dHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpWYWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6Omdl
dChjb25zdCBLZXlUeXBlJiBrZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtl
eS0+aXNBdG9taWMoKSB8fCBrZXktPmlzVW5pcXVlKCkpOworICAgIEFTU0VSVChrZXktPmlzQXRv
bWljKCkgfHwga2V5LT5pc1N5bWJvbCgpKTsKIAogICAgIGlmICghbV9rZXlDb3VudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCmluZGV4IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYu
LjY1NWU3NGQ2MmFjMzYxMjBhMTk2MWFiZDcwMTFmZjZiZWM1MjE1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNs
YXNzIFByb3BlcnR5TmFtZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJU
KCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+aXNTeW1ib2woKSk7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
QEAgLTkzLDggKzkzLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICAgICAgOiBtX2ltcGwo
c3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9pbXBsKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlx
dWUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NF
UlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKICAgICB9CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1
aWQoKSBjb25zdApAQCAtMTA0LDE0ICsxMDMsMTQgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKIAog
ICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+aXNVbmlxdWUoKSA/IG51bGxwdHIgOiBtX2ltcGw7CisgICAgICAgIHJl
dHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3ltYm9sKCkpID8gbnVsbHB0ciA6IG1faW1wbDsK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTm90QW5JbmRleCA9IFVJTlRfTUFY
OwogCiAgICAgdWludDMyX3QgYXNJbmRleCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pbXBs
ID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKKyAgICAgICAg
cmV0dXJuIChtX2ltcGwgJiYgIW1faW1wbC0+aXNTeW1ib2woKSkgPyB0b1VJbnQzMkZyb21TdHJp
bmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4OwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAppbmRleCA0NDc1Yjg5OGE5NzQ5NzdjZTY4ZTQ3
NTlkY2FkMDZiZDZhMDQ4MzczLi5lNGU1ZTI3YTA0ZmEwNGY2ODVlNmM3YjNjZWVmOTdiZDVhMTFi
NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6
OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaWRlbnRpZmllciB8
fCBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9t
aWMoKSk7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8IChpZGVudGlmaWVyID09IFN0cmluZ0lt
cGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSB8fCBpZGVudGlmaWVyLT5pc1N5
bWJvbCgpKSk7CiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3Qg
aW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRl
eCgpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoaW5kZXgsIGluZGV4ID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBt
X3ByZXZpb3VzbHlFbnVtZXJhdGVkTGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0
MDExZTQxYjIzMzhmOWQwNTA0YjJkNDliZmYzOWEuLjg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1
OTQ2OWM5ODExYTdjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheSB7CiAgICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgbV9zZXQtPmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7
CisgICAgICAgIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21VaWQobV92bSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KVtpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuY3BwCmluZGV4IDQ1ZTgwZjVjZGMxNWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5
OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5NGE1MjU5Y2Y3YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8gRUNN
QSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDQyM2E2YmQ1ZWJhZGY5YjkyYjVlNWJi
ZmRhNDcxNmI4MjkwZjI1ODEuLmZiOTdiNmQ5ZmEwZDBlZTYzYTFkNTJhOTg4N2VjNzc2OThmNzUz
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBp
dGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5h
bWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IDUyNjFiZjNjYWNjMWQ0ZTBlNDU3NTUxYTAyMmRlNjdjOTE5
NGRmZjkuLmYxYjhiNzk0ODExODkwOTNhMDFhNjJjNTg2MTRkZDlkZWVkOGYzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlw
ZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBTZXRJdGVyYXRv
clByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDQwMDY2YWU3OGQ0OWFjZDU3
YzY0M2YwZGRiYzNmYzc0NmVhMDQxMWMuLmIzMTU4NjFhNDY1NWUyYzFmYjdlMjY0YTU2YTA2ZDI3
OWQ1MGU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVu
dW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LCBzZXRQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRF
bnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBzZXRQcm90
b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0g
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJv
cGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHAKaW5kZXggNTNlMGNjYjMxNDRmMzk1OTZlNjQ1NWVhN2IzMmY3NTcwYmJmMWFkYi4uNDY4
YjcyZDBmY2E3NGY5MjQ3NTIxMWJjNDFkOWFlZjBjNTlmNzZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMp
OwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yLCBEb250RW51bSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvciwgRG9udEVudW0sIDApOwogfQogCiBi
b29sIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAppbmRleCBhZWE1OTI2OTUyMmI4NTk4ODk0YzQ3ZWU1ZDQ5YTRlYmM2
MmQyMTMzLi5jYTYyYzQxYjBmMzU4OTY5MTZkMWM2MjVkN2MzNDBmYTRkZjI0OTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04oInN0YXJ0c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZW5kc1dpdGgiLCBzdHJpbmdQcm90b0Z1
bmNFbmRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImluY2x1
ZGVzIiwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmlu
Z1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKIAogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmNoYXJDb2RlQXRQcml2YXRlTmFtZSwgc3RyaW5nUHJvdG9GdW5jQ2hh
ckNvZGVBdCwgRG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRyaW5zaWMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBkY2U1MWI1Y2U4ZGQxYTE0
MzM4ZTIyYTc2NTEwODgzZTJiYzIwY2M3Li4zYjhhZTFjZTczNWJiMjVlNzdiZDMxMTg4MTMyMGNk
Y2M3MmEyNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTkzOSw3ICs5MzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zy
b21TdHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9y
IChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxl
UHJvcGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAg
IGlmICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250
RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAg
ICAgaWYgKCFpdGVyLT5rZXktPmlzU3ltYm9sKCkgJiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERv
bnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGtub3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkS25vd25VbmlxdWUoaXRlci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5
OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi5hYTk0ZmEzMWYxYTA5NWJl
Mzg4NGM0MTc4MDI0NGI3MTg4YjMwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAK
ICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzYWY4MTdkYTMxYWE2OGZmZGZjZTQ5
NGM1ZjU1ZWQyNDZkMmY1MmEyLi5lNzYzOTQ3NWMzMmFlZTFkZDFlOTUzOGRjYjhhMmY1ZWRkYTFi
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NjIsMTAgKzY2Miwx
MCBAQCBKU1ZhbHVlIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
ZXJyb3IpCiAgICAgICAgIHVuc2lnbmVkIGxpbmU7CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsK
ICAgICAgICAgc3RhY2tGcmFtZS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwot
ICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAibGlu
ZSIpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgImNvbHVtbiIpLCBqc051
bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRpb24t
PnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAibGluZSIpLCBq
c051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9u
LT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgImNvbHVtbiIp
LCBqc051bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBpZiAo
IXN0YWNrRnJhbWUuc291cmNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV4Y2VwdGlvbi0+
cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmco
dGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAg
ICAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVS
TCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24tPmlz
RXJyb3JJbnN0YW5jZSgpICYmIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24p
LT5oYXNTb3VyY2VBcHBlbmRlcigpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0
aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDA5YWZmMDM1MTAw
MDY4OWFmOGU3YWI4NDNiNzIxYmE0ZTgxNTAyYmUuLjIzYzQzMzMwZDYyZWYwOTcyN2ZmNmI5MTI0
NTZhNTA0MDRkYTc4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1Zh
bHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlv
biA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1i
b2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
Y3BwCmluZGV4IDE5NjM5Y2FiMzE0Zjk2OGExNWQ3MmU2Nzk0NWJmMGQ5NmE4ZmJhOTEuLmZhN2U0
MzQ3YTEyM2JmNmIxNzViMDZhMzhjNWU5Y2EyMmI4ZWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAKQEAgLTQwMyw2ICs0MDMsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21M
aXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9s
KCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJv
bCgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRv
bWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBh
bHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsK
QEAgLTQyMSw2ICs0MjQsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5z
bGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmlu
Z0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJl
dHVybiBhZGQoc3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wo
KSk7CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21p
Y1N0cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxy
ZWFkeSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBA
IC01MDMsNiArNTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNs
b3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFz
dHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0
aGUgZmFzdCBjYXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CisKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJp
bmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFi
bGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdU
YWJsZSA9IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1Rh
YmxlLmZpbmQoJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA4NDE2
MDEyZmFiZjk4NTg0ZjMyZmVhZGY0Nzk2OWJjZTZkNDg3NzAxLi4zYTJmY2Y1ZjM1ODJjYzA3NDBl
MDQ1YTBiMzkyZmEwNmNlZmI5OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAg
LTE5OSwxMSArMTk5LDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAg
IGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNV
bmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFk
ZFNsb3dDYXNlKCpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0K
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9t
TGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNp
ZiBVU0UoQ0YpCkBAIC0yMTMsMTEgKzIxMSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3Ry
aW5nVGFibGVQcm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5n
KQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3Ro
KCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcp
LCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAg
ICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3Ry
aW5nVGFibGUoKSwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJv
dmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtMjI5LDcgKzIyNSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAg
IEF0b21pY1N0cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAg
IAorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJ
bXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRv
bWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3Ry
aW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcu
aXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUs
IHN0cmluZyk7CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1Rh
YmxlJiwgU3RyaW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBl
MTVkZTExMzg5NTQ2ZjQ5MDllZWQ4MDdlZDIxMmIxNjIzZmIzMmVlLi45ZmFiZjJiYWIyZWE2YzFi
ZGY3MjgwYmM2NjY1N2VkMDZmOTk5ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKIAogICAg
IFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKCp0aGlzKTsKIAotICAgIGlmIChpc0F0b21pYygp
ICYmIGxlbmd0aCgpICYmICFpc1VuaXF1ZSgpKQorICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0
aCgpICYmICFpc1N5bWJvbCgpKQogICAgICAgICBBdG9taWNTdHJpbmc6OnJlbW92ZSh0aGlzKTsK
IAogICAgIEJ1ZmZlck93bmVyc2hpcCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKQEAg
LTI4NiwxMyArMjg2LDE0IEBAIHZvaWQgU3RyaW5nSW1wbDo6ZGVzdHJveShTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsKQogICAgIHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1SZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0
aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHko
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0lt
cGw+IHN0cmluZyA9IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsK
LSAgICBzdHJpbmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmlu
Zy0+bV9oYXNoQW5kRmxhZ3MpOworICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKKyAg
ICBzdHJpbmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+
bV9oYXNoQW5kRmxhZ3MpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKaW5kZXggMjJiZmNiNmRiYmRjOTViYzZjNDU1YThlNjBjYjcwNjMyNTMwZGFlOS4u
NTA0Y2I4MmEwM2M1YzM1OTNiNjc0Y2JkMjg0MzQyNDc2MjQ0OTIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAg
ICAgIEJ1ZmZlclN1YnN0cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMg
aW4gdGhlIGhhc2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdD
b3VudCA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwg
c19mbGFnQ291bnQpIC0gMTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJp
bmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zv
cl9TdHJpbmdJbXBsX2ZsYWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3Ry
aW5nS2luZENvdW50ID0gNDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
U3RyaW5nS2luZElzQXRvbWljID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCk7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wgPSAxdSA8
PCAoc19mbGFnU3RyaW5nS2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfaGFzaE1hc2tTdHJpbmdLaW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNf
aGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgMzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAyOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOwor
CisgICAgZW51bSBTdHJpbmdLaW5kIHsKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsIC8vIG5v
bi1zeW1ib2wsIG5vbi1hdG9taWMKKyAgICAgICAgU3RyaW5nQXRvbWljID0gc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc0F0b21pYywgLy8gbm9uLXN5bWJvbCwgYXRvbWljCisgICAgICAgIFN0cmluZ1N5
bWJvbCA9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wsIC8vIHN5bWJvbCwgbm9uLWF0b21p
YworICAgIH07CisKICAgICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hp
Y2ggaGF2ZSBhbiBzcGVjaWFsIHJlZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAg
IC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ry
b3llZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3
aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVh
ZHNhZmUgbWFubmVyLgpAQCAtMTUwLDcgKzE2OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAg
ICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAg
LCBtX2xlbmd0aCgwKQogICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhC
aXRCdWZmZXIgfCBzX2hhc2hGbGFnSXNBdG9taWMgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZl
ck93bmVkKQogICAgIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0
ZWQgc28gdGhhdCBBdG9taWNTdHJpbmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAg
ICAgIC8vIHdpdGggaW1wdW5pdHkuIFRoZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNl
IGl0IGlzIG5ldmVyIGVudGVyZWQgaW50bwpAQCAtMTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hh
cj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1
ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcg
QEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5j
cmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0
YWlsUG9pbnRlcjxVQ2hhcj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRl
cm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRl
cm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVCht
X2xlbmd0aCk7CkBAIC0xOTMsNyArMjEyLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAg
IDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAs
IG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAg
ICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAg
QVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIwNiw3ICsyMjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
U3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9k
YXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVu
dCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0
ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNo
YXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVk
KQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTI0NCw3ICsyNjMsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0
cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVCht
X2RhdGE4KTsKQEAgLTI2MSw3ICsyODAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5k
RmxhZ3MoQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05v
cm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkp
OwogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwpAQCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xl
bmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENy
ZWF0ZUVtcHR5VW5pcXVlIH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykK
KyAgICBlbnVtIENyZWF0ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKKyAg
ICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbEVtcHR5VGFnKQogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBX
ZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAg
ICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAg
LCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAg
ICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNo
QW5kRmxhZ3NGb3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM3OCwxMiArMzk3LDEyIEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4o
cmVzdWx0SW1wbCwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQorICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHkpKTsK
ICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBs
LiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRy
LAogICAgIC8vIGFuZCB0aGUgYnVmZmVyIG93bmVyc2hpcCBtdXN0IGJlIEJ1ZmZlckludGVybmFs
LiBKdXN0IGxpa2UgdGhlIGlucHV0IHBvaW50ZXIgb2YgcmVhbGxvYygpLApAQCAtMzkzLDggKzQx
Miw5IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdz
KTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxh
ZzhCaXRCdWZmZXI7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1
cm4gc19oYXNoRmxhZ0lzQXRvbWljOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1
ZSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBm
bGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNTeW1ib2w7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7
IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRh
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3NCwyMSBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdDsKIAotICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hB
bmRGbGFncyAmIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoTWFza1N0cmluZ0tpbmQpOyB9CisgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQor
ICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFz
aEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KIAotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7
IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21pYzsgfQogICAgIHZvaWQg
c2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNTdGF0
aWMoKSk7Ci0gICAgICAgIEFTU0VSVCghaXNVbmlxdWUoKSk7Ci0gICAgICAgIGlmIChpc0F0b21p
YykKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdJc0F0b21pYzsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdJc0F0
b21pYzsKKyAgICAgICAgQVNTRVJUKCFpc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKGlzQXRvbWlj
KSB7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElz
QXRvbWljOworICAgICAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWMp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFz
aEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgp
ID09IFN0cmluZ05vcm1hbCk7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMK
QEAgLTcxNyw2ICs3NDEsMTYgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsK
IAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2woKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAg
QVNTRVJUKGlzU3ltYm9sKCkpOworICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0g
QnVmZmVyU3Vic3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAg
ICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCdWZmZXIoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHJl
dHVybiAqc3Vic3RyaW5nQnVmZmVyKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVx
dWlyZXNDb3B5KCkgY29uc3QKICAgICB7CkBAIC03ODMsMjMgKzgxNywxMiBAQCBjbGFzcyBTdHJp
bmdJbXBsIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2ln
bmVkLCBDaGFyVHlwZSomKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25l
ZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xv
d0Nhc2UoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhh
c2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5zaWduZWQgZmxhZ3Mp
OwogCiAgICAgLy8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBz
dGF0aWMgKGltbW9ydGFsKSBzdHJpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVm
Q291bnRGbGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfcmVmQ291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRl
cmVmIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8g
VGhlIGJvdHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
ZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsKLSAgICBDT01QSUxFX0FTU0VSVChz
X2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2Vy
dmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKLQotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNVbmlxdWUgPSAxdSA8PCA2OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDU7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc0F0b21pYyA9IDF1IDw8IDQ7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMzsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9IDF1IHwgKDF1IDw8
IDEpOwotCiAjaWYgU1RSSU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmlu
Z1N0YXRzIG1fc3RyaW5nU3RhdHM7CiAjZW5kaWYKQEAgLTgxNCw3ICs4MzcsNyBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKIAogICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29uc3RydWN0RnJv
bUxpdGVyYWwuCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxSZWZDb3Vu
dCA9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
X2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWw7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzX2hhc2hTaGlmdCA9IHNfZmxhZ0NvdW50OwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCmluZGV4IDY1YmI2NzIxZDc0M2ZhMTA0MWMy
OTJiNjBmNGQwMzI5MjgzZDhlNTEuLjM5NDVjNzNlMDA4Y2Q0MzdkYTU0OWExNWE1YWFiYjQ4NjUz
MzZkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNDcsMTggKzQ3
LDE4IEBAIFN0cmluZ0ltcGwqIFN0cmluZ0ltcGw6OmVtcHR5KCkKICAgICByZXR1cm4gJmVtcHR5
U3RyaW5nLmdldCgpOwogfQogCi0vLyBTZXQgdGhlIGhhc2ggZWFybHksIHNvIHRoYXQgYWxsIHVu
aXF1ZSBTdHJpbmdJbXBscyBoYXZlIGEgaGFzaCwKKy8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28g
dGhhdCBhbGwgc3ltYm9sIFN0cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAogLy8gYW5kIGRvbid0IHVz
ZSB0aGUgbm9ybWFsIGhhc2hpbmcgYWxnb3JpdGhtIC0gdGhlIHVuaXF1ZSBuYXR1cmUgb2YgdGhl
c2UKIC8vIGtleXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2ggYW55IG90
aGVyIHN0cmluZyAoaW4gZmFjdCwKIC8vIHRoYXQncyBleGFjdGx5IHRoZSBvcG9zaXRlIG9mIHdo
YXQgd2Ugd2FudCEpLCBhbmQgdGhlIG5vcm1hbCBoYXNoIHdvdWxkCiAvLyBsZWFkIHRvIGxvdHMg
b2YgY29uZmxpY3RzLgotdW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVl
KHVuc2lnbmVkIGZsYWdzKQordW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3lt
Ym9sKHVuc2lnbmVkIGZsYWdzKQogewotICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRIYXNoQW5k
RmxhZ3NGb3JVbmlxdWUgPSAwOwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSArPSAx
IDw8IHNfZmxhZ0NvdW50OwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8PSAxIDw8
IDMxOwotICAgIHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19mbGFnTWFzaykg
fCBzX2hhc2hGbGFnSXNBdG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7Ci0gICAgcmV0dXJuIHNf
bmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8IGZsYWdzRm9yVW5pcXVlOworICAgIHN0YXRpYyB1
bnNpZ25lZCBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgPSAwOworICAgIHNfbmV4dEhhc2hB
bmRGbGFnc0ZvclN5bWJvbCArPSAxIDw8IHNfZmxhZ0NvdW50OworICAgIHNfbmV4dEhhc2hBbmRG
bGFnc0ZvclN5bWJvbCB8PSAxIDw8IDMxOworICAgIHVuc2lnbmVkIGZsYWdzRm9yU3ltYm9sID0g
KChmbGFncyAmIHNfZmxhZ01hc2spICYgKH5zX2hhc2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5n
U3ltYm9sOworICAgIHJldHVybiBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgfCBmbGFnc0Zv
clN5bWJvbDsKIH0KIAogV1RGX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcs
IG51bGxBdG9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDdlYTdjYmFhYTdlN2ZlNzdi
ZjAyOTI3NmZkY2E3YTI2MzU5YjEwNGYuLmFjNzRmZjYxMjJmZDk2OTI0ZGYzNDMzYzkzM2E3Zjdj
NjNjOWU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBi
b29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdElu
amVjdGVkKCkKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCi0gICAgSlND
OjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBK
U0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpT
Qzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVu
dCIpKTsKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCiAgICAgLy8gTG9va3VwIHRoZSAi
Y3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiIGZ1bmN0aW9uLgotICAgIEpTQzo6SlNWYWx1ZSByZXBs
YWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
KGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVw
bGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYg
KHJlcGxhY2VtZW50RnVuY3Rpb24uaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEpTQzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2JqZWN0ID0gcmVwbGFjZW1l
bnRGdW5jdGlvbi50b09iamVjdChleGVjKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9v
dCkKICAgICB9CiAKICAgICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRo
ZSBwbHVnLWluLgotICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVj
LCBKU0M6OklkZW50aWZpZXIoZXhlYywgInZpZGVvIikpOworICAgIEpTQzo6SlNWYWx1ZSB2YWx1
ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgInZpZGVvIikpOwogICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gSlNIVE1MVmlkZW9F
bGVtZW50Ojp0b1dyYXBwZWQodmFsdWUpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJv
b3QpCiAgICAgfQogCiAgICAgLy8gR2V0IHRoZSBzY3JpcHRpbmcgaW50ZXJmYWNlLgotICAgIHZh
bHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAic2NyaXB0
T2JqZWN0IikpOworICAgIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2NyaXB0T2JqZWN0IikpOwogICAgIGlmICghZXhlYy0+
aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1f
c2NyaXB0T2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmI1MDE4YzE3
OTkyZDYwZDJlZjI0YmZlZDY4MTBiMjI0NzE3MjcxNi4uNmY4MDY2MTRlYTRiMGNiNDE2YTUzZjI3
MjkyZDljZWQ5NWNmNjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgZ2V0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVs
ZW1lbnQsIEoKICAgICB9CiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0
aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRh
dGEoKSk7CiAgICAgaWYgKCFhc09iamVjdChvYmplY3QpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IGFzT2JqZWN0KG9i
amVjdCktPmdldChleGVjLCBpZGVudGlmaWVyKTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJv
b2wgc2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtl
eVBhdGhFbGVtZW50LAogewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVj
LT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxl
bWVudC51dGY4KCkuZGF0YSgpKTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgaWRlbnRpZmllciwganNWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcAppbmRleCAwYzUwNjRkNmIxN2RjZjQ4Njg4YWI5YmE0YmE3MGJiNGZkNDEx
OTc1Li5iOTM5MDczZDYxYjY3MWY0NDAzYjMwN2JjNTM0OWUwNmQ3N2MzZGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQog
CiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9w
ZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyAr
K2kpCi0gICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcihleGVj
LCBqc1Byb3BlcnR5TmFtZXNbaV0uaW1wbCgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5SWRlbnRp
ZmllcnNbaV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tp
XSk7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyAr
K2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5k
ZXggZTFkNzI1ZjhjNmQxMTEzNDEyMTVlMTBiZGQ3YWI2NzI3ZTc0ZWFkNC4uNDUxZGFjNjIzMTNi
MjMzYWRmNjVkOGY3MGJhYjMxYzM4MzY1OTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTQ2Fs
bGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1l
bnRCdWZmZXImCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBjYWxsYmFjaygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5j
dGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVu
dCIpKTsKKyAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3Rv
bS5jcHAKaW5kZXggZGE1MmNlYzJjZmRjYzc2YTFjZDQwZDJlNDVhZTA5NTY0NjVlMWY3Ni4uOGQy
ZDAyMDY0ZTU3ZWFhNDc4MTgwYmI4ZTQ1YmQzMDA0ZThmMzE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cApAQCAtODksOCArODksOCBAQCBzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29ucwogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgSlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKLSAgICAgICAg
bGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInVz
ZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ld
LnVzZUNhcHR1cmUpKTsKKyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsK
KyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInVzZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5l
dmVudExpc3RlbmVyVmVjdG9yW2ldLnVzZUNhcHR1cmUpKTsKICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCBvdXRwdXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpT
Q29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIGlmICghbGlzdGVuZXJzLT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRU
eXBlOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsIGV2ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV2
ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9BbGdvcml0aG1CdWlsZGVyLmNwcAppbmRleCAwODEwYmM4MWU5YTA1ZWVhZGVlZjRmMGU2Njk5
NGQyMWI5MzUzYWE3Li5hOWYzNzI2NTcwZTI4OTRhYmE2MWU4NWNjMDlmMDljMTQ4YjE4Zjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtQnVpbGRlci5jcHAKQEAgLTU2LDIxICs1NiwyMSBAQAogdm9pZCBKU0NyeXB0b0FsZ29yaXRo
bUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIHVuc2lnbmVkIHZhbHVlKQogewogICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBrZXkpOwogICAgIG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc051
bWJlcih2YWx1ZSkpOwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNv
bnN0IGNoYXIqIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4
ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAg
ICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVj
LCB2YWx1ZSkpOwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiB7CiAgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtl
eSk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERp
cmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU0NyeXB0b0Fs
Z29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYnVmZmUKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhciog
a2V5LCBjb25zdCBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxk
ZXIpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRp
Zmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgY29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVy
JiBqc0J1aWxkZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIm
PihuZXN0ZWRCdWlsZGVyKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwganNCdWlsZGVyLnJlc3VsdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDY0
ZDU2ZDk3MGE3NGU1ZGMxYWVhYTM4NTk1YjU2YmQxZTYzNDZmZTIuLjRhZTZhZTUwNjI0NmUzOWZi
ZmNjNTJkMzcwYzA2NmY4OWNlMDNjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODksNyAr
ODksNyBAQCBib29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRl
bnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogCiBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUp
CiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIG5hbWUpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKIAogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudGlmaWVyLCBzbG90KSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMg
Ym9vbCBnZXRIYXNoQWxnb3JpdGhtKEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rpb25hcnkuZXhlY1N0
YXRlKCk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGRpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmpl
Y3QoKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCAiaGFzaCIpOworICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhc2gi
KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogCiAgICAgSlNWYWx1ZSBoYXNoID0g
Z2V0UHJvcGVydHkoZXhlYywgb2JqZWN0LCAiaGFzaCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5k
ZXggZmJiMzk3ZTRiNWEyMzBmNDQ0MThkNjNkYWY3NzNkNTJhOTlkN2E0Ni4uODM1MDU3YjgzN2Qx
YjZjNzFlMWUwYWY3YjYzODA4MzAyNmU4MjhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC01
Miw3ICs1Miw3IEBACiAKIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQp
CiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdl
dEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBj
aGFyKiBrZXksCiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0g
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnRpZmllciwgc2xvdCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmlu
Z0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtl
eSwKIAogc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZp
ZXIsIHNsb3QpKQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjprZXlTaXplSXNWYWxpZChzaXplX3Qgc2l6ZUluQml0cykgY29uc3QKIHN0YXRpYyB2
b2lkIGFkZFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFy
KiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAt
NTQyLDEzICs1NDIsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5RGF0YVIKICAgICAgICAgYWRkVG9K
U09OKGV4ZWMsIGpzUHJpbWVJbmZvLCAidCIsIGJhc2U2NFVSTEVuY29kZShkYXRhLm90aGVyUHJp
bWVJbmZvcygpW2ldLmZhY3RvckNSVENvZWZmaWNpZW50KSk7CiAgICAgICAgIG90aC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaSwganNQcmltZUluZm8pOwogICAgIH0KLSAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJvdGgiKSwgb3RoKTsKKyAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJv
dGgiKSwgb3RoKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBrZXkpOwogICAgIGpzb24tPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCb29sZWFuKHZh
bHVlKSk7CiB9CiAKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pT
T04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgQ3J5cHRvS2V5VXNhZ2UgdXNhZwog
ICAgIGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCiAgICAgICAgIGtleU9w
cy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiZGVyaXZlQml0cyIpKSk7CiAKLSAgICBqc29uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOworICAgIGpzb24t
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlf
b3BzIiksIGtleU9wcyk7CiB9CiAKIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCmluZGV4IDc4MzY2ODE5MDJmYzNiMjQwYmFhMGU1ZWE4ZTY2ZjRkMWIwZDJmNmQuLjU0ZWIz
MzExNjNkZTY4Yzk2N2ExYjRjM2MxOWU2NWJmNWQ0YzQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc0
LDcgKzc0LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3Bh
Y2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9u
ID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxvb2t1cE5h
bWVzcGFjZVVSSSIpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVS
SSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJp
bmdNYXBDdXN0b20uY3BwCmluZGV4IDNhZmFhZTIzNDA3NzQ5YWM3YTlmMjcyMGYzZjg5N2YwYmU1
N2NkZTcuLjUyNTk4Y2VjMjQ3NWYxNmFiY2Q5MTgxN2EwYzgzNjFiZjVjZmMwOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICB0aGlzT2JqZWN0
LT5tX2ltcGwtPmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZXNbaV0pKTsKKyAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwog
CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCA2MTk5MjY1NmM4ZGY1NTg0MDJmNjRjODcwZWE5ODg5ZjFj
YzM1ODhkLi5iZTc3N2EyODUwYTM4MTdkZjVmZjIzYzJhNWJjMGYwMmQwZWQ5MjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00
MjgsNyArNDI4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpK
U09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vz
c29yIHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSAmJiBwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSkKKyAgICBp
ZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC00NDQsNyAr
NDQ0LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogICAgIGlmIChGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVET01XaW5k
b3coZXhlYykuZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCku
dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUt
PnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBpbXBsKCkpKQotICAgICAgICAgICAgICAg
IHB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dI
YW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyYgZGlhbG9nKQogICAgIC8vICAgICAgICB3
b3JsZCBpZiBkaWFsb2dBcmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAg
ICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgp
LCBub3JtYWxXb3JsZChtX2V4ZWMtPnZtKCkpKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1
bWVudHMgPSBtX2V4ZWMtPmFyZ3VtZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdChtX2V4ZWMtPnZtKCksIElkZW50aWZpZXIobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiks
IGRpYWxvZ0FyZ3VtZW50cyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KG1fZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMi
KSwgZGlhbG9nQXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6
cmV0dXJuVmFsdWUoKSBjb25zdApAQCAtNTM0LDcgKzUzNCw3IEBAIGlubGluZSBKU1ZhbHVlIERp
YWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKCkgY29uc3QKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMt
PnZtKCkpKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKG1fZXhlYywgInJldHVyblZhbHVlIik7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4
ZWMsICJyZXR1cm5WYWx1ZSIpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7
CiAgICAgaWYgKCFKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVj
dCwgbV9leGVjLCBpZGVudGlmaWVyLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlv
bkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGZjYTdjN2VkNmFkNWQ4NzNlMDdhMjAyNzM3MWU3Njhm
NmUzMmJiMzcuLmVjYmIzM2VlZjg3OGM1ZTVmMWUwM2M5ZjhiNzY2MDNlMmNiMjIwNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRl
c3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieCIpKTsKKyAgICBKU1ZhbHVlIHhWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29s
IGNhblByb3ZpZGVYID0gIXhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtNTYsNyArNTYs
NyBAQAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBKU1ZhbHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
InkiKSk7CisgICAgSlNWYWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ5IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3Qt
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ6IikpOworICAgIEpTVmFsdWUgelZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wg
Y2FuUHJvdmlkZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC04Niw3ICs4Niw3
IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQg
YW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsK
IAotICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgImFscGhhIikpOworICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFscGhhIikpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRl
QWxwaGEgPSAhYWxwaGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtOTQsNyArOTQsNyBA
QAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBKU1ZhbHVlIGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ImJldGEiKSk7CisgICAgSlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9ICFi
ZXRhVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVl
IGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIp
KTsKKyAgICBKU1ZhbHVlIGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJnYW1tYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gIWdhbW1h
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTExOSwxOCArMTE5LDE4IEBACiBzdGF0aWMg
SlNPYmplY3QqIGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRh
OjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlv
bi0+Y2FuUHJvdmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ5
IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+
eSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVy
KGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlv
bi0+Y2FuUHJvdmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgp
KTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFj
Y2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+
Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9u
UmF0ZU9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9u
UmF0ZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgp
ID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmpl
Y3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3Rh
dGlvblJhdGUtPmNhblByb3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRh
KCkpICA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8g
anNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBo
YSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25S
YXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUt
PmNhblByb3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpz
TnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgp
ID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1
cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcAppbmRleCAyMGQ4ZjgzY2QwZTQ5YWE2YTA0YzNmNjdiYzhkMjVlZTIzYmY5OGYwLi5lOTg0
OTA5ZTc2YjI1OTQwZGE5ZWVjZDBkOTY1OTllMGU4ZjZmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIEpTRGljdGlv
bmFyeTo6R2V0UHJvcGVydHlSZXN1bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25z
dCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIGZpbmFsUmVzdWx0KSBjb25zdAogewogICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhtX2V4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9p
bml0aWFsaXplck9iamVjdC5nZXQoKSk7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZXJPYmplY3Qu
Z2V0KCktPmdldFByb3BlcnR5U2xvdChtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZTJkMjky
ZDI4NGZkMmNiOWIyM2MxM2EyOTQ4NWVmMjkyNzJiMzE3My4uZmZiMDU4MGYzYzc0MzEzYTA3Yjc0
OTQ3NmQ3ZDI3Yjc1YTE2MThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICAvLyBJZiBqc0Z1bmN0aW9uIGlzIG5vdCBhY3R1YWxseSBh
IGZ1bmN0aW9uLCBzZWUgaWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZh
Y2UgYW5kIHVzZSB0aGF0CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAg
ICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0g
anNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRs
ZUV2ZW50IikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODEyMjUwN2I0
ZmJjNjhlMTIzZjY3MmZhMzEwODhhNTJjYTcwZTk2NS4uM2ViYTQyMWJjNzM0MTc3M2FjOGY2YWE2
YjEyMWVhY2QxZTgyYTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLml0ZW0oaW5kZXgp
KSk7CiAKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBl
dGMuCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0Nv
bGxlY3Rpb24sIElkZW50aWZpZXIoZXhlYywgc3RyaW5nKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIHN0cmluZykpKTsKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFy
ZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudApAQCAtMTA2LDEyICsx
MDYsMTIgQEAgSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB1aW50MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICAgaWYgKGlu
ZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIG5hbWVk
SXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gbmFtZWRJdGVtcyhleGVjLCB0
aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rp
b246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5h
bWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJ
dGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5p
c1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNhZDlhNDcy
OTAzNGNkZDA3NzY5ZjdjZTYwYzdkZWYyYjFjOTA5NTIuLjZkMzljNDU5ZDdkMjU1NTRhOTdkZTRk
YjcyNGQzMTY1YzI5MzNkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRQogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKICAgICAvLyBJZiAiYWxsIiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJu
IHRoZSBvdmVyd3JpdHRlbiB2YWx1ZQotICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CisgICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpKTsKICAgICBp
ZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1
bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBB
ZGQgImFsbCIgdG8gdGhlIHByb3BlcnR5IG1hcC4KLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAiYWxsIiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogc3Rh
dGljIERvY3VtZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0
Niw3ICsxNDYsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1l
LCBjdXJyZW50V29ybGQoZXhlYykpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgIm9wZW4iKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdy
YXBwZXItPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvcGVuIikpOwog
ICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IDI4NjdkNjBmMmEwMjYyN2YwN2NkMDBhMzQwZTU5Yzc4MTEy
NGQ5ODMuLjI4NDg5NzEyYTdmNmNjYzQ5OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjCiAKIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVt
cyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZp
bmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IGU2YTE0MGY1NDU4NDliOGFh
NjQ5NDdlMGQ2NjdmODgzNmY0YzlhZWEuLmEyNWRjYTk5MThjM2FlMmVlNzZhMTgwNWEyMGQwYjEw
YmRhZjE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgIElEQktleVBhdGgga2V5UGF0
aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0g
b3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlQYXRoIikpOworICAg
ICAgICBKU1ZhbHVlIGtleVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5UGF0aCIpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcw
LDcgKzcwLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvSW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhdXRvSW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAg
ICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggMDQwNDRkMzVkMzk1OWM1ZjE4Y2YyYmQ1YjM1NTNi
YTgyZDgzNWVlYy4uODUwN2U0OTRhMzc2ZGI3OTllNTZmYmVlOGJkMWNjNmQ5ZDE2NzgyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKQEAgLTY3LDExICs2NywxMSBAQCBKU1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAg
IGJvb2wgbXVsdGlFbnRyeSA9IGZhbHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICB1bmlx
dWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InVuaXF1ZSIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIG11bHRp
RW50cnkgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm11bHRpRW50
cnkiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVl
LmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRv
Qm9vbGVhbihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDA1YzBjZDk5MjU2OTVkMTA5
NWYzZWQ0YzlkMzJhNTU0MzQ1ZTNhOGIuLjVlYjZkNThjMjZjYzI5MGY4OWRlOTc3NjRmZmMxOTM3
ZTAzNzBkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgCiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIEltYWdlRGF0YSwgaW1hZ2VEYXRhKTsKLSAgICBJZGVudGlmaWVy
IGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CisgICAgSWRlbnRpZmllciBkYXRhTmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImRhdGEiKTsKICAgICB3cmFwcGVyLT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgZGF0YU5hbWUsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEt
PmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gRklYTUU6IEFkb3B0IHJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIwYzM4MDZiZGU2N2U5
ZGI0YTY2NzQyODI2NjlhZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0YWM1NDJmYzdiNzU0
NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRp
YyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkq
IGFycmF5LCBDb250ZXh0TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+
bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFycmF5
LT5nZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQo
ZXhlYywgSWRlbnRpZmllcihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpTVmFsdWUgdHlwZSA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwotICAgICAgICBKU1Zh
bHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwotICAgICAg
ICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZW5h
YmxlZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgImNoZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVt
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CisgICAgICAgIEpTVmFs
dWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
bGFiZWwiKSk7CisgICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1ZhbHVlIGlkID0gaXRl
bS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlkIikpOworICAgICAg
ICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiZW5hYmxlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQiKSk7CisgICAgICAg
IEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZTUzNzc2Y2Q4ZDFiNjk2NDM3NmY3NGY5MDdi
OTgwYmJhYzliNTQzMy4uY2YxMzM3ZjAxMzhiYjBkNjdiNmFmNzZiNjk4MTQxODkyNDJhYTRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGlu
dCBvdmVycmlkZUxpbmVOdW1iZXIgPSBtX3Bvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwog
CiAgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjaygKLSAgICAgICAgZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgCisgICAgICAgIGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBtX2Z1bmN0aW9uTmFtZSksCiAgICAgICAgIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9u
LCBvdmVycmlkZUxpbmVOdW1iZXIpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcAppbmRleCA3MTcyNmJiZjFiMWViNjcxZTFhNmI0ZWQ0ODJjNjFlMmI1OGFiY2EzLi43
YjQxMTlhNWE1ZDBiNzI4OWYzZTEzNjhkOTEwZDc2YTc5OGQ4Yjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7
CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmaWx0ZXIgPSBm
aWx0ZXIuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFjY2VwdE5vZGUiKSk7CisgICAgICAg
IGZpbHRlciA9IGZpbHRlci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YWNjZXB0Tm9kZSIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNh
bGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewogICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIk5vZGVGaWx0ZXIgb2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlv
biIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDNjOTJiZWIxMzRlZDA2MzMxYjM5ZjYxZjM2
OWU0ZDg4ZGMzMzNkYTMuLjhjOWViOGY5YzE5ZjkwYTAwYTM2ZGY1MzVmOTkzYmFjN2ExM2ViZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVz
dWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBq
c1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1faW1wbC0+Y29sdW1u
TmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwCmluZGV4IDk0MmM0ZGZiNmU3ZTY4Zjg5YTBjZjc5ZDU0NWUzMTkxNDZiYzI3
MzcuLmQ2NDYwM2UxYjhkMjVlZGY1ZDFmMjljNWY3MDM3MjFiNmJjYTMzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHRoaXNP
YmplY3QtPm1faW1wbC0+a2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGksIGVj
KSkpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCmluZGV4IGE4
OGMwMzhkOTc1MGU4M2UxNDMwZTg5ZTcxYTY2ZDQ1MDA3MTdiNWIuLjM5ZmE2NGQ5ZGFjZDQ0YWE4
NmM2NWJlMWJmZDIxZmJhODc4M2RlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZv
aWQgc2V0SW50ZXJuYWxTbG90VG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVj
dFZhbHVlLCBQcml2YXRlTmFtZSYKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFs
dWUudG9PYmplY3QoZXhlYyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmpl
Y3RWYWx1ZSk7Ci0gICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KG5hbWUpLCB2YWx1ZSwgcHJvcGVydHlTbG90KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21VaWQobmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOwogfQog
CiBKU1ZhbHVlIGdldEludGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG9iamVjdFZhbHVlLCBQcml2YXRlTmFtZSYgbmFtZSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNW
YWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBv
YmplY3RWYWx1ZSwgUHJpdmF0ZU4KICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUu
dG9PYmplY3QoZXhlYyk7CiAgICAgUHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1
ZSk7CiAKLSAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFt
ZSk7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG5h
bWUpOwogICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHByb3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgcmV0dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5k
ZXggY2I0OTMxZGQ1NmE3NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5Yi4uMDNkNDQ3NjU4OTc5
NzhjMDA0YWQ5MzFhYzE2NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRp
YyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiBib29s
IFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlm
aWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3Qo
KSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTYx
LDE0ICs2MSwxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHNjcmlwdFN0YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCks
IElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxP
YmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNj
cmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2Vw
dGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRl
KTsKLSAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5n
ZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUp
KTsKICAgICBpZiAoIWpzVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODIsNyAr
ODIsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6
OnJlbW92ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNj
cmlwdFN0YXRlLCBuYW1lKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3Rh
dGUsIG5hbWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggYmEyNjAzYzBlYmMwYzZiMGU3N2Y0Nzc4YWFjNmUxNzNkZDU3ZTQwNi4u
MDBlYTExYjQ2NGY2MzVjNmNiZGU2NGEyNjI2NjAxNjFjYWRmOWRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01
MjcsNyArNTI3LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwg
bV9ibG9iVVJMcyhibG9iVVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBl
bXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAgICAgICB3cml0ZShDdXJy
ZW50VmVyc2lvbik7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHMpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAg
ICAgICAgIHdyaXRlKG1fZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgd3JpdGUoSWRlbnRpZmllcihtX2V4ZWMsIHN0cikpOworICAgICAgICAgICAgd3JpdGUoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0KIAogICAgIHZvaWQgd3Jp
dGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0yNDg3LDExICsyNDg3LDExIEBA
IERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRU
ZXJtaW5hbCgpKSB7Ci0gICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3Rh
Y2subGFzdCgpLCBJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRl
cm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5s
YXN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmlu
ZygpKSwgdGVybWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1l
bWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVj
dEVuZFZpc2l0TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJ
ZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDVkOWQ4
ZjU5MDdlNjA1NTIxMDg3NjkzNWZhYWViNjZlNDk2NzFiNjMuLjNhOTNlYmY1YWI2YzRkN2U1MzUx
NzAzZWMxODE1YTVmYzE0ZGIwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNj
cmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdz
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNl
cHRpb24oKSk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0
VmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4oW3NlbGYgX2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4
ZWMpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtl
eQogICAgICAgICAvLyBsZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhr
ZXkpKSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhj
ZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3Zl
V2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0t
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBA
IC0gKEJPT0wpaGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
Qk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihl
eGVjLCBTdHJpbmcoa2V5KSkpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1By
b3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsK
IAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25U
b0NvbnNvbGUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDE0YmFmNGIzNDBhZTYzZDhiZDc3ZTI4MDE1YWMxODhj
MTNjMDhlY2YuLjViOWY4NGU1ZWE2NTM3MTI3ZTAyY2JmNGE0NjYzOTQ3NDUwMmQ2OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25O
YW1lKCRzaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHNpZ25hdHVyZS0+
bmFtZTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7ZW5h
YmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmVtb3ZlRGlyZWN0KHZtLCBwcm9w
ZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI1ODAsMTAgKzI1ODAsMTAgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
IiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxz
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBvYmplY3QuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CkBAIC0yNjkyLDcgKzI2OTIsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGkpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0
QXJyYXkuY3BwCmluZGV4IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYu
LmQyNGEyZWE3MDZhZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFy
cmF5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0
LT5pbXBsKCkpLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
CiBKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApp
bmRleCBjMzBmYTgwMTZhODc1ZWEwOTkxMjRkMTFiM2NmYmFkNWIxMTI5ZWIzLi5hYjI5ODEyMmE0
ZmQxMGQ5MTRjYmFjOTEyMjU2OGNiN2MzM2UwNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50
OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggMTRhNzg1YTliM2I0NWYyMTViMGVhM2Y1MDNiNmI5MjcxZmFm
M2Y4Ny4uMWEyNzRhZjliZWQwOWNkOWE5YTAzZDhhNDBmYzkxZWUyYmMxYjA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTE4OTcsOCArMTg5Nyw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
IiksIHZhbHVlKTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAg
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKIApAQCAt
MjcwNiw4ICsyNzA2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9u
YWxBdHRyNCIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjcyMSw4ICsyNzIxLDggQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
ci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9
CiAKICNlbmRpZgpAQCAtMjczNiw4ICsyNzM2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIp
LCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjg3NCw4
ICsyODc0LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVj
dC4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIG9iamVjdAorICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggNzc0ZmRmYzNm
NGVmOTUzZWZkN2JkNmZkOTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1ZWFkOTM4NThlMDIzMDlj
ZDgyZGM1YTczMjM5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191
dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBT
dHJpbmcqIHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRp
ZmllcihleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBjb252ZXJ0VVRGOFRv
VVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAogfSB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2QzNGU1ZjEyMDJkN2YzYWRi
ZGMxODMwOTg3ZWY4NmJhZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3YjkyZmFiOTBhZjg0YWFiZTk1
YWVmN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpA
QCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNGYWxs
YmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpjRmFs
bGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRW
YWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5t
X2l0ZW0pKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0
LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihF
eGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0
YmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5k
ZXggOTU3MzBjNDNkNzQwOTg1N2IxYmZkMjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZj
ZTdlN2VlMTEzYTIxMGI4N2NjMzNhNzI2YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3Qg
KilOUE5fQ3JlYXRlT2JqZWN0IChteUZ1bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBn
bG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVh
dGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsK
KyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJt
eUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xh
bmd1YWdlLCAodm9pZCAqKW15T2JqZWN0KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJl
YWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cg
PSBleFZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAg
ICAgICAgICAgaW50IGxpbmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwu
dHlwZSgpID09IE9iamVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxp
bmVWYWwgPSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJs
aW5lIikpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6
ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJsaW5lIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09
IE51bWJlclR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxp
bmVWYWwudG9OdW1iZXIoZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQppbmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMx
MmM1ZDllNGMyNzcwLi4zNTMyYjBhNjg5YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0
SW50ZXJmYWNlICpteUludGVyZmFjZSA9IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07
CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJm
YWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVD
TGFuZ3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6
Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAq
KW15SW50ZXJmYWNlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFy
Z2M7IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0
RnJvbUZpbGUoYXJndltpXSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0
cmluZyhleGVjKS5hc2NpaSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nh
c3QoZXhWYWwpLmdldChleGVjLElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggODkwNmNiN2Iw
ZWFlMjk2MDU0MTZmNDY1MDE3ZmNiMTEyYjdhMDM4Ny4uNGY3ZThmYTE1ZTU0MGI4ZTRmMmE1OGVj
NGRiNDEyYjU5ZGVlNDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTc3LDExICs3Nywx
MSBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGdldFR5cGVGbGFncyhFeGVjU3RhdGUmIGV4ZWMs
IGNvbnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUgogICAgIAogc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmln
Z2VyJiB0cmlnZ2VyKQogewotICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3Qu
Z2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dlciIpKTsKKyAgICBKU1ZhbHVlIHRy
aWdnZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZygmZXhlYywgInRyaWdnZXIiKSk7CiAgICAgaWYgKCF0cmlnZ2VyT2JqZWN0IHx8IGV4ZWMuaGFk
RXhjZXB0aW9uKCkgfHwgIXRyaWdnZXJPYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRUcmlnZ2VyOwogICAgIAotICAgIEpT
VmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZp
ZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0g
dHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1
cmwtZmlsdGVyIikpOwogICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0
aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dlcjsKIApAQCAt
OTEsMTggKzkxLDE4IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgbG9hZFRyaWdnZXIoRXhlY1N0
YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgVHJpZ2dlCiAKICAgICB0cmlnZ2VyLnVy
bEZpbHRlciA9IHVybEZpbHRlcjsKIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0g
dHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyLWlz
LWNhc2Utc2Vuc2l0aXZlIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJp
Z2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwt
ZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIikpOwogICAgIGlmICh1cmxGaWx0ZXJDYXNlVmFsdWUg
JiYgIWV4ZWMuaGFkRXhjZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZVZhbHVlLmlzQm9vbGVhbigp
KQogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZpbHRlckNh
c2VWYWx1ZS50b0Jvb2xlYW4oJmV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1
ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAicmVzb3VyY2Ut
dHlwZSIpKTsKKyAgICBKU1ZhbHVlIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJyZXNvdXJjZS10eXBlIikp
OwogICAgIGlmIChyZXNvdXJjZVR5cGVWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSkgewog
ICAgICAgICBhdXRvIHR5cGVGbGFnc0Vycm9yID0gZ2V0VHlwZUZsYWdzKGV4ZWMsIHJlc291cmNl
VHlwZVZhbHVlLCB0cmlnZ2VyLmZsYWdzLCByZWFkUmVzb3VyY2VUeXBlKTsKICAgICAgICAgaWYg
KHR5cGVGbGFnc0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVGbGFnc0Vycm9yOwogICAg
IH0KIAotICAgIEpTVmFsdWUgbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVj
LCBJZGVudGlmaWVyKCZleGVjLCAibG9hZC10eXBlIikpOworICAgIEpTVmFsdWUgbG9hZFR5cGVW
YWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZl
eGVjLCAibG9hZC10eXBlIikpOwogICAgIGlmIChsb2FkVHlwZVZhbHVlICYmICFleGVjLmhhZEV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGF1dG8gdHlwZUZsYWdzRXJyb3IgPSBnZXRUeXBlRmxhZ3Mo
ZXhlYywgbG9hZFR5cGVWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRUeXBlKTsKICAgICAg
ICAgaWYgKHR5cGVGbGFnc0Vycm9yKQpAQCAtMTE0LDExICsxMTQsMTEgQEAgc3RhdGljIHN0ZDo6
ZXJyb3JfY29kZSBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2Jq
ZWN0LCBUcmlnZ2UKIAogc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkQWN0aW9uKEV4ZWNTdGF0
ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpT
VmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4
ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0Lmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBp
ZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3Qu
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTklu
dmFsaWRBY3Rpb247CiAKLSAgICBKU1ZhbHVlIHR5cGVPYmplY3QgPSBhY3Rpb25PYmplY3QuZ2V0
KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHlwZSIpKTsKKyAgICBKU1ZhbHVlIHR5cGVPYmpl
Y3QgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVj
LCAidHlwZSIpKTsKICAgICBpZiAoIXR5cGVPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8
fCAhdHlwZU9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lv
bkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGU7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0
aWMgc3RkOjplcnJvcl9jb2RlIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYg
cnVsZU9iamVjdCwgQWN0aW9uJgogICAgIGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gImJsb2NrLWNv
b2tpZXMiKQogICAgICAgICBhY3Rpb24gPSBBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM7CiAgICAg
ZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSAiY3NzLWRpc3BsYXktbm9uZSIpIHsKLSAgICAgICAgSlNW
YWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMs
ICJzZWxlY3RvciIpKTsKKyAgICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJzZWxlY3RvciIpKTsKICAg
ICAgICAgaWYgKCFzZWxlY3RvciB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFzZWxlY3Rvci5p
c1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
TkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhOWUyOThmNjQ0ZDZiMWUxYThmMzJmMjJjN2IxZDc0
Y2I3NmU3MWIuLjU5ZjRkZWFjYTVlYzI5YTEwZDEzNWE3NjU4ZGUyODBhNTlhMTY2MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzY1OSw3ICszNjU5LDcg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYg
ZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0
KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKICAgICAKLSAgICBKU0M6OklkZW50aWZp
ZXIgY29udHJvbHNIb3N0KCZleGVjLnZtKCksICJjb250cm9sc0hvc3QiKTsKKyAgICBKU0M6Oklk
ZW50aWZpZXIgY29udHJvbHNIb3N0ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVj
LnZtKCksICJjb250cm9sc0hvc3QiKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNX
cmFwcGVyID0gbWVkaWFKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsK
ICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CkBAIC0zNjY4LDcgKzM2NjgsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJK
U1ZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlm
ICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVySUQoJmV4ZWMudm0oKSwgImNv
bnRyb2xsZXIiKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZtKCksICJjb250cm9sbGVyIik7CiAgICAgSlNDOjpK
U1ZhbHVlIGNvbnRyb2xsZXJKU1dyYXBwZXIgPSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3Qt
PmdldCgmZXhlYywgY29udHJvbGxlcklEKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIC8vICAgICBO
b25lCiAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgIC8vICAgICBOb25lCi0gICAgSlNDOjpKU1Zh
bHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
ZmllcihleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKKyAgICBKU0M6OkpTVmFsdWUg
bWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOwogICAgIEpTQzo6
SlNPYmplY3QqIG1ldGhvZE9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0
Kj4obWV0aG9kVmFsdWUpOwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47
CkBAIC01ODUxLDcgKzU4NTEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlh
Q29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogCi0gICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChl
eGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOworICAgIEpTQzo6
SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKICAgICBpZiAoZnVu
Y3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01ODc0
LDcgKzU4NzQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGNvbnRybwogewogICAgIEpTQzo6UHV0UHJv
cGVydHlTbG90IHByb3BlcnR5U2xvdChjb250cm9sbGVyVmFsdWUpOwogICAgIEpTQzo6SlNPYmpl
Y3QqIGNvbnRyb2xsZXJPYmplY3QgPSBjb250cm9sbGVyVmFsdWUudG9PYmplY3QoZXhlYyk7Ci0g
ICAgY29udHJvbGxlck9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3Qs
IGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNO
dW1iZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKKyAgICBjb250cm9sbGVyT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoY29udHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJwYWdlU2NhbGVGYWN0b3IiKSwgSlNDOjpqc051bWJl
cihwYWdlU2NhbGVGYWN0b3IpLCBwcm9wZXJ0eVNsb3QpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKQEAgLTU5
MDMsNyArNTkwMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAg
ICAgQSByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4K
IAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhl
YywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0
aW9uVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTMy
LDcgKzU5MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIAogICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRp
YUNvbnRyb2xsZXJIb3N0LCBhbmQgQ29udHJvbGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhl
aXIgcmVsYXRpb25zaGlwCiAgICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3Qg
PSBtZWRpYUpTV3JhcHBlci50b09iamVjdChleGVjKTsKLSAgICBKU0M6OklkZW50aWZpZXIgY29u
dHJvbHNIb3N0KCZleGVjLT52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlm
aWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0o
KSwgImNvbnRyb2xzSG9zdCIpOwogICAgIAogICAgIEFTU0VSVCghbWVkaWFKU1dyYXBwZXJPYmpl
Y3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRyb2xzSG9zdCkpOwogCkBAIC01OTQyLDcgKzU5NDIs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCogcm9vdCkKICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIo
JmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xs
ZXIgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sbGVy
Iik7CiAKICAgICBBU1NFUlQoIWNvbnRyb2xsZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNv
bnRyb2xsZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggNzQzZTk5NjRiNTk4NjYxMDQxZWYzZjQ4NjI0MTUyNjYyOWEzY2U0MS4u
ODNmMWI3ZTYwZTczMTkzYWVkMDFjMTdmNTE0YWUwYjVkOTAwYzM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgYXJnTGlzdC5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4oIW1f
c25hcHNob3RJbWFnZSkpOwogCiAgICAgLy8gSXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJv
dmlkZXMgYSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rp
b24uCi0gICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMs
IEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsK
KyAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0
KGV4ZWMpOwogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBj
YWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92ZXJsYXksIGNh
bGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDJl
M2Y0OWVmN2M4MWZmOGE3MDQzMTg0YjY0MGMwNThlNmY2ZDY5Ny4uYjUyZDFlNjJhNTY2Yjk5NmRj
ZDkyYWM5NGQ0YTMwZjI0NmJiYzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVjdElu
dGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlz
PERvY3VtZW50Pigqc2NyaXB0Q29udGV4dCkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCks
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRl
cm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3du
Y2FzdDxEb2N1bWVudD4oc2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5h
bHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4
IDljZDY1NWM5ZjcxMDUzNWE5ZGYyYWY0NTdkNzA0NDZhNmQ5YjZlNjcuLjM0NDFlNGZiMTM3OGQ5
Mzg3NTY0NTZlYjk1OWQ1ZGZkMTFmOGJiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02
MjcsNyArNjI3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVy
UmVwKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlz
U3RyaW5nKCkpOwogICAKICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmco
KTsgICAgCi0gICAgcmV0dXJuIElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKKyAg
ICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCks
IFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpOwog
fQogCiBrZXJuX3JldHVybl90IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWlu
dDMyX3QgcGx1Z2luSUQsIHVpbnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0SUQsIHVp
bnQ2NF90IHNlcnZlcklkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAwZGYwZGVjMGMyNDc4ZjBmYjFmZTg4YzY0
ODkzMGIyYWE4MmYwZjAyLi43NTFiMTZhZGNiMDNlYTllM2M5NjEzOTBjYWM0ZWE4NDNiYTBkZDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogCiAgICAg
ICAgIGlmIChpZGVudGlmaWVyLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIG5hbWVBcnJheS5hZGQo
SWRlbnRpZmllcigmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKKyAgICAgICAgICAgIG5hbWVBcnJh
eS5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0
cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaWRlbnRpZmllci0+bnVtYmVyKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5k
ZXggMWNlZDI5M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZmRiZTgxYThlMGJl
OTc2OTQ5OWFjOWIyZDNlMGZhMzFkYmI1NTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDA3
LDcgKzQwNyw3IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBpZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICAgICAgICAgIGludCBs
ZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWRlbnRp
ZmllciA9IElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soc3RyaW5nLCBsZW5ndGgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcAppbmRleCAwZDE2Njc0ZTVjMTVmNDcxNzE4NTQzZDI1Y2E0ZjMxMDlj
MDUyZDIyLi5lZDdkN2Y2YjMzNGIyY2ZmYmRhMTM3MWEyMmE1ZjQ5MzA5ZTVhOTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZp
ZXJGcm9tSWRlbnRpZmllclJlcChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJSZXAqIGlkCiAg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgaW50
IGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywg
U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiB9CiAKIGJvb2wgTlBKU09i
amVjdDo6aGFzTWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249657</attachid>
            <date>2015-03-28 02:00:29 -0700</date>
            <delta_ts>2015-03-31 14:26:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143146-20150328175948.patch</filename>
            <type>text/plain</type>
            <size>214848</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDVmMzkxYWQxMjgxYzI0Njk4YjY0NTEyNTdlYzhiMTU1Y2VlOTQyLi5lYWU5NDhhNDYyN2VlMzM1
ZjdmZjQ4OTg5ZGZiMzZmODhmMWJiMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMTUtMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlm
eSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGEgbG90IG9mIHBsYWNlcywgYElkZW50aWZpZXIo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAgY29uc3RydWN0b3IgaXMgdXNlZC4KKyAgICAg
ICAgSG93ZXZlciwgaXQncyBhbWJpZ3VvdXMgYmVjYXVzZSBgU3RyaW5nSW1wbCpgIGhhcyAyIGRp
ZmZlcmVudCBtZWFuaW5ncy4KKyAgICAgICAgMSkgbm9ybWFsIHN0cmluZywgaXQgaXMgcmVwbGFj
YWJsZSB3aXRoIGBXVEZTdHJpbmdgIGFuZAorICAgICAgICAyKSBgdWlkYCwgd2hpY2ggaG9sZHMg
YGlzU3ltYm9sYCBpbmZvcm1hdGlvbiB0byByZXByZXNlbnQgU3ltYm9scy4KKyAgICAgICAgU28g
d2UgZHJvcHBlZCBJZGVudGlmaWVyIGNvbnN0cnVjdG9ycyBmb3Igc3RyaW5ncyBhbmQgaW5zdGVh
ZCwgaW50cm9kdWNlZCAyIGZhY3RvcnkgZnVuY3Rpb25zLgorICAgICAgICArIGBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKFZNKi9FeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKWAuCisgICAgICAgIEp1
c3QgY29uc3RydWN0IElkZW50aWZpZXIgZnJvbSBzdHJpbmdzLiBUaGUgc3ltYm9sLW5lc3Mgb2Yg
U3RyaW5nSW1wbCogaXMgbm90IGtlcHQuCisgICAgICAgICsgYElkZW50aWZpZXI6OmZyb21VaWQo
Vk0qL0V4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKWAuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZCBmb3IgMikgYHVpZGAuIFNvIHN5bWJvbC1uZXNzIG9mIGBTdHJpbmdJbXBsKmAgaXMga2Vw
dC4KKworICAgICAgICBBbmQgdG8gY2xlYW4gdXAgYFN0cmluZ0ltcGxgIHdoaWNoIGlzIHVzZWQg
YXMgdWlkLAorICAgICAgICB3ZSBpbnRyb2R1Y2UgYFN0cmluZ0tpbmRgIGludG8gYFN0cmluZ0lt
cGxgLiBUaGVyZSdzIDMga2luZHMKKyAgICAgICAgMS4gU3RyaW5nTm9ybWFsIChub24tYXRvbWlj
LCBub24tc3ltYm9sKQorICAgICAgICAyLiBTdHJpbmdBdG9taWMgKGF0b21pYywgbm9uLXN5bWJv
bCkKKyAgICAgICAgMy4gU3RyaW5nU3ltYm9sIChub24tYXRvbWljLCBzeW1ib2wpCisgICAgICAg
IFRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQW5kIChhdG9taWMsIHN5bWJvbCkgY2FzZSBz
aG91bGQgbm90IGV4aXN0LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdE1ha2VGdW5jdGlvbik6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5n
LmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAg
ICAgIChKU0M6OkJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJzOjpy
ZWFsbHlBZGQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFp
bHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21F
eGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6YWRk
Q29uc3RydWN0YWJsZUZ1bmN0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAg
KHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFkZFZhcik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJB
cmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChK
U0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgor
ICAgICAgICAoSlNDOjphZGRFcnJvckluZm8pOgorICAgICAgICAoSlNDOjpoYXNFcnJvckluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBl
Pjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6aXNTeW1ib2wpOgorICAgICAgICAoSlNDOjpJZGVu
dGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZnJvbSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVVpZCk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJ
bkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
OgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlaWZ5
U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JG
dW5jUmFjZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbCk6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9J
ZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojp0cnlKU09OUFBhcnNlKToKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZU5hbWU6OlByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmQpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZTo6UHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1l
Ojphc0luZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRk
S25vd25VbmlxdWUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RT
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisKIDIwMTUtMDMtMjYgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgbW9yZSBvYmplY3RzIHVz
ZSBGYXN0TWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmZWNiYzQyZmQ1MmU0M2U4ODIzMjE0MjY1NTVkZWFkMWZkMDEw
NWMuLjhhNTU4YmRiNjI3ZGE3MjllNDlmODZmNTI3ZDIzMWEwMmM3YWMyZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTMgQEAKKzIwMTUtMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFN0cmluZ0tpbmQgaW50byBgU3RyaW5nSW1wbGAu
IFRoZXJlJ3MgMyBraW5kcworICAgICAgICAxLiBTdHJpbmdOb3JtYWwgKG5vbi1hdG9taWMsIG5v
bi1zeW1ib2wpCisgICAgICAgIDIuIFN0cmluZ0F0b21pYyAoYXRvbWljLCBub24tc3ltYm9sKQor
ICAgICAgICAzLiBTdHJpbmdTeW1ib2wgKG5vbi1hdG9taWMsIHN5bWJvbCkKKyAgICAgICAgVGhl
eSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAg
ICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKToKKyAgICAgICAgV2hlbiByZWdp
c3RlcmluZyBhIHN0cmluZyBpbnRvIEF0b21pY1N0cmluZ1RhYmxlLAorICAgICAgICBpdCBzaG91
bGQgbm90IGJlIGEgc3ltYm9sIHN0cmluZworICAgICAgICBiZWNhdXNlIHN5bWJvbCBhbmQgYXRv
bWljIHR5cGVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgICAgIFdoZW4gYSBzeW1ib2wg
c3RyaW5nIGNvbWVzLCB3ZSBleHRyYWN0IGFuIG93bmVyIHN0cmluZworICAgICAgICBmcm9tIGEg
c3ltYm9sIHN0cmluZyBieSB1c2luZyBgU3RyaW5nSW1wbDo6ZXh0cmFjdEZvbGRlZFN0cmluZ0lu
U3ltYm9sKClgLgorICAgICAgICBJdCBhbHdheXMgc3VjY2VlZHMgYmVjYXVzZSBhIHN5bWJvbCAo
bm9uIGVtcHR5KSBzdHJpbmcKKyAgICAgICAgaXMgYWx3YXlzIEJ1ZmZlclN1YnN0cmluZyBhbmQg
aGFzIGFuIG93bmVyIHN0cmluZy4KKyAgICAgICAgRW1wdHkgc3ltYm9sIHN0cmluZyBkb2Vzbid0
IGhhdmUgYW4gb3duZXIgc3RyaW5nLgorICAgICAgICBUaGlzIGNhc2UgaXMgZmlsdGVyZWQgYnkg
YCFzdHJpbmcubGVuZ3RoKClgIGd1YXJkLgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZCk6CisgICAgICAgIChXVEY6OkF0
b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp+U3RyaW5nSW1w
bCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbCk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpmbGFnSXNTeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjptYXNrU3RyaW5nS2lu
ZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmluZ0tpbmQpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjppc1N5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmlzQXRv
bWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2V0SXNBdG9taWMpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmZsYWdJc1VuaXF1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmlzVW5pcXVlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVlKTog
RGVsZXRlZC4KKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgQ01ha2Ugb24gTWFjLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGRkNjdjODAzOTc2MGZkODVjOTM3OWVhMDMzMjQwY2YwZTdkZDU5ZmYuLmVhYjU3
NGQzMDFmMjkxYThlMDMyMDViZTljMmU0MWM3NDUxYTc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMzMgQEAKKzIwMTUtMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xhcmlmeSB0
aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgSWRlbnRpZmllciBjcmVhdGlvbnMuCisKKyAg
ICAgICAgMS4gSWYgdGhlIGNvZGUgY3JlYXRlcyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1wbCoK
KyAgICAgICAgd2hpY2ggaXMgdHJlYXRlZCBhcyBzeW1ib2wgb3Igc3RyaW5nKHVuaXF1ZSBpZCks
IHVzZSBJZGVudGlmaWVyOjpmcm9tVWlkLgorICAgICAgICAyLiBJZiB0aGUgY29kZSBjcmVhdGVz
IElkZW50aWZpZXIgZnJvbSBzdHJpbmcsIHVzZSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nLgorCisg
ICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxh
Y2VtZW50U2NyaXB0SW5qZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIYXNoQWxnb3JpdGhtKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFN0cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5Gcm9tSlNPTik6
CisgICAgICAgIChXZWJDb3JlOjphZGRUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRK
U09ORm9yUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjphZGRCb29sVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFVzYWdlc1RvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkQWNjZWxlcmF0aW9uQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJv
dGF0aW9uUmF0ZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGlv
bk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERv
Y3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1h
Z2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExp
c3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93
TGlzdDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRJbnRlcm5hbFNsb3RUb09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJ
bnRlcm5hbFNsb3RGcm9tT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNl
cmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVu
dHM6XSk6CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCB2YWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2Vi
U2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjppZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGJyaWRnZS90
ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpsb2FkQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdCk6CisKIDIwMTUtMDMtMjcgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIGFkZGl0aW9u
YWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBwcm9jZXNzZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAwNGY1ZjgyNTg5YzBhNDRlNjYwMGI3MjBiMmU4NDNmODE1ZmM3NjRhLi42ZDFk
ZGVlNGY5OTRhMWNmOTAzOWQ5ZTFjMDFmZjM1YzQ4NjI2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgSWRlbnRpZmllciBmYWN0b3JpZXMgdG8gY2xh
cmlmeSB0aGUgbWVhbmluZyBvZiBTdHJpbmdJbXBsKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBjaGFuZ2UgdG8gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUlu
c3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKwogMjAxNS0wMy0yNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDllM2M5ZDcxYjNlN2E4NmNmYmU0ZTEwMDRiMWMw
MGVkYjkyM2JhZTEuLmQ4NzE2YWU0YTNhYTlmYjg2YzgyMDA3NDQ3YzlhMmUyNjM3OGUzYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMy0yOCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBJZGVudGlmaWVyIGZhY3Rv
cmllcyB0byBjbGFyaWZ5IHRoZSBtZWFuaW5nIG9mIFN0cmluZ0ltcGwqCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGNoYW5nZSB0byBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6
CisKIDIwMTUtMDMtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGb3J3YXJkIGFkZGl0aW9uYWwgQ0ZOZXR3b3JrIEFUUyBpbmZvcm1hdGlvbiB0byBjaGlsZCBw
cm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOWIxY2I4ZjVmM2YxZGRjZjdhNmY4YWExYjdkMGJhZmJl
MzIxODlmZS4uYTBiODNlNzdmZjU3MDI4N2VmNjdlOTQ3N2MxZTkyN2RiOTU5N2NmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKQEAgLTUyMSw4ICs1MjEsMTAgQEAKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQg
PSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwogICAgICAgICAgICAgICAgIFN0
YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOwotICAgICAgICAgICAgICAg
IGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBuYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAm
JiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8
IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghbmFtZS0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKG5hbWUp
KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IApAQCAtNTMyLDggKzUzNCwxMCBAQAogICAgICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0
YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgU3Rh
dGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVt
KSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFuYW1lLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBT
dHJpbmcobmFtZSkpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4
IDIzNGQyNDg4ZmY4OTBiOGJlZTY5N2VmNTVhYTY4MDM4MGExODFhNDIuLjZjZTFjMmMxMTMzYjY5
MGE3N2NkYzlhY2FjOGFmMzdjYTg1MzA3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQg
cGEKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgc3RhcnRpbmdMaW5lTnVt
YmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKLSAgICBJZGVudGlmaWVyIG5h
bWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZleGVjLT52bSgpKSA6IElkZW50aWZpZXIo
ZXhlYywgImFub255bW91cyIpOworICAgIElkZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUt
PmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpIDogSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YW5vbnltb3VzIik7CiAgICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKaW5kZXggMjJjMTYyMzBjN2MxZDM2
OTExYzdkNTg5Y2U1MGYwOTQyODdhMWQ5ZS4uN2Y5ZWRiNDEzNmUyNzQ5OTc0N2QyOTZkMmYxYTJk
YzQ4OWIwNDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgog
CkBAIC02OSw5ICs3MCw5IEBAIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6OmlkZW50aWZpZXIo
Vk0qIHZtKSBjb25zdAogICAgICAgICByZXR1cm4gSWRlbnRpZmllcihJZGVudGlmaWVyOjpFbXB0
eUlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gSWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIElkZW50aWZp
ZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBtX3N0cmluZy5sZW5ndGgoKSk7CiB9CiAKIGNvbnN0IFVDaGFyKiBPcGFxdWVKU1N0cmluZzo6
Y2hhcmFjdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDJkZjc4NzY0MTBlNzhjZjlmYWJmMjQxNzg2ZTYw
MjQyZmU0ZWVlMDkuLmYzYTIyMzhlYmE5OGZjMTI4MjdiODFkZWYyYzgwYzYzMTRjZTA1ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChib29sIGFyZ3VtZW50KQogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sobV9leGVjKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9l
eGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9
IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBt
X25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBoYWRF
eGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKaW5kZXggYzAxMjQ4NzdlYmI4OWM3MGNiZjQwYjk3NTg1Yzc3NTg1NzBlNmJi
YS4uY2IzMDYwODUyOGFlNDQ3ZjgyY2IzOTMwOWEwNDM5OTFkZTAwOTc1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoY29uc3QgUwogICAgICAgICAKICAg
ICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZC5pbXBsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2xvc2VkVmFyaWFibGUtPmlzVW5pcXVlKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjbG9zZWRWYXJpYWJsZS0+aXNTeW1ib2woKSk7CiAgICAgfQogICAgIGJvZHktPm92ZXJyaWRl
TmFtZShuYW1lKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNl
LCBib2R5LCBraW5kLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA5Yjg4OTZiOTY4MDE0OTEz
ZjQ2YjMyYzQ4MGUwNTc4OTYzNzlkZmE0Li43YjQ3ODNhMWYwMTJlMWMyM2YwYWE4MWJiZjVmNjE3
ZjNjZWIwMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC0zMSwxMiArMzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVm
aW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKHZtLCAjbmFtZSks
IG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKEFTQ0lJ
TGl0ZXJhbCgiU3ltYm9sLiIgI25hbWUpKSkpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1F
UyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNu
YW1lIyNQcml2YXRlTmFtZTs7CisjZGVmaW5lIElOSVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1l
KSAsIG1fIyNuYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1l
IyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpKQorI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSWRlbnRpZmllciBtXyMjbmFtZTsg
Y29uc3QgSWRlbnRpZmllciBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNv
bnN0IElkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25h
bWUjI1ByaXZhdGVOYW1lOyB9CiAKKyNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX1NZTUJPTFMo
bmFtZSkgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpLCBtXyMjbmFtZSMjU3ltYm9sKElk
ZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoQVNDSUlMaXRlcmFsKCJTeW1ib2wuIiAjbmFt
ZSkpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgREVDTEFSRV9CVUlM
VElOX05BTUVTKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NFU1NPUihuYW1lKSBcCisgICAgREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1ib2w7IH0KKwogI2Rl
ZmluZSBJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRv
UHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOwog
I2RlZmluZSBJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGlj
VG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUp
OwogICAgIApAQCAtNDgsMTEgKzU0LDE0IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAg
IDogbV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikK
ICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJ
TFRJTl9OQU1FUykKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJU0Vf
QlVJTFRJTl9TWU1CT0xTKQogICAgIHsKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElT
RV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QUklWQVRFX1RPX1BV
QkxJQ19FTlRSWSkKICAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCiAgICAgICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9f
UFJJVkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkK
ICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CkBAIC02MCwxMSArNjksMTMgQEAgY2xhc3MgQnVpbHRpbk5hbWVzIHsK
ICAgICAKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlM
VElOX0lERU5USUZJRVJfQUNDRVNTT1IpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NP
UikKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChERUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKQogCiBwcml2YXRlOgogICAgIElk
ZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKyAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChE
RUNMQVJFX0JVSUxUSU5fU1lNQk9MUykKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBjb25zdCBJZGVudGlmaWVyKiwgSWRlbnRpZmllclJlcEhhc2g+IEJ1aWx0aW5OYW1l
c01hcDsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wdWJsaWNUb1ByaXZhdGVNYXA7CiAgICAgQnVp
bHRpbk5hbWVzTWFwIG1fcHJpdmF0ZVRvUHVibGljTWFwOwpAQCAtNzMsNyArODQsOSBAQCBjbGFz
cyBCdWlsdGluTmFtZXMgewogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9OQU1FUwogI3VuZGVmIElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUwogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVS
X0FDQ0VTU09SCi0KKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUworI3VuZGVmIElOSVRJ
QUxJU0VfQlVJTFRJTl9TWU1CT0xTCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9BQ0NF
U1NPUgogCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKQEAgLTkxLDcgKzEwNCw3IEBA
IGlubGluZSBjb25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSBjCiAgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlmaWVyOwog
fQogCi0gICAgCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDBhYmJkYmVkMWQ3
NGQ4MTllYjIzYjFjYjYyMWI1YjhhMjBmYWVhODcuLjc0MzBmYjEyYjBhZTFhYjRhYTAzMzUzZjVk
ZjhkZjg4YzRlOTJlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBWZWN0b3I8SWRlbnRp
ZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKICAgICB2YXJpYWJsZXMu
cmVzZXJ2ZUNhcGFjaXR5KG51bVZhcmlhYmxlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1WYXJpYWJsZXM7ICsraSkgewotICAgICAgICBBU1NFUlQodmFyU3RhY2tbaV0uZmlyc3Qu
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKHZhclN0YWNrW2ldLmZpcnN0Lmlt
cGwoKS0+aXNBdG9taWMoKSB8fCB2YXJTdGFja1tpXS5maXJzdC5pbXBsKCktPmlzU3ltYm9sKCkp
OwogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAg
ICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwpAQCAtMjQwNSwxNCArMjQw
NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1pdENhdGNo
KFRyeURhdGEqIHRyeURhdGEsIFJlZ2lzdGVySUQqCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZW1p
dE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92bSwgbWVz
c2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBtZXNz
YWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodHJ1ZSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50
KElkZW50aWZpZXIobV92bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhtX3ZtLCBtZXNzYWdlKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmFsc2UpOwogfQogCkBAIC0yNTc5LDcgKzI1NzksNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpCiAgICAgaWYgKCFpc1N0
cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3Rh
dGljX2Vycm9yKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAgICAgCkBAIC0yNTg4LDcgKzI1
ODgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUg
PSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3ViamVjdC5nZXQoKSwg
c3ViamVjdE5vZGUpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBzdWJqZWN0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JQcml2YXRlTmFtZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVy
YXRvclN5bWJvbCk7CiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51
bGxwdHIpOwogICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBzdWJqZWN0Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElk
ZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50
aWZpZXJzLmNwcAppbmRleCA2MGE0OTRkZGNmNGIxNTM4MWFjYWYwYzU4MTg5NjQ2NGU3YTJlNDNi
Li42NWMzMDFkYmVlMTZkM2Y3NGI1NDI3YjdhMGY2OTI0ODg0MWM0ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgRGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBD
b21tb25EYXRhKiBjb21tb25EYXRhKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fk
ZGVkSWRlbnRpZmllcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nSW1wbCogcmVwID0g
bV9hZGRlZElkZW50aWZpZXJzW2ldOwogICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExlYXN0T25l
UmVmKCkpOwotICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcigmdm0sIHJlcCkpOworICAgICAgICBjb21tb25EYXRhLT5kZmdJZGVudGlmaWVycy5hcHBl
bmQoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHJlcCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAppbmRleCBiMjk3NGFiZmU5ZmNjODY2ZTM5MjAwNGE5OWVmOGQ5NmQ1NWYzZDUzLi4yMWIw
OGUzOGYzOWE3ZTY5NTVlMTg0ZjI5NWE4NDBiYTE2ZjMxZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApA
QCAtMjAzLDIwICsyMDMsMjAgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rp
b25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFN0cmluZyBzY3JpcHRJRCA9IFN0cmlu
Zzo6bnVtYmVyKHNvdXJjZUNvZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CiAgICAgSlNPYmplY3Qq
IGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgbG9jYXRpb24tPnB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzY3JpcHRJZCIpLCBqc1N0cmlu
ZyhleGVjLCBzY3JpcHRJRCkpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0g
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1
bW5OdW1iZXIiKSwganNOdW1iZXIoY29sdW1uTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzY3JpcHRJZCIp
LCBqc1N0cmluZyhleGVjLCBzY3JpcHRJRCkpOworICAgIGxvY2F0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibGluZU51bWJlciIpLCBqc051
bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW5OdW1iZXIiKSwganNOdW1iZXIoY29s
dW1uTnVtYmVyKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihl
eGVjLCAibG9jYXRpb24iKSwgbG9jYXRpb24pOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9u
KTsKIAogICAgIFN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhlYyk7CiAgICAgaWYgKCFu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmluZyhleGVjLCBuYW1lKSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
Im5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1l
ID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKGV4ZWMpOwogICAgIGlmICghZGlzcGxheU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOwogCiAg
ICAgLy8gRklYTUU6IHByb3ZpZGUgZnVuY3Rpb24gc2NvcGUgZGF0YSBpbiAic2NvcGVzUmF3IiBw
cm9wZXJ0eSB3aGVuIEpTQyBzdXBwb3J0cyBpdC4KICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvODcxOTI+IFtKU0NdIGV4cG9zZSBmdW5jdGlvbiAoY2xvc3VyZSkgaW5uZXIgY29udGV4dCB0
byBkZWJ1Z2dlcgpAQCAtMjI3LDggKzIyNyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNPYmplY3QqIGNv
bnN0cnVjdEludGVybmFsUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIHZhbHVlKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzgxLDggKzM4MSw4IEBAIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7
CiAgICAgZm9yIChhdXRvIGl0ID0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+YmVnaW4oKTsgaXQg
IT0gd2Vha01hcC0+d2Vha01hcERhdGEoKS0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgSlNPYmpl
Y3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGVudHJ5LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5IiksIGl0LT5rZXkpOwot
ICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZh
bHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5IiksIGl0LT5rZXkpOworICAg
ICAgICBlbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInZhbHVlIiksIGl0LT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChleGVjLCBmZXRjaGVkKyssIGVudHJ5KTsKICAgICAgICAgaWYgKG51bWJlclRvRmV0
Y2ggJiYgZmV0Y2hlZCA+PSBudW1iZXJUb0ZldGNoKQogICAgICAgICAgICAgYnJlYWs7CkBAIC00
MzEsNyArNDMxLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbnRy
aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBlbnRyeS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInZhbHVlIiksIG5leHRWYWx1
ZSk7CisgICAgICAgIGVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAidmFsdWUiKSwgbmV4dFZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIGVudHJ5KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHAKaW5kZXggNGJmZmFkMWUxMDAwYjkxOWJmNTQ4YWZkYjQ3NTQ2MTI0ZTEzMDlm
Yy4uYjFjZTBhMTM4YmMwNWYxMDA3NzE1NzVlOWEzYjliNWM1NDc5MGQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmEKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJ3ZWFrTWFwRW50cmllcyIsIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcywgRG9udEVudW0s
IDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oIml0ZXJhdG9yRW50cmllcyIsIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMsIERvbnRFbnVtLCAx
KTsKIAotICAgIElkZW50aWZpZXIgZXZhbHVhdGVJZGVudGlmaWVyKCZ2bSwgImV2YWx1YXRlIik7
CisgICAgSWRlbnRpZmllciBldmFsdWF0ZUlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImV2YWx1YXRlIik7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIGV2YWx1YXRlSWRl
bnRpZmllci5zdHJpbmcoKSwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVF
dmFsdWF0ZSk7CiAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKaW5kZXggNThiYjY4YjBh
MWYzODhmMjFjYWY4YjVmNjIyY2FkNzdiMjA3OWUyZC4uNDgyODM4NjUyNGRjMjZhYjQ2Yzg0MTM1
NjgzMWM3MGRjNmU5ZmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApA
QCAtNjMsNyArNjMsNyBAQAogCiAjZGVmaW5lIEpTQ19OQVRJVkVfTk9OX0lOREVYX0FDQ0VTU09S
KGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcykgXAogICAgIHsgXAotICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBqc05hbWUpOyBcCisgICAgICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBqc05hbWUpOyBcCiAgICAgICAgIEdl
dHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsgXAogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBpZGVudGlmaWVyLnN0cmluZygpLCBjcHBOYW1lKTsgXAog
ICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggMjdkYzA5OWJkYjU4YjA3NDNhM2JiNmUxNWEyZDMw
ZDUzYjAxYmNiMi4uZjlmNmMxYzQ5YWFhNjA2YTM3MzM0OGI2ZTJkOGZjMjcwZmNkZThiNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMTksMTEgKzExOSwxMSBAQCBjbGFzcyBDcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGdW5jdG9yIHsKIHN0YXRpYyB2b2lkIGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QsIGludCogbGluZU51bWJlciwgaW50KiBjb2x1bW5OdW1iZXIsIFN0cmluZyogc291cmNl
VVJMKQogewogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJ
bnNwZWN0b3I6IFNob3VsZCBub3QgbmVlZCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5n
IGV4Y2VwdGlvbnMKLSAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSk7CisgICAgSlNWYWx1
ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwogICAgICpsaW5lTnVtYmVyID0gbGlu
ZVZhbHVlICYmIGxpbmVWYWx1ZS5pc051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihl
eGVjKSkgOiAwOwotICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdl
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7CisgICAgSlNW
YWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNvbHVtbiIpKTsKICAgICAqY29sdW1uTnVt
YmVyID0gY29sdW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5W
YWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBl
eGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJz
b3VyY2VVUkwiKSk7CisgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNv
dXJjZVVSTCIpKTsKICAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJM
VmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSA6IEFTQ0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRp
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDY0NTE2NTBkNjA4MmVlZDEzYWMxYmQyNTcxMTI5NGQyMWRlNjJkM2YuLjU4Yjg2MzZkODg2
ZGJiMmU4NTI5MWIyOTM1MGQ5Y2Y0ZTE0MjQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvCiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBJZGVudGlmaWVy
IGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoYmFzZSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc1VuaXF1ZSgp
ID8gSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVp
ZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJCiAgICAgCiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSWRlbnRpZmll
ciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJl
c3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3Qp
OwogICAgIApAQCAtMjMwLDcgKzIzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAg
SWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRQogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0
KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBA
IC0yNTcsNyArMjU3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGZhbHNlLCBleGVjLT5jb2RlQmxvY2so
KS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5w
dXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbgogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2Nr
KCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBhc09i
amVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWIKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAK
LSAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMzM1LDcgKzMzNSw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRl
bnRpZmllciBpZGVudCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC0zNTksNyArMzU5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlm
aWVyIGlkZW50KHZtLCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgSWRlbnRpZmllciBpZGVu
dCh2bSwgdWlkKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3QKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiBleGVjLCBTdHIKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMmIyZDFiN2JhZTc4
MjdiMDA3YmNlZjJjZjBkZWUxZTc2MmI3Y2M3ZC4uZmE5NGFiNjgzNTIyNmE2ODJlYmY0N2Q2YmUz
NmE2YTBkODI0MmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYxOCwxMSArNjE4LDExIEBA
IGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRS
b290LCAyKTsKICAgICAgICAgCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0
aGlzLCBJZGVudGlmaWVyKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1Ry
dWVJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcigmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwgSXNGaW5hbFRpZXJJ
bnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgInByZWRpY3RJbnQzMiIpLCAw
LCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERv
bnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50
aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMs
IERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVu
Y3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpc0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlMiwg
SXNGaW5hbFRpZXJJbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDIsIFNldEludDMySGVh
cFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5z
aWMsIERvbnRFbnVtIHwgSlNDOjpGdW5jdGlvbik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImVmZmVjdGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFk
ZXIsIDApOwpAQCAtNjQ0LDIwICs2NDQsMjAgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4
KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsK
LSAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogICAgICAgICAKLSAgICAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxFeGVjKCksICJjb25zb2xlIiksIGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIHZv
aWQgYWRkRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRp
Zmllci5zdHJpbmcoKSwgZnVuY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25z
dHJ1Y3RhYmxlRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyKCZ2bSwgbmFtZSk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBuYW1lKTsKICAgICAgICAgcHV0RGlyZWN0KHZt
LCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRl
bnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAg
IH0KIH07CkBAIC04ODksNyArODg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChpKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIEpTVmFs
dWUgZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xMjcwLDcgKzEyNzAs
NyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVz
XG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSktPnZh
bHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0aW9u
OiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgc3RhY2tJRChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgInN0YWNrIik7CisgICAgICAgICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKICAg
ICAgICAgICAgIEpTVmFsdWUgc3RhY2tWYWx1ZSA9IGV2YWx1YXRpb25FeGNlcHRpb24uZ2V0KGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdGFja0lEKTsKICAgICAgICAgICAgIGlmICghc3Rh
Y2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiJXNc
biIsIHN0YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFiMDE1MDFiMTI5MTdkOWVlODBl
ZDMxNTIzZjkyNThkYzQ0MmRhMmUuLmVkZmQ2NzAxZGMwZjNkNTkxY2IzNzhkMzk5OGNiN2Q0MmY5
MDRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAg
QVNTRVJUKGJpdHdpc2VfY2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3Iu
YmVnaW4oKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJp
dEJ1ZmZlciA9PSAzMik7CisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVm
ZmVyID09IDgpOwogfQogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IDQzZWQ3ZThmMmUxODc0OTJlZjBiMDg1NWVjZmI3MjY3OTg1OTE3
N2EuLmZkYTkxZWQ1OTkwY2I2ZTRmMmNiNzhhYTZhNGIyZDhjMmMwYzQ3MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTE3OSw3ICsxNzksNyBAQCBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCiBjb25zdCBMTEludFJldHVy
blBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KLWNvbnN0
IEhhc2hGbGFnczhCaXRCdWZmZXIgPSAzMgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDgK
IAogIyBDb3BpZWQgZnJvbSBQcm9wZXJ0eU9mZnNldC5oCiBjb25zdCBmaXJzdE91dE9mTGluZU9m
ZnNldCA9IDEwMApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRl
eCBjNDhlNDFjNTg2NWRmZDUwMDc0ZjQ5ZGJhMTNkYzc0NjI5NjYzZWQxLi4wYzY4MDc4ZTNiOTZk
MzU4ZDI0NmJkOTRjNjA0NTI1NDkzMjViZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaApAQCAtNTcxLDcgKzU3MSw3IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgIHsKICAgICAgICAgaWYgKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRl
bnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIEFTU0VSVChpZGVudC0+
aW1wbCgpLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUKGlkZW50LT5pbXBsKCktPmlzQXRv
bWljKCkgfHwgaWRlbnQtPmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgICAgIG1fc2NvcGUubV92
YXJEZWNsYXJhdGlvbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCppZGVudCwgYXR0cnMpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1ZjUxZGEy
NGI0Mzg1MzliN2Q1YjBmNDk1NDE0OTA5NTQ2MjcyNzI2Li4yMDQwNTEyMmJiMTU2ODAxNDFiNDU5
YTMyYzViYzZkNzI0ZmJhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yOTEsMTAgKzI5MSwxMCBAQAogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7CiAgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewotICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwg
dmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJp
YWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMuaW1wbCgpKQpAQCAtNTIzLDcgKzUyMyw3IEBACiAgICAgQVNTRVJUKCFuYW1lLmlzRW1w
dHkoKSk7CiAgICAgQVNTRVJUKCFuYW1lLmlzTnVsbCgpKTsKICAgICAKLSAgICBBU1NFUlQobmFt
ZS5pbXBsKCktPmlzQXRvbWljKCkpOworICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMo
KSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7CiAgICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpCiAgICAgICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3Qg
dG8gYSB2YXJpYWJsZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNDI3Yjg0
Y2RhNTMyMzFhNTQ3MDZmNGNlZmVjM2Q4MWQ3OGI1MGRkYi4uNDBlY2U1M2EwYjY0NGMwODIwNzlj
MjJkZjBmOTQzYmMyNWRiZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaApAQCAtNzMsMjAgKzczLDIwIEBACiAgICAgICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIHZtLT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewotICAg
ICAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywg
bGVuZ3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID09IDEp
IHsKICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVy
c1tjaGFyYWN0ZXJzWzBdXSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAg
ICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVu
Z3RoKSk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIG1fc2hvcnRJZGVu
dGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAg
ICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07CiAgICAg
ICAgIGlmIChpZGVudCAmJiBJZGVudGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycywgbGVuZ3RoKSk7CisgICAg
ICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJh
Y3RlcnMsIGxlbmd0aCkpOwogICAgICAgICBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
cy5sYXN0KCk7CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSkgewogICAgICAgICAgICAgaWYgKElkZW50aWZpZXIqIGlkZW50ID0gbV9zaG9ydElkZW50
aWZpZXJzW2NoYXJhY3RlcnNbMF1dKQogICAgICAgICAgICAgICAgIHJldHVybiAqaWRlbnQ7Ci0g
ICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKHZtLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gJm1faWRlbnRpZmllcnMubGFzdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogICAgICAgICB9CkBAIC0xMTYs
NyArMTE2LDcgQEAKICAgICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmll
ckFyZW5hOjptYWtlTnVtZXJpY0lkZW50aWZpZXIoVk0qIHZtLCBkb3VibGUgbnVtYmVyKQogICAg
IHsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcih2bSwgU3RyaW5nOjpu
dW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOworICAgICAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdChudW1iZXIpKSk7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3Qo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBhZDhiNzU5MGQ4NWU2NTZh
OTEyYjRhYTk5MTc2MGZhZDM2MzA2MGJmLi5mYzM1YTlmYzUxMjg0YzA1NGQwMGZkZTdmZjg2Y2Zm
NzAxOTI0ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZv
aWQgQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAg
IHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBmNzY4
NjhjMDNlYTUzMzgwMTBhMmI3YjA2MWZmMGQ0MjkwODU0YmMyLi5iODYyNjc3MDFmNDA5OTA2ODI1
NTkzYzNmOWQ2NDViZDFmYTM2ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNTksNyArNTksNyBA
QCB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFBy
b3RvdHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIGFycmF5SXRlcmF0b3JQcm90b0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDAp
OwogfQogCiBib29sIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiMmZkNzExODFkMGMxYjdlYTYwNzBkNzg5Mzcy
MWYzY2VlNmE0Nzc2Li44MTQ4YTMxYWI3NmI4NDI3Zjg3OGUwZjc3YTVhZjJkZGY1NWM0MDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90
eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBE
b250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKIH0KIAog
Ym9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQpAQCAtNTMxLDcgKzUzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgp
ICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2
NF90PihuKSkudG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCmluZGV4IGViOTVmNzg0Y2UyYmYyMWI3NzViY2Q4MzU0YjU4MjRhNjBlZWEyOGYu
LjgwN2Q1MWY5MjM5ZGUxMTRmMDc0NjhlZGYwMjMxNmVjM2QxNmU0MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTQwLDkg
KzE0MCw5IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgaWYgKEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAotICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lKSB7CisgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKSB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJndW1lbnRz
RnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1
bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwogICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNTZkZjM0NTAyODdmZjk5OWEzOGZjZjRjYjcx
NTBlODYxYTU2NDNlOC4uMGIyOGQ1Yzg3OTY2NmNiMTUzYjM4YjM4N2VmN2YxMDdjNWJlODBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcApAQCAtMjIsMjUgKzIyLDI4IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUo
bmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUp
ICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlf
TkFNRShuYW1lKSAsIG5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUo
bmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5h
bWUoKSkKKyNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9i
dWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQogICAgICwgZW1wdHlJ
ZGVudGlmaWVyKElkZW50aWZpZXI6OkVtcHR5SWRlbnRpZmllcikKLSAgICAsIHVuZGVyc2NvcmVQ
cm90byh2bSwgIl9fcHJvdG9fXyIpCi0gICAgLCB0aGlzSWRlbnRpZmllcih2bSwgInRoaXMiKQot
ICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcih2bSwgInVzZSBzdHJpY3QiKQorICAgICwgdW5kZXJz
Y29yZVByb3RvKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iKSkKKyAgICAs
IHRoaXNJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlzIikpCisgICAg
LCB1c2VTdHJpY3RJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2Ugc3Ry
aWN0IikpCiAgICAgLCBtX2J1aWx0aW5OYW1lcyhuZXcgQnVpbHRpbk5hbWVzKHZtLCB0aGlzKSkK
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdP
UkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCisgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9T
WU1CT0wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDZmMzRmYTkzMGQzYjE2Mjg3NTgwYmE0NWRkNWI1N2Q0MDdl
ZDNlNDYuLjc5OTBiM2YxNGQyMTI5ODQ5MzA0MzE4ZTllYzU4NjNiODFkZjUyY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MjM0LDcgKzIzNCw2IEBACiAgICAgbWFjcm8odW5zY29wYWJsZSkKIAogI2RlZmluZSBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCi0gICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFj
cm8pIFwKICAgICBtYWNybyhpdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwKQEAgLTI5OCw3
ICsyOTcsMTEgQEAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BF
UlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7
CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TAotICAgICAgICAKKworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VM
TF9LTk9XTl9TWU1CT0xfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjU3ltYm9s
OworICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dO
X1NZTUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dO
X1NZTUJPTF9HTE9CQUwKKwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGlj
TmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA5MzBiNmZhZjZiYzFmYzY1ZGU5ZTYxYTFmYzdlNjJh
OWU1ZmM2ODBlLi4zNjE1NmExZTA1MTY4MWY1Y2ViNTYxODJiNmU0ZWI5NDI5YjhmNTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xMzcsMTcgKzEzNywxNyBA
QCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTbwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0g
c291cmNlLnByb3ZpZGVyKCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCi0gICAgICAg
IGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVyKHZtLCBsaW5lUHJvcGVydHlOYW1lKSwg
anNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5w
dXREaXJlY3QoKnZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBsaW5lUHJvcGVydHlOYW1l
KSwganNOdW1iZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3Vy
Y2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIGVycm9yLT5wdXREaXJlY3QoKnZtLCBJZGVudGlmaWVy
KHZtLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyh2bSwgc291cmNlVVJMKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqdm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKHZt
LCBzb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiBlcnJvcjsK
IH0KIAogCiBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJv
cikKIHsKLSAgICByZXR1cm4gZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgbGluZVByb3BlcnR5TmFtZSkpCi0gICAgICAgIHx8IGVycm9yLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBl
cnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBsaW5l
UHJvcGVydHlOYW1lKSkKKyAgICAgICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKIEpT
T2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDY5MTA1YjY4
ZDA5N2M5YmRmOGY1NzdiMTdjOWM1MjhjMTg0ZWFkZTkuLjVlMTg1OThmODcxYzQ2OWYyYjlkMzg2
ZDQ2NDdlNTFmOTA0MjUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04Miw4ICs4Miw3IEBAIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNP
YmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICAKLSAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc1Vu
aXF1ZSgpKSB7CisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNTeW1ib2woKSkgewogICAgICAgICBT
dHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAi
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oCmluZGV4IDUxNmI3YWE4MDYzMTU5MTg2OTFmZGZiYWJmYjA0YmZhMWJj
YzE3NTQuLjBjODk5NWM3YjNhZTRhMmQxMmMzYjFhMTY5ZmM0NjhhMWViZWZiYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaApAQCAtNTgsOSArNTgsOSBAQAogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKLSAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRl
TmFtZSkgeworICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCkgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwotICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIGFyZ3VtZW50c0Z1bmNJdGVy
YXRvciwgRG9udEVudW0sIDApOworICAgICAgICB0aGlzT2JqZWN0LT5KU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVudHNGdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKICAgICAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmlu
ZGV4IDAxMzJkMGU3NTI4ZWEzNjNiOGMzMTM2ZWNlNWIwMDhjNTM5YTM4ZWYuLmRlNGFjYmMyYTU3
NWI2NjgwOWU0MjcxNjBhYWE0ZDM5NjY5OWM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTM4LDIzICszOCw2IEBAIGNsYXNzIElkZW50aWZpZXIg
ewogICAgIGVudW0gRW1wdHlJZGVudGlmaWVyRmxhZyB7IEVtcHR5SWRlbnRpZmllciB9OwogICAg
IElkZW50aWZpZXIoRW1wdHlJZGVudGlmaWVyRmxhZykgOiBtX3N0cmluZyhTdHJpbmdJbXBsOjpl
bXB0eSgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9CiAKLSAgICAv
LyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQo
ZXhlYywgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7
IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1f
c3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNB
dG9taWMoKSk7IH0KLQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1w
bCopOwotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0g
ICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmlu
ZyhhZGQoZXhlYywgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsg
fQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9z
dHJpbmcoYWRkKGV4ZWMsIHMuaW1wbCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQotICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBz
KSA6IElkZW50aWZpZXIoZXhlYywgQXRvbWljU3RyaW5nKHMpKSB7IH0KLQotICAgIElkZW50aWZp
ZXIoVk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0s
IHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAg
ICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJp
bmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9Ci0gICAgSWRlbnRpZmllcihWTSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmlu
ZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0K
LSAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZCh2
bSwgcy5pbXBsKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0K
ICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAg
ICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21pY1N0cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9CiAKQEAgLTYzLDEyICs0NiwzMyBA
QCBjbGFzcyBJZGVudGlmaWVyIHsKICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuYXNjaWkoKTsgfQogICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLnV0ZjgoKTsgfQogCi0gICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShjb25zdCBQcml2
YXRlTmFtZSYgbmFtZSkKLSAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgcmVzdWx0OwotICAgICAg
ICByZXN1bHQubV9zdHJpbmcgPSBuYW1lLnVpZCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KKyAgICAvLyBUaGVyZSdzIDIgZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBJZGVudGlmaWVy
IGZyb20gc3RyaW5nLCAoMSkgZnJvbVN0cmluZyBhbmQgKDIpIGZyb21VaWQuCisgICAgLy8gVGhl
eSBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncyBpbiBrZWVwaW5nIG9yIGRpc2NhcmRpbmcgc3ltYm9s
LW5lc3Mgb2Ygc3RyaW5ncy4KKyAgICAvLyAoMSk6IGZyb21TdHJpbmcKKyAgICAvLyBKdXN0IGNv
bnN0cnVjdCBJZGVudGlmaWVyIGZyb20gc3RyaW5nLiBTdHJpbmcgaGVsZCBieSBJZGVudGlmaWVy
IGlzIGFsd2F5cyBhdG9taXplZC4KKyAgICAvLyBTeW1ib2wtbmVzcyBvZiBTdHJpbmdJbXBsKiwg
d2hpY2ggcmVwcmVzZW50cyB0aGF0IHRoZSBzdHJpbmcgaXMgaW50ZWRlZCB0byBiZSB1c2VkIGZv
ciBFUzYgU3ltYm9scywgaXMgZGlzY2FyZGVkLgorICAgIC8vIFNvIGEgY29uc3RydWN0ZWQgSWRl
bnRpZmllciBuZXZlciByZXByZXNlbnRzIGEgc3ltYm9sLgorICAgIC8vICgyKTogZnJvbVVpZAor
ICAgIC8vIGBTdHJpbmdJbXBsKiB1aWRgIHJlcHJlc2VudHMgZXRoZXIgU3RyaW5nIG9yIFN5bWJv
bCBwcm9wZXJ0eS4KKyAgICAvLyBmcm9tVWlkIGtlZXBzIHN5bWJvbC1uZXNzIG9mIHByb3ZpZGVk
IFN0cmluZ0ltcGwqIHdoaWxlIGZyb21TdHJpbmcgZGlzY2FyZHMgaXQuCisgICAgLy8gVXNlIGZy
b21VaWQgd2hlbiBjb25zdHJ1Y3RpbmcgSWRlbnRpZmllciBmcm9tIFN0cmluZ0ltcGwqIHdoaWNo
IG1heSByZXByZXNlbnQgc3ltYm9scy4KKworICAgIC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Cisg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7CisgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IExDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7
CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5n
SW1wbCopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKKworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21V
aWQoVk0qLCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21VaWQo
RXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
VWlkKGNvbnN0IFByaXZhdGVOYW1lJik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVM
Q2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVy
biBJZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQogCkBAIC04MSw2ICs4NSw3
IEBAIGNsYXNzIElkZW50aWZpZXIgewogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVy
biBpbXBsKCktPmlzU3ltYm9sKCk7IH0KIAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC0xMDUsNiAr
MTEwLDIwIEBAIGNsYXNzIElkZW50aWZpZXIgewogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmc7CiAKKyAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAg
dGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorICAgIElkZW50aWZpZXIoVk0qIHZt
LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhh
ZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkp
OyB9CisKKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgp
IDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbWljKCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBp
bnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJp
bmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRv
bWljU3RyaW5nSW1wbCopOworICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6
IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwoKSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwo
KS0+aXNBdG9taWMoKSk7IH0KKyAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVw
KSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b21pYygpKTsgfQorCisgICAgZW51bSBVbmlxdWVJZGVudGlmaWVyRmxhZyB7IFVuaXF1ZUlkZW50
aWZpZXIgfTsKKyAgICBJZGVudGlmaWVyKFVuaXF1ZUlkZW50aWZpZXJGbGFnLCBTdHJpbmdJbXBs
KiB1aWQpIDogbV9zdHJpbmcodWlkKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzU3ltYm9s
KCkpOyB9CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sJiBvayk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IDc0NzJk
ODQ3ZDc1YjMwM2U2NDU0ZjA2ZDY5ZWQ2ZmM1ZWU2OTIzYWMuLjQwNjIyMWE2M2FhZDk2NWY0NzMw
ZTQ2ODgzNDczNjdjM2IyNjcwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSWRlbnRp
Zmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEF0b21pY1N0cmluZ0ltcGwqIHN0cmlu
ZykKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhl
Yyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5n
LT5sZW5ndGgoKSB8fCBBdG9taWNTdHJpbmc6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcp
LCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy0+bGVuZ3RoKCkgfHwgc3RyaW5nLT5pc1N5
bWJvbCgpIHx8IEF0b21pY1N0cmluZzo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJU
aGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogI2VuZGlmCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBJ
ZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKGV4ZWMpOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgQXRvbWljU3RyaW5nOjppc0luQXRvbWljU3Ry
aW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IHN0cmluZy5pbXBsKCktPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nOjppc0lu
QXRvbWljU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUgYXRvbWljIHN0cmluZyBjb21l
cyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogI2VuZGlmCkBAIC03MCw2ICs3MCw3MCBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVy
biAqQXRvbWljU3RyaW5nOjphZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcigqdm0sIHIpOwogfQog
CitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tVWlkKFZNKiB2bSwgU3RyaW5nSW1w
bCogdWlkKQoreworICAgIGlmICghdWlkIHx8ICF1aWQtPmlzU3ltYm9sKCkpCisgICAgICAgIHJl
dHVybiBJZGVudGlmaWVyKHZtLCB1aWQpOworICAgIHJldHVybiBJZGVudGlmaWVyKFVuaXF1ZUlk
ZW50aWZpZXIsIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21V
aWQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGZyb21V
aWQoJmV4ZWMtPnZtKCksIHVpZCk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmIG5hbWUpCit7CisgICAgcmV0dXJuIElkZW50aWZp
ZXIoVW5pcXVlSWRlbnRpZmllciwgbmFtZS51aWQoKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoVk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKK3sK
KyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgY2hhcmFjdGVycyk7Cit9CisKK3RlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyc0NvdW50XSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcigmZXhlYy0+dm0oKSwgY2hhcmFj
dGVycyk7Cit9CisKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0q
IHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cih2bSwgcywgbGVuZ3RoKTsKK30KKworaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVy
biBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
cmV0dXJuIElkZW50aWZpZXIodm0sIHN0cmluZy5pbXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5p
bXBsKCkpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljU3RyaW5nKQoreworICAgIHJl
dHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7Cit9CisKK2lubGluZSBJZGVudGlm
aWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNT
dHJpbmcmIGF0b21pY1N0cmluZykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBhdG9t
aWNTdHJpbmcpOworfQorCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcykKK3sKKyAgICByZXR1cm4gSWRlbnRpZmll
cihleGVjLCBBdG9taWNTdHJpbmcocykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIElkZW50aWZpZXJJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNDg3NTZiYTNiMzNmNmNkZTg5MDRlMDFmN2Y3YjA5MzRk
ZDNlMGFkNy4uN2Q2MWNhMmQ5MDIxZDgwYzdlMmM5NjcwZGZkYjIxNTY3MGNlMjU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIzMyw4ICsy
MzMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKGF0b21pYykiKTsKICAgICAgICAgICAgICAg
ICBpZiAoaW1wbC0+aXNBdG9taWMoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIg
KGlkZW50aWZpZXIpIik7Ci0gICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzVW5pcXVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bmlxdWUpIik7CisgICAgICAgICAgICAg
ICAgaWYgKGltcGwtPmlzU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
IChzeW1ib2wpIik7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiAodW5yZXNvbHZlZCkiKTsKICAgICAgICAgICAgIG91dC5wcmludCgiOiAiLCBpbXBsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CmluZGV4IGE0MGY5OGY4OTkzYjJiZGFjZTY4YjE1MjhmNDg4YTNiZWY0MzE4ZjcuLjcyYzBjZDlk
MmY1ZWRjZjk2NzMxZTcyZWQ5ZTFiODZmZDkzNzYzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjE4LDcgKzYxOCw3IEBA
IEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1ZhbHVlOjp0b1Byb3BlcnR5S2V5KEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdG9QcmltaXRpdmUoZXhl
YywgUHJlZmVyU3RyaW5nKTsKICAgICBpZiAocHJpbWl0aXZlLmlzU3ltYm9sKCkpCi0gICAgICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1l
KCkpOworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChhc1N5bWJvbChwcmltaXRp
dmUpLT5wcml2YXRlTmFtZSgpKTsKICAgICByZXR1cm4gcHJpbWl0aXZlLnRvU3RyaW5nKGV4ZWMp
LT50b0lkZW50aWZpZXIoZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhNWVhYWZiMWJlN2NjZGZiMmRmYmYxOGNh
YTMyY2RlMjI4MjRhMGY0Li5hOWQ1ZjRmMWUwYzdhMzRmY2U0YTBjYzU3NTA2OGYyNTJkYTNiMDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0eXBlZEFycmF5SW5kZXggPSBOVU1CRVJfT0ZfVFlQ
RURfQVJSQVlfVFlQRVM7IHR5cGVkQXJyYXlJbmRleC0tOykgewogICAgICAgICBtX3R5cGVkQXJy
YXlzW3R5cGVkQXJyYXlJbmRleF0ucHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdHlwZWRBcnJheUluZGV4XSwgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcihleGVjLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5
cGVkQXJyYXlJbmRleF0tPm5hbWUoZXhlYykpLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVk
QXJyYXlJbmRleF0sIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0eXBlZEFycmF5SW5kZXhdLT5uYW1lKGV4ZWMpKSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0
eXBlZEFycmF5SW5kZXhdLCBEb250RW51bSk7CiAgICAgfQogICAgIAogICAgIEpTRnVuY3Rpb24q
IGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5
TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwpA
QCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVBy
b3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3Jl
YXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKGV4ZWMsICJjb25zb2xlIiksIGNvbnNvbGVPYmplY3Qs
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiY29uc29sZSIpLCBjb25zb2xlT2JqZWN0LCBEb250RW51bSk7
CiAKICAgICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmlu
ZGV4IDU4NzRmMjMzMzdlYTU1NDc2OTY1MGY0MGE4MDk0YmE0Zjk2OWVmODUuLmMxMTA3ZTZkNjY2
NDQ1YWM0OTgyY2U1ZGU5ZTkwZjk4ZDkxZWY5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTExMiw3ICsx
MTIsOSBAQCB2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlkKGl0LT52YWx1ZS5zY29wZU9m
ZnNldCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAg
aWYgKGl0LT5rZXktPmlzU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGl0LT5r
ZXkuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBTa2lwIHRoZSBKU0Vudmlyb25t
ZW50UmVjb3JkIGltcGxlbWVudGF0aW9uIG9mIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNmZGQ2YmUx
MzkxM2IyYzYyMzc0ZmMwNjkxYWVlZDAxYzUxMzYwYjEuLjUyM2QxMmE5MjAzYjcwMzM4YzMwZDE1
MjhkNTBmZjFiYTYwMjYxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IHRhYmxlLT5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoKCEoaXRlci0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IHNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpICYmICEoKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCi0gICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcigmdm0sIGl0ZXIua2V5KCkp
KTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTY3OSw3ICsx
Njc5LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5l
bmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaXRlci52YWx1ZSgpLCB0aGlzLCBJZGVudGlm
aWVyKCZ2bSwgaXRlci5rZXkoKSksIHNsb3QpOworICAgICAgICAgICAgICAgIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGl0ZXIudmFsdWUoKSwg
dGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGl0ZXIua2V5KCkpLCBzbG90KTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggM2Y1ZTI1ZDE1YjAzZTYwZDU3OGM4MzRjM2ZkNTA5Mjc2OGFkYTBkNC4uNzg2Nzc1YTBk
YzQ5YzEyMzA3ZGFmNDUyMjE2YWI3ODM0ZTFhYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBpbmxpbmUgaW50IG9mZnNl
dFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIAogQUxXQVlTX0lOTElORSBJ
ZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAg
ICByZXR1cm4gSWRlbnRpZmllcigmdm0sIG5hbWUpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgbmFtZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtl
SWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWZkZmMyN2QyMGE4NjVhMzQzYWYyMWQ1Yzc0ODhkYzQzNjViMTcxNS4uYjhhNWFkYWU5ODdlNDAz
N2Q2NTVlMGEzZjZhZDAyOGY4NDFlMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzE3LDcgKzMxNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5j
UmFjZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0g
anNDYXN0PEpTUHJvbWlzZURlZmVycmVkKj4oZGVmZXJyZWRWYWx1ZSk7CiAKICAgICAvLyA0LiBM
ZXQgJ2l0ZXJhdG9yJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0SXRlcmF0b3IoaXRlcmFi
bGUpLgotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBKU1ZhbHVlIGl0ZXJh
dG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKIApAQCAt
NDgwLDcgKzQ4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29u
c3RydWN0b3JGdW5jQWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Byb21pc2VEZWZlcnJlZCog
ZGVmZXJyZWQgPSBqc0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQqPihkZWZlcnJlZFZhbHVlKTsKIAog
ICAgIC8vIDQuIExldCAnaXRlcmF0b3InIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBHZXRJdGVy
YXRvcihpdGVyYWJsZSkuCi0gICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUu
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpT
VmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJl
ZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyODFh
ZTQ2MjAzOTIwNGI0NTI4YjRlYTUxMWMwNzVjNmU4NWVmYmQ5Li5jMWFmMGNhZTFjNjIzYjM2MmNm
NGRiMzYyYjVjOTU0OTVlOGM3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhWTSogdm0sIFN0cmluZyYmIHMpCiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBK
U1N0cmluZzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1
cm4gSWRlbnRpZmllcihleGVjLCB0b0F0b21pY1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdG9BdG9taWNTdHJpbmcoZXhlYykpOwogfQogCiBB
TFdBWVNfSU5MSU5FIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiOGZiMjI4MmFmYWU4N2VjYzQxMTAyNDVj
ZTliYjg3M2U5NTBmMGZmLi4yYjAxODYyZDZhNDlkMWEwZTA0NjYwNTQzMjQzNDQ5OWMwMmU5Yzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9
IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtl
eS0+aXNVbmlxdWUoKSkKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc1N5bWJvbCgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KG1vZGUpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgaXQtPmtleS5nZXQoKSkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAppbmRleCBmNmY1ZmUxNzNjNzA0ZWRlMGY2NTNiNjgzOGUwOTgwNmNhNDQyZWI3Li5kNDU0
NGE0ZjZmMjZjYWE4YzM4NDVkYWYwZmNhZmU3MzIzMjhiZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNTcsMTcgKzU3LDE3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQog
ICAgIGRvIHsKICAgICAgICAgVmVjdG9yPEpTT05QUGF0aEVudHJ5PiBwYXRoOwogICAgICAgICAv
LyBVbmd1YXJkZWQgbmV4dCB0byBzdGFydCBvZmYgdGhlIGxleGVyCi0gICAgICAgIElkZW50aWZp
ZXIgbmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0YXJ0KTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmbV9leGVjLT52bSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVy
LmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAg
ICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0gbV9leGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPnZhcktleXdvcmQpIHsKICAgICAgICAgICAgIGlmIChtX2xleGVy
Lm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5VHlwZURlY2xhcmU7Ci0g
ICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZt
KCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgICAgICBlbnRyeS5t
X3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0g
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChl
bnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09O
UFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJ
ZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CisgICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAg
ICAgICAgICBwYXRoLmFwcGVuZChlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZXhl
Yy0+dm0oKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSkpCkBAIC05
NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENo
YXJUeXBlJiBjKQogICAgICAgICAgICAgICAgIGVudHJ5Lm1fdHlwZSA9IEpTT05QUGF0aEVudHJ5
VHlwZURvdDsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rSWRlbnRp
ZmllcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5tX3BhdGhF
bnRyeU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZtX2V4ZWMtPnZtKCksIG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewpAQCAtMTM1LDE3ICsxMzUsMTcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMp
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyOwogICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1D
YWNoYWJsZUNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0o
KSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5n
dGggPT0gMSkgewogICAgICAgICBpZiAoIW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFj
dGVyc1swXV07Ci0gICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElk
ZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9z
aG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
bV9leGVjLT52bSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9y
dElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRl
bnRpZmllcnNbY2hhcmFjdGVyc1swXV0uaXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9y
ZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBtX3JlY2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwot
ICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4
ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKICAgICByZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXTsKIH0KIApAQCAtMTU1LDE3ICsxNTUsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
SlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBtX2V4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwog
ICAgIGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikKLSAgICAg
ICAgcmV0dXJuIElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsK
KyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBpZiAo
IW1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXS5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybiBtX3Nob3J0SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIG1fc2hv
cnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZpZXIoJm1fZXhlYy0+dm0oKSwg
Y2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICAgICAgbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3Rl
cnNbMF1dID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmbV9leGVjLT52bSgpLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9zaG9ydElkZW50aWZpZXJzW2NoYXJhY3RlcnNb
MF1dOwogICAgIH0KICAgICBpZiAoIW1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0u
aXNOdWxsKCkgJiYgSWRlbnRpZmllcjo6ZXF1YWwobV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0
ZXJzWzBdXS5pbXBsKCksIGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtX3Jl
Y2VudElkZW50aWZpZXJzW2NoYXJhY3RlcnNbMF1dOwotICAgIG1fcmVjZW50SWRlbnRpZmllcnNb
Y2hhcmFjdGVyc1swXV0gPSBJZGVudGlmaWVyKCZtX2V4ZWMtPnZtKCksIGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJm1fZXhlYy0+dm0oKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICBy
ZXR1cm4gbV9yZWNlbnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBdXTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiN2VjYmIxOTBhMDRiNTA5ZDkwNDEwZmZj
NGNjMzJkZDAzOTQ4MGZhLi5hOGEzMzY3ZjUzZmE2YzUxOGI5ZGExZTVkZTc3ZjQ5MDBlOWNmYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjkzLDcgKzI5Myw3
IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IEhhc2hU
YWJsZVZhbHVlICgmdmFsdWVzKVtudW1iZXJPCiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAg
ICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFsdWUu
bV9rZXkpLCBzdHJsZW4odmFsdWUubV9rZXkpKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHZhbHVlLm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIGlm
ICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKSB7CiAgICAgICAgICAgICB0aGlzT2JqLnB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZS5idWlsdGluR2VuZXJhdG9yKCkodm0pLCB2YWx1ZS5hdHRyaWJ1dGVzKCkp
OwogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWI1NTgzOTQ5MGI4ZWZjMDAyMTZlYzJkOWVm
MWQyZGZhOTFiMzZiNy4uZmFkNTJjMDU2MDQ4ZTE4YjdlZWM0OThmZjE0OTUzZmQ5MGZjZmVkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMpKTsKIAotICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJh
YmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JQcml2YXRlTmFtZSk7
CisgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAKaW5kZXggODA2N2NiMjBmMGMzN2Q2NmE3NzhiZTlkMWVmNmFmZGIzYzZkZTgy
OC4uY2E3ZGMwOGYyOGUwZjY2ZmJkNmViYmFmNWQ4YjY4YWI0ZThmZDYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQVNTRVJUKGlu
aGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7
CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJp
dmF0ZU5hbWUsIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIE1hcEl0ZXJhdG9yUHJv
dG90eXBlRnVuY05leHQsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggODhkZjU4M2EwNjZlNWU4MTgyZTAx
MTIyOGE2NmUxZmZkODE1NGE4OC4uZmU1MjVlY2ZjNDg0MDk1YjNiNjZiMTVhZTZhNWE2NzNjOTZh
YWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCBtYXBQcm90b0Z1bmNLZXlzLCBEb250RW51bSwg
MCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIG1h
cFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0s
IDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQ
cml2YXRlTmFtZSwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1hcFByb3Rv
RnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsKIAogICAgIEdldHRlclNldHRlciogYWNjZXNzb3Ig
PSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBtYXBQcm90b0Z1bmNTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMjhmZjVjOGQ5Mjc5
ZWU1OWU1YjExZTc1MWI5OWI1NGIyZjZmMDM5NC4uNTE1NmVkMmVmZDVmMDA0MTJmYzI3MDQ2NzBh
ZDhkYWIzZmIyNzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAKQEAgLTg3LDQ5ICs4Nyw0OSBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCi0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiRSIpLCBqc051bWJl
cihleHAoMS4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJMTjIiKSwganNOdW1i
ZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE4xMCIpLCBqc051
bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTE9HMkUiKSwg
anNOdW1iZXIoMS4wIC8gbG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAi
TE9HMTBFIiksIGpzTnVtYmVyKDAuNDM0Mjk0NDgxOTAzMjUxOCksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcigmdm0sICJTUVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUg
fCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcigmdm0sICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiYWJz
IiksIDEsIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImFjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3Ms
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAiYXNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVNpbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1
bmNBVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyKCZ2bSwgImFjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgTm9JbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJhc2luaCIpLCAxLCBt
YXRoUHJvdG9GdW5jQVNpbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiYXRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0
YW4yIiksIDIsIG1hdGhQcm90b0Z1bmNBVGFuMiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjYnJ0IiksIDEsIG1hdGhQcm90b0Z1bmND
YnJ0LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgImNlaWwiKSwgMSwgbWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRF
bnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjb3MiKSwgMSwgbWF0aFBy
b3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIoJnZtLCAiY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zaCwgTm9JbnRyaW5zaWMs
IERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJleHAiKSwgMSwg
bWF0aFByb3RvRnVuY0V4cCwgRXhwSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIoJnZtLCAiZXhwbTEiKSwgMSwgbWF0aFByb3RvRnVuY0V4cG0xLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImZs
b29yIiksIDEsIG1hdGhQcm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVtIHwg
RnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJmcm91bmQiKSwgMSwgbWF0aFByb3Rv
RnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXIoJnZtLCAiaHlwb3QiKSwgMiwgbWF0aFByb3RvRnVuY0h5cG90LCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZyIp
LCAxLCBtYXRoUHJvdG9GdW5jTG9nLCBMb2dJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2cxMCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAs
IE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZt
LCAibG9nMXAiKSwgMSwgbWF0aFByb3RvRnVuY0xvZzFwLCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImxvZzIiKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZzIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAibWF4IiksIDIsIG1hdGhQcm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgIm1pbiIpLCAyLCBtYXRo
UHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcigmdm0sICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicmFuZG9tIiks
IDAsIG1hdGhQcm90b0Z1bmNSYW5kb20sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5k
LCBSb3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
KCZ2bSwgInNpZ24iKSwgMSwgbWF0aFByb3RvRnVuY1NpZ24sIE5vSW50cmluc2ljLCBEb250RW51
bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic2luIiksIDEsIG1hdGhQcm90
b0Z1bmNTaW4sIFNpbkludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyKCZ2bSwgInNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY1NpbmgsIE5vSW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAic3FydCIpLCAxLCBt
YXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJp
bnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInRhbmgi
KSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5j
LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgImltdWwiKSwgMSwgbWF0aFByb3RvRnVuY0lNdWwsIElNdWxJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjAp
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxOMTAiKSwganNO
dW1iZXIobG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkxPRzEwRSIpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkw
MzI1MTgpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiUEkiKSwg
anNOdW1iZXIocGlEb3VibGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgImFicyIpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJh
Y29zIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5j
dGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFzaW4iKSwgMSwgbWF0
aFByb3RvRnVuY0FTaW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRh
biwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJhY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIE5vSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiYXNpbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FTaW5oLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImF0YW5o
IiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuaCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdGFuMiIpLCAyLCBtYXRo
UHJvdG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2JydCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2Jy
dCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiY29zIiksIDEsIG1hdGhQcm90b0Z1bmNDb3MsIENvc0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvc2giKSwg
MSwgbWF0aFByb3RvRnVuY0Nvc2gsIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1
bmNFeHAsIEV4cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG0xIiksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgTm9J
bnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2lj
LCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgRG9u
dEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImh5
cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVu
Y3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb2ciKSwgMSwgbWF0
aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3RvRnVuY0xv
ZzEwLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJsb2cyIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBOb0ludHJpbnNpYywgRG9udEVu
dW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1heCIp
LCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24p
OworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJtaW4iKSwgMiwgbWF0aFByb3Rv
RnVuY01pbiwgTWluSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
InJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzaWduIiks
IDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9G
dW5jU2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJzaW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERv
bnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0
YW4iKSwgMSwgbWF0aFByb3RvRnVuY1RhbiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rp
b24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW5oIiksIDEsIG1hdGhQ
cm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVu
YywgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJpbXVsIiksIDEsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmlu
c2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDNjZmU5NDExNmZhMDYxYmNiNWEyMTI3MTY1YTRkMDE0ODQxNzJmNWQuLjk1YThkY2E5
MDhmYTViN2ZlYTE1OTEyOTUxMDkxNzI0M2FiN2MwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDIxICs1OSwy
MSBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJl
clByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9y
IGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
KCZ2bSwgIkVQU0lMT04iKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjplcHNpbG9uKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1ZBTFVF
IiksIGpzRG91YmxlTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyKCZ2bSwgIk1JTl9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiTUFYX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJs
ZU51bWJlcig5MDA3MTk5MjU0NzQwOTkxLjApLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZt
LCAiTUlOX1NBRkVfSU5URUdFUiIpLCBqc0RvdWJsZU51bWJlcigtOTAwNzE5OTI1NDc0MDk5MS4w
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpz
RG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXIoJnZtLCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3Vi
bGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgIk5hTiIpLCBqc05hTigpLCBEb250RGVsZXRlIHwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0KLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVy
KCZ2bSwgImlzRmluaXRlIiksIDEsIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzRmluaXRlLCBOb0lu
dHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwg
SWRlbnRpZmllcigmdm0sICJpc0ludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJ
bnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJpc05hTiIpLCAxLCBudW1iZXJDb25zdHJ1Y3Rv
ckZ1bmNJc05hTiwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXIoJnZtLCAiaXNTYWZlSW50ZWdlciIpLCAxLCBudW1i
ZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJwYXJz
ZUZsb2F0IiksIDEsIGdsb2JhbEZ1bmNQYXJzZUZsb2F0LCBOb0ludHJpbnNpYywgRG9udEVudW0g
fCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcigmdm0sICJw
YXJzZUludCIpLCAxLCBnbG9iYWxGdW5jUGFyc2VJbnQsIE5vSW50cmluc2ljLCBEb250RW51bSB8
IEZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJFUFNJTE9OIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEzNDg2
MjMxNTdFKzMwOCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJN
SU5fVkFMVUUiKSwganNEb3VibGVOdW1iZXIoNUUtMzI0KSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgIk1BWF9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIo
OTAwNzE5OTI1NDc0MDk5MS4wKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1iZXIoLTkwMDcxOTkyNTQ3NDA5
OTEuMCksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJORUdBVElW
RV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
IlBPU0lUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJOYU4iKSwganNOYU4oKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OworCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgbnVt
YmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpc0Zpbml0ZSIpLCAxLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0Zpbml0ZSwgTm9JbnRyaW5z
aWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNJbnRlZ2VyIiksIDEsIG51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNOYU4iKSwg
MSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNOYU4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1
bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImlzU2FmZUludGVnZXIiKSwgMSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50
ZWdlciwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFyc2VGbG9hdCIpLCAxLCBn
bG9iYWxGdW5jUGFyc2VGbG9hdCwgTm9JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIG51bWJlclBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFy
c2VJbnQiKSwgMSwgZ2xvYmFsRnVuY1BhcnNlSW50LCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CiB9CiAKIC8vIEVDTUEgMTUuNy4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOGY1MDVmNmEwMDZhOWY4
YjUzNzA4ZTFkNWYxNWZiZjlmY2UyMTQwNy4uOGY3MWVmN2VhMDgxYzViMWUzZmM1MmY3YmIwOTYw
Yjk1MTZkOWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcApAQCAtODYsNyArODYsNyBAQAogCiB2b2lkIE9iamVjdENvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwg
Ik9iamVjdCIpLnN0cmluZygpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgb2JqZWN0
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKICAgICAvLyBFQ01BIDE1LjIuMy4x
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDIxNDE2NDQ2NjQ1YzdmZmYw
M2Y3YzgyZDE3ODczOWFkNTYwOGJmNjQuLmNjY2NjMzlmYTkzOTEzYjNmYTYxYzc1MGU2OGRjNzI5
MTZlNWI3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZh
dGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUu
aApAQCAtMzMsMTkgKzMzLDE5IEBACiBjbGFzcyBQcml2YXRlTmFtZSB7CiBwdWJsaWM6CiAgICAg
UHJpdmF0ZU5hbWUoKQotICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVVbmlxdWVF
bXB0eSgpKQorICAgICAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSgp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7Ci0gICAgfQotICAg
IFByaXZhdGVOYW1lKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCi0gICAgICAgIDogbV9pbXBs
KFN0cmluZ0ltcGw6OmNyZWF0ZVVuaXF1ZShkZXNjcmlwdGlvbi5pbXBsKCkpKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlxdWUoKSk7CiAgICAgfQorCiAgICAgZXhwbGljaXQg
UHJpdmF0ZU5hbWUoU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1faW1wbCh1aWQpCiAgICAg
ewotICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1f
aW1wbC0+aXNTeW1ib2woKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3Jl
YXRlU3ltYm9sKGRlc2NyaXB0aW9uLmltcGwoKSkpCisgICAgewogICAgIH0KIAogICAgIEF0b21p
Y1N0cmluZ0ltcGwqIHVpZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmlu
Z0ltcGwqPihtX2ltcGwuZ2V0KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCAwMzcwYTM1NDhkYTk4NmQwNDEx
MzEzZTA0ZGFjMmQxNWM2YmEwOTA0Li43NTRkYTJkOGU4MTU1NTRiNzdiNjhmZTNlNTJmYzRjODIy
ZDMwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZW5kKCkgY29uc3QKIGlubGluZSBQcm9w
ZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmZpbmQoY29uc3QgS2V5VHlw
ZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVChrZXktPmlzQXRvbWljKCkg
fHwga2V5LT5pc1VuaXF1ZSgpKTsKKyAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+
aXNTeW1ib2woKSk7CiAgICAgdW5zaWduZWQgaGFzaCA9IGtleS0+ZXhpc3RpbmdIYXNoKCk7CiAg
ICAgdW5zaWduZWQgc3RlcCA9IDA7CiAKQEAgLTMwNSw3ICszMDUsNyBAQCBpbmxpbmUgUHJvcGVy
dHlUYWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpWYWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6Omdl
dChjb25zdCBLZXlUeXBlJiBrZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtl
eS0+aXNBdG9taWMoKSB8fCBrZXktPmlzVW5pcXVlKCkpOworICAgIEFTU0VSVChrZXktPmlzQXRv
bWljKCkgfHwga2V5LT5pc1N5bWJvbCgpKTsKIAogICAgIGlmICghbV9rZXlDb3VudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCmluZGV4IDMwNzRjNzJlMTA3MDEzM2I5N2IwM2IxZGZmNGE0M2RlMTMyZmMwYTYu
LjY1NWU3NGQ2MmFjMzYxMjBhMTk2MWFiZDcwMTFmZjZiZWM1MjE1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC04MSw3ICs4MSw3IEBAIGNs
YXNzIFByb3BlcnR5TmFtZSB7CiAgICAgUHJvcGVydHlOYW1lKEF0b21pY1N0cmluZ0ltcGwqIHBy
b3BlcnR5TmFtZSkKICAgICAgICAgOiBtX2ltcGwocHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJU
KCFtX2ltcGwgfHwgbV9pbXBsLT5pc0F0b21pYygpIHx8IG1faW1wbC0+aXNTeW1ib2woKSk7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlOYW1lKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
QEAgLTkzLDggKzkzLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKICAgICAgICAgOiBtX2ltcGwo
c3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9pbXBsKTsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXNVbmlx
dWUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NF
UlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKICAgICB9CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiB1
aWQoKSBjb25zdApAQCAtMTA0LDE0ICsxMDMsMTQgQEAgY2xhc3MgUHJvcGVydHlOYW1lIHsKIAog
ICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+aXNVbmlxdWUoKSA/IG51bGxwdHIgOiBtX2ltcGw7CisgICAgICAgIHJl
dHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3ltYm9sKCkpID8gbnVsbHB0ciA6IG1faW1wbDsK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTm90QW5JbmRleCA9IFVJTlRfTUFY
OwogCiAgICAgdWludDMyX3QgYXNJbmRleCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pbXBs
ID8gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChtX2ltcGwpIDogTm90QW5JbmRleDsKKyAgICAgICAg
cmV0dXJuIChtX2ltcGwgJiYgIW1faW1wbC0+aXNTeW1ib2woKSkgPyB0b1VJbnQzMkZyb21TdHJp
bmdJbXBsKG1faW1wbCkgOiBOb3RBbkluZGV4OwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAppbmRleCA0NDc1Yjg5OGE5NzQ5NzdjZTY4ZTQ3
NTlkY2FkMDZiZDZhMDQ4MzczLi5lNGU1ZTI3YTA0ZmEwNGY2ODVlNmM3YjNjZWVmOTdiZDVhMTFi
NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6
OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaWRlbnRpZmllciB8
fCBpZGVudGlmaWVyID09IFN0cmluZ0ltcGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9t
aWMoKSk7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyIHx8IChpZGVudGlmaWVyID09IFN0cmluZ0lt
cGw6OmVtcHR5KCkgfHwgaWRlbnRpZmllci0+aXNBdG9taWMoKSB8fCBpZGVudGlmaWVyLT5pc1N5
bWJvbCgpKSk7CiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgdWludDMyX3Qg
aW5kZXggPSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSkuYXNJbmRl
eCgpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIGlkZW50aWZpZXIpKS5hc0luZGV4KCk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoaW5kZXgsIGluZGV4ID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCB8fCBpbmRleCA+PSBt
X3ByZXZpb3VzbHlFbnVtZXJhdGVkTGVuZ3RoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IDk5NGYwOWM5MDU0
MDExZTQxYjIzMzhmOWQwNTA0YjJkNDliZmYzOWEuLjg5ZmNiZGVjZjdlODFjZTIzNWQ0YjEwM2U1
OTQ2OWM5ODExYTdjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheSB7CiAgICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgbV9zZXQtPmFkZChpZGVudGlmaWVyKTsKLSAgICAgICAgbV9kYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX3ZtLCBpZGVudGlmaWVyKSk7
CisgICAgICAgIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6
OmZyb21VaWQobV92bSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIElkZW50aWZpZXImIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KVtpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuY3BwCmluZGV4IDQ1ZTgwZjVjZGMxNWE1NmYyYzY2MmI1MzRiNWQyZGRkYjViZmU5
OTIuLmVlMWQ4YjNmYzY5Zjk0M2I5NGE1MjU5Y2Y3YzE4NmNhYzYzNzNmNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgSWRlbnRpZmllcigmdm0sICJSZWdFeHAiKS5zdHJpbmcoKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHJlZ0V4cFByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogCiAgICAgLy8gRUNN
QSAxNS4xMC41LjEgUmVnRXhwLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDQyM2E2YmQ1ZWJhZGY5YjkyYjVlNWJi
ZmRhNDcxNmI4MjkwZjI1ODEuLmZiOTdiNmQ5ZmEwZDBlZTYzYTFkNTJhOTg4N2VjNzc2OThmNzUz
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBp
dGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5h
bWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IDUyNjFiZjNjYWNjMWQ0ZTBlNDU3NTUxYTAyMmRlNjdjOTE5
NGRmZjkuLmYxYjhiNzk0ODExODkwOTNhMDFhNjJjNTg2MTRkZDlkZWVkOGYzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlw
ZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTZXRJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clByaXZhdGVOYW1lLCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0s
IDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIFNldEl0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBTZXRJdGVyYXRv
clByb3RvdHlwZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDQwMDY2YWU3OGQ0OWFjZDU3
YzY0M2YwZGRiYzNmYzc0NmVhMDQxMWMuLmIzMTU4NjFhNDY1NWUyYzFmYjdlMjY0YTU2YTA2ZDI3
OWQ1MGU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVu
dW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LCBzZXRQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRF
bnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBzZXRQcm90
b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0g
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJv
cGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHAKaW5kZXggNTNlMGNjYjMxNDRmMzk1OTZlNjQ1NWVhN2IzMmY3NTcwYmJmMWFkYi4uNDY4
YjcyZDBmY2E3NGY5MjQ3NTIxMWJjNDFkOWFlZjBjNTlmNzZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKICAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMp
OwogCi0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclBy
aXZhdGVOYW1lLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yLCBEb250RW51bSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvciwgRG9udEVudW0sIDApOwogfQogCiBi
b29sIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAppbmRleCBhZWE1OTI2OTUyMmI4NTk4ODk0YzQ3ZWU1ZDQ5YTRlYmM2
MmQyMTMzLi5jYTYyYzQxYjBmMzU4OTY5MTZkMWM2MjVkN2MzNDBmYTRkZjI0OTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04oInN0YXJ0c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoLCBEb250RW51
bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZW5kc1dpdGgiLCBzdHJpbmdQcm90b0Z1
bmNFbmRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImluY2x1
ZGVzIiwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmlu
Z1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKIAogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmNoYXJDb2RlQXRQcml2YXRlTmFtZSwgc3RyaW5nUHJvdG9GdW5jQ2hh
ckNvZGVBdCwgRG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRyaW5zaWMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBkY2U1MWI1Y2U4ZGQxYTE0
MzM4ZTIyYTc2NTEwODgzZTJiYzIwY2M3Li4zYjhhZTFjZTczNWJiMjVlNzdiZDMxMTg4MTMyMGNk
Y2M3MmEyNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTkzOSw3ICs5MzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zy
b21TdHJ1Y3R1cmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydAogICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnR5VGFibGUoKS0+ZW5kKCk7CiAgICAgZm9y
IChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChoYXNOb25FbnVtZXJhYmxl
UHJvcGVydGllcygpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERvbnRFbnVtKSk7Ci0gICAgICAg
IGlmICghaXRlci0+a2V5LT5pc1VuaXF1ZSgpICYmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250
RW51bSkgfHwgc2hvdWxkSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyhtb2RlKSkpIHsKKyAgICAg
ICAgaWYgKCFpdGVyLT5rZXktPmlzU3ltYm9sKCkgJiYgKCEoaXRlci0+YXR0cmlidXRlcyAmIERv
bnRFbnVtKSB8fCBzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGtub3duVW5pcXVlKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkS25vd25VbmlxdWUoaXRlci0+a2V5KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCA5
OWNlNjg2Mjc0ZmQ3NzM5MjhkZGQ1OWZmMWY5Y2FmNGVlYmUyMTFlLi5hYTk0ZmEzMWYxYTA5NWJl
Mzg4NGM0MTc4MDI0NGI3MTg4YjMwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiB9CiAK
ICNkZWZpbmUgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgI25hbWUpLCBTeW1ib2w6
OmNyZWF0ZSh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzYWY4MTdkYTMxYWE2OGZmZGZjZTQ5
NGM1ZjU1ZWQyNDZkMmY1MmEyLi5lNzYzOTQ3NWMzMmFlZTFkZDFlOTUzOGRjYjhhMmY1ZWRkYTFi
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NjIsMTAgKzY2Miwx
MCBAQCBKU1ZhbHVlIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
ZXJyb3IpCiAgICAgICAgIHVuc2lnbmVkIGxpbmU7CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsK
ICAgICAgICAgc3RhY2tGcmFtZS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwot
ICAgICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAibGlu
ZSIpLCBqc051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKLSAgICAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgImNvbHVtbiIpLCBqc051
bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBleGNlcHRpb24t
PnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh0aGlzLCAibGluZSIpLCBq
c051bWJlcihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXhjZXB0aW9u
LT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodGhpcywgImNvbHVtbiIp
LCBqc051bWJlcihjb2x1bW4pLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBpZiAo
IXN0YWNrRnJhbWUuc291cmNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV4Y2VwdGlvbi0+
cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmco
dGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAg
ICAgICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodGhpcywgInNvdXJjZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVS
TCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24tPmlz
RXJyb3JJbnN0YW5jZSgpICYmIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24p
LT5oYXNTb3VyY2VBcHBlbmRlcigpKSB7CiAgICAgICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0
aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDA5YWZmMDM1MTAw
MDY4OWFmOGU3YWI4NDNiNzIxYmE0ZTgxNTAyYmUuLjIzYzQzMzMwZDYyZWYwOTcyN2ZmNmI5MTI0
NTZhNTA0MDRkYTc4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CiAKLSAgICBKU1Zh
bHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLml0ZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlv
biA9IGl0ZXJhYmxlLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1i
b2wpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
Y3BwCmluZGV4IDE5NjM5Y2FiMzE0Zjk2OGExNWQ3MmU2Nzk0NWJmMGQ5NmE4ZmJhOTEuLmZhN2U0
MzQ3YTEyM2JmNmIxNzViMDZhMzhjNWU5Y2EyMmI4ZWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAKQEAgLTQwMyw2ICs0MDMsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21M
aXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9s
KCkpCisgICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJv
bCgpKTsKKwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRv
bWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBh
bHJlYWR5IGF0b21pYy4iKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsK
QEAgLTQyMSw2ICs0MjQsOSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5z
bGF0b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmlu
Z0ltcGw6OmVtcHR5KCk7CiAKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJl
dHVybiBhZGQoc3RyaW5nVGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wo
KSk7CisKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21p
Y1N0cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxy
ZWFkeSBhdG9taWMuIik7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkBA
IC01MDMsNiArNTA5LDEyIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNs
b3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFz
dHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCByZXR1cm4gZnJvbSB0
aGUgZmFzdCBjYXNlLiIpOwogCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CisKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBmaW5kKCZzdHJp
bmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOworCiAgICAgQXRvbWljU3RyaW5nVGFi
bGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdU
YWJsZSA9IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1Rh
YmxlLmZpbmQoJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA4NDE2
MDEyZmFiZjk4NTg0ZjMyZmVhZGY0Nzk2OWJjZTZkNDg3NzAxLi4zYTJmY2Y1ZjM1ODJjYzA3NDBl
MDQ1YTBiMzkyZmEwNmNlZmI5OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAg
LTE5OSwxMSArMTk5LDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7Ci0gICAgICAg
IGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nIHx8ICFzdHJpbmctPmxlbmd0aCgpIHx8IHN0cmluZy0+aXNV
bmlxdWUoKSB8fCBpc0luQXRvbWljU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBpZiAoIXN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFk
ZFNsb3dDYXNlKCpzdHJpbmcpOworICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwogICAgIH0K
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9t
TGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNp
ZiBVU0UoQ0YpCkBAIC0yMTMsMTEgKzIxMSw5IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4KICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3Ry
aW5nVGFibGVQcm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5n
KQogICAgIHsKLSAgICAgICAgaWYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcgfHwgIXN0cmluZy0+bGVuZ3Ro
KCkgfHwgc3RyaW5nLT5pc1VuaXF1ZSgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcp
LCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAg
ICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoKnN0cmluZ1RhYmxlUHJvdmlkZXIuYXRvbWljU3Ry
aW5nVGFibGUoKSwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJv
dmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtMjI5LDcgKzIyNSwyNSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAg
IEF0b21pY1N0cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAg
IAorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJ
bXBsJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoc3RyaW5nLmlzQXRvbWljKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRv
bWljU3RyaW5nVGFibGUoJnN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFu
IG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3Ry
aW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcu
aXNBdG9taWMoKSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxl
bmd0aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3Ry
aW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nVGFibGUs
IHN0cmluZyk7CisgICAgfQorCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1Rh
YmxlJiwgU3RyaW5nSW1wbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBl
MTVkZTExMzg5NTQ2ZjQ5MDllZWQ4MDdlZDIxMmIxNjIzZmIzMmVlLi45ZmFiZjJiYWIyZWE2YzFi
ZGY3MjgwYmM2NjY1N2VkMDZmOTk5ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKIAogICAg
IFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKCp0aGlzKTsKIAotICAgIGlmIChpc0F0b21pYygp
ICYmIGxlbmd0aCgpICYmICFpc1VuaXF1ZSgpKQorICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0
aCgpICYmICFpc1N5bWJvbCgpKQogICAgICAgICBBdG9taWNTdHJpbmc6OnJlbW92ZSh0aGlzKTsK
IAogICAgIEJ1ZmZlck93bmVyc2hpcCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKQEAg
LTI4NiwxMyArMjg2LDE0IEBAIHZvaWQgU3RyaW5nSW1wbDo6ZGVzdHJveShTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsKQogICAgIHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1SZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pcXVlKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0
aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlRW1wdHko
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0lt
cGw+IHN0cmluZyA9IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsK
LSAgICBzdHJpbmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yVW5pcXVlKHN0cmlu
Zy0+bV9oYXNoQW5kRmxhZ3MpOworICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKKyAg
ICBzdHJpbmctPm1faGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+
bV9oYXNoQW5kRmxhZ3MpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKaW5kZXggMjJiZmNiNmRiYmRjOTViYzZjNDU1YThlNjBjYjcwNjMyNTMwZGFlOS4u
NTA0Y2I4MmEwM2M1YzM1OTNiNjc0Y2JkMjg0MzQyNDc2MjQ0OTIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTE0MSw2ICsxNDEsMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAg
ICAgIEJ1ZmZlclN1YnN0cmluZywKICAgICB9OwogCisgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMg
aW4gdGhlIGhhc2ggYXJlIGZsYWdzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2ZsYWdD
b3VudCA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwg
c19mbGFnQ291bnQpIC0gMTsKKyAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJp
bmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zv
cl9TdHJpbmdJbXBsX2ZsYWdzKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3Ry
aW5nS2luZENvdW50ID0gNDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFn
U3RyaW5nS2luZElzQXRvbWljID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCk7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wgPSAxdSA8
PCAoc19mbGFnU3RyaW5nS2luZENvdW50ICsgMSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfaGFzaE1hc2tTdHJpbmdLaW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNf
aGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgMzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgPSAxdSA8PCAyOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOwor
CisgICAgZW51bSBTdHJpbmdLaW5kIHsKKyAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsIC8vIG5v
bi1zeW1ib2wsIG5vbi1hdG9taWMKKyAgICAgICAgU3RyaW5nQXRvbWljID0gc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc0F0b21pYywgLy8gbm9uLXN5bWJvbCwgYXRvbWljCisgICAgICAgIFN0cmluZ1N5
bWJvbCA9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2wsIC8vIHN5bWJvbCwgbm9uLWF0b21p
YworICAgIH07CisKICAgICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3RyaW5ncywgd2hp
Y2ggaGF2ZSBhbiBzcGVjaWFsIHJlZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6ZXJvLgogICAg
IC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ry
b3llZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3
aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVh
ZHNhZmUgbWFubmVyLgpAQCAtMTUwLDcgKzE2OSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAg
ICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAg
LCBtX2xlbmd0aCgwKQogICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhC
aXRCdWZmZXIgfCBzX2hhc2hGbGFnSXNBdG9taWMgfCBCdWZmZXJPd25lZCkKKyAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ0F0b21pYyB8IEJ1ZmZl
ck93bmVkKQogICAgIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0
ZWQgc28gdGhhdCBBdG9taWNTdHJpbmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCiAgICAg
ICAgIC8vIHdpdGggaW1wdW5pdHkuIFRoZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNl
IGl0IGlzIG5ldmVyIGVudGVyZWQgaW50bwpAQCAtMTY3LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRlcjxMQ2hh
cj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1
ZmZlckludGVybmFsKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9kYXRhOCk7CiAgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CkBAIC0xODAsNyArMTk5LDcg
QEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5j
cmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0
YWlsUG9pbnRlcjxVQ2hhcj4oKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRl
cm5hbCkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRl
cm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CiAgICAgICAgIEFTU0VSVCht
X2xlbmd0aCk7CkBAIC0xOTMsNyArMjEyLDcgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAg
IDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAs
IG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCisgICAg
ICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICAgICAg
QVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIwNiw3ICsyMjUsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwg
bV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Mo
U3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9k
YXRhMTYpOwogICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwpAQCAtMjE4LDcgKzIzNyw3IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVu
dCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0
ZXJzKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVm
ZmVySW50ZXJuYWwpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2RhdGE4KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKQEAgLTIzMSw3ICsyNTAsNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNo
YXJhY3RlcnMubGVha1B0cigpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVk
KQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKICAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKQEAgLTI0NCw3ICsyNjMsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0
cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVCht
X2RhdGE4KTsKQEAgLTI2MSw3ICsyODAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5k
RmxhZ3MoQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmluZ05v
cm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXM4Qml0KCkp
OwogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwpAQCAtMjczLDE0ICsyOTIsMTQgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xl
bmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVFbXB0eVVuaXF1ZVRhZyB7IENy
ZWF0ZUVtcHR5VW5pcXVlIH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZVRhZykK
KyAgICBlbnVtIENyZWF0ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKKyAg
ICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbEVtcHR5VGFnKQogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAvLyBX
ZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAg
ICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAg
LCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAg
ICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclVuaXF1ZShzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNo
QW5kRmxhZ3NGb3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAKQEAgLTM3OCwxMiArMzk3LDEyIEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4o
cmVzdWx0SW1wbCwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pcXVlRW1wdHkoKQorICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZUVtcHR5VW5pcXVlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHkpKTsK
ICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVVbmlxdWUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBs
LiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRy
LAogICAgIC8vIGFuZCB0aGUgYnVmZmVyIG93bmVyc2hpcCBtdXN0IGJlIEJ1ZmZlckludGVybmFs
LiBKdXN0IGxpa2UgdGhlIGlucHV0IHBvaW50ZXIgb2YgcmVhbGxvYygpLApAQCAtMzkzLDggKzQx
Miw5IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdz
KTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxh
ZzhCaXRCdWZmZXI7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzQXRvbWljKCkgeyByZXR1
cm4gc19oYXNoRmxhZ0lzQXRvbWljOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1VuaXF1
ZSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBm
bGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNTeW1ib2w7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7
IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRh
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC00NTQsMTcgKzQ3NCwyMSBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdDsKIAotICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc2hB
bmRGbGFncyAmIHNfaGFzaEZsYWdJc1VuaXF1ZTsgfQorICAgIFN0cmluZ0tpbmQgc3RyaW5nS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoTWFza1N0cmluZ0tpbmQpOyB9CisgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQor
ICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFz
aEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KIAotICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7
IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0F0b21pYzsgfQogICAgIHZvaWQg
c2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNTdGF0
aWMoKSk7Ci0gICAgICAgIEFTU0VSVCghaXNVbmlxdWUoKSk7Ci0gICAgICAgIGlmIChpc0F0b21p
YykKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdJc0F0b21pYzsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdJc0F0
b21pYzsKKyAgICAgICAgQVNTRVJUKCFpc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKGlzQXRvbWlj
KSB7CisgICAgICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElz
QXRvbWljOworICAgICAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWMp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFz
aEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgp
ID09IFN0cmluZ05vcm1hbCk7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBTVFJJTkdfU1RBVFMK
QEAgLTcxNyw2ICs3NDEsMTYgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsK
IAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmdJbXBsJiBleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2woKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKKyAgICAgICAg
QVNTRVJUKGlzU3ltYm9sKCkpOworICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0g
QnVmZmVyU3Vic3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKKyAg
ICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCdWZmZXIoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHJl
dHVybiAqc3Vic3RyaW5nQnVmZmVyKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVx
dWlyZXNDb3B5KCkgY29uc3QKICAgICB7CkBAIC03ODMsMjMgKzgxNywxMiBAQCBjbGFzcyBTdHJp
bmdJbXBsIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2ln
bmVkLCBDaGFyVHlwZSomKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25l
ZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xv
d0Nhc2UoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVuc2lnbmVkIGhh
c2hBbmRGbGFnc0ZvclVuaXF1ZSh1bnNpZ25lZCBmbGFncyk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB1bnNpZ25lZCBoYXNoQW5kRmxhZ3NGb3JTeW1ib2wodW5zaWduZWQgZmxhZ3Mp
OwogCiAgICAgLy8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBz
dGF0aWMgKGltbW9ydGFsKSBzdHJpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVm
Q291bnRGbGFnSXNTdGF0aWNTdHJpbmcgPSAweDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfcmVmQ291bnRJbmNyZW1lbnQgPSAweDI7IC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlZiAvIGRl
cmVmIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgc3RhdGljIHN0cmluZyBmbGFnLgogCi0gICAgLy8g
VGhlIGJvdHRvbSA3IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
ZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQpIC0gMTsKLSAgICBDT01QSUxFX0FTU0VSVChz
X2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNoZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2Vy
dmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJpbmdJbXBsX2ZsYWdzKTsKLQotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnSXNVbmlxdWUgPSAxdSA8PCA2OwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDU7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdJc0F0b21pYyA9IDF1IDw8IDQ7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0ID0gMXUgPDwgMzsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9IDF1IHwgKDF1IDw8
IDEpOwotCiAjaWYgU1RSSU5HX1NUQVRTCiAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0cmlu
Z1N0YXRzIG1fc3RyaW5nU3RhdHM7CiAjZW5kaWYKQEAgLTgxNCw3ICs4MzcsNyBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKIAogICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgbWltaWMgQ29uc3RydWN0RnJv
bUxpdGVyYWwuCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxSZWZDb3Vu
dCA9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
X2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWw7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzX2hhc2hTaGlmdCA9IHNfZmxhZ0NvdW50OwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCmluZGV4IDY1YmI2NzIxZDc0M2ZhMTA0MWMy
OTJiNjBmNGQwMzI5MjgzZDhlNTEuLjM5NDVjNzNlMDA4Y2Q0MzdkYTU0OWExNWE1YWFiYjQ4NjUz
MzZkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNDcsMTggKzQ3
LDE4IEBAIFN0cmluZ0ltcGwqIFN0cmluZ0ltcGw6OmVtcHR5KCkKICAgICByZXR1cm4gJmVtcHR5
U3RyaW5nLmdldCgpOwogfQogCi0vLyBTZXQgdGhlIGhhc2ggZWFybHksIHNvIHRoYXQgYWxsIHVu
aXF1ZSBTdHJpbmdJbXBscyBoYXZlIGEgaGFzaCwKKy8vIFNldCB0aGUgaGFzaCBlYXJseSwgc28g
dGhhdCBhbGwgc3ltYm9sIFN0cmluZ0ltcGxzIGhhdmUgYSBoYXNoLAogLy8gYW5kIGRvbid0IHVz
ZSB0aGUgbm9ybWFsIGhhc2hpbmcgYWxnb3JpdGhtIC0gdGhlIHVuaXF1ZSBuYXR1cmUgb2YgdGhl
c2UKIC8vIGtleXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2ggYW55IG90
aGVyIHN0cmluZyAoaW4gZmFjdCwKIC8vIHRoYXQncyBleGFjdGx5IHRoZSBvcG9zaXRlIG9mIHdo
YXQgd2Ugd2FudCEpLCBhbmQgdGhlIG5vcm1hbCBoYXNoIHdvdWxkCiAvLyBsZWFkIHRvIGxvdHMg
b2YgY29uZmxpY3RzLgotdW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yVW5pcXVl
KHVuc2lnbmVkIGZsYWdzKQordW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaEFuZEZsYWdzRm9yU3lt
Ym9sKHVuc2lnbmVkIGZsYWdzKQogewotICAgIHN0YXRpYyB1bnNpZ25lZCBzX25leHRIYXNoQW5k
RmxhZ3NGb3JVbmlxdWUgPSAwOwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSArPSAx
IDw8IHNfZmxhZ0NvdW50OwotICAgIHNfbmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8PSAxIDw8
IDMxOwotICAgIHVuc2lnbmVkIGZsYWdzRm9yVW5pcXVlID0gKGZsYWdzICYgc19mbGFnTWFzaykg
fCBzX2hhc2hGbGFnSXNBdG9taWMgfCBzX2hhc2hGbGFnSXNVbmlxdWU7Ci0gICAgcmV0dXJuIHNf
bmV4dEhhc2hBbmRGbGFnc0ZvclVuaXF1ZSB8IGZsYWdzRm9yVW5pcXVlOworICAgIHN0YXRpYyB1
bnNpZ25lZCBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgPSAwOworICAgIHNfbmV4dEhhc2hB
bmRGbGFnc0ZvclN5bWJvbCArPSAxIDw8IHNfZmxhZ0NvdW50OworICAgIHNfbmV4dEhhc2hBbmRG
bGFnc0ZvclN5bWJvbCB8PSAxIDw8IDMxOworICAgIHVuc2lnbmVkIGZsYWdzRm9yU3ltYm9sID0g
KChmbGFncyAmIHNfZmxhZ01hc2spICYgKH5zX2hhc2hNYXNrU3RyaW5nS2luZCkpIHwgU3RyaW5n
U3ltYm9sOworICAgIHJldHVybiBzX25leHRIYXNoQW5kRmxhZ3NGb3JTeW1ib2wgfCBmbGFnc0Zv
clN5bWJvbDsKIH0KIAogV1RGX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcs
IG51bGxBdG9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDdlYTdjYmFhYTdlN2ZlNzdi
ZjAyOTI3NmZkY2E3YTI2MzU5YjEwNGYuLmFjNzRmZjYxMjJmZDk2OTI0ZGYzNDMzYzkzM2E3Zjdj
NjNjOWU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBi
b29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdElu
amVjdGVkKCkKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCi0gICAgSlND
OjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBK
U0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOworICAgIEpT
Qzo6SlNWYWx1ZSByZXBsYWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVu
dCIpKTsKICAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQogICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgCiAgICAgLy8gTG9va3VwIHRoZSAi
Y3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiIGZ1bmN0aW9uLgotICAgIEpTQzo6SlNWYWx1ZSByZXBs
YWNlbWVudEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
KGV4ZWMsICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVw
bGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQiKSk7CiAgICAgaWYg
KHJlcGxhY2VtZW50RnVuY3Rpb24uaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEpTQzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2JqZWN0ID0gcmVwbGFjZW1l
bnRGdW5jdGlvbi50b09iamVjdChleGVjKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9v
dCkKICAgICB9CiAKICAgICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRo
ZSBwbHVnLWluLgotICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChleGVj
LCBKU0M6OklkZW50aWZpZXIoZXhlYywgInZpZGVvIikpOworICAgIEpTQzo6SlNWYWx1ZSB2YWx1
ZSA9IHJlcGxhY2VtZW50LmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgInZpZGVvIikpOwogICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1fbWVkaWFFbGVtZW50ID0gSlNIVE1MVmlkZW9F
bGVtZW50Ojp0b1dyYXBwZWQodmFsdWUpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqIHJv
b3QpCiAgICAgfQogCiAgICAgLy8gR2V0IHRoZSBzY3JpcHRpbmcgaW50ZXJmYWNlLgotICAgIHZh
bHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAic2NyaXB0
T2JqZWN0IikpOworICAgIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2NyaXB0T2JqZWN0IikpOwogICAgIGlmICghZXhlYy0+
aGFkRXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIG1f
c2NyaXB0T2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmI1MDE4YzE3
OTkyZDYwZDJlZjI0YmZlZDY4MTBiMjI0NzE3MjcxNi4uNmY4MDY2MTRlYTRiMGNiNDE2YTUzZjI3
MjkyZDljZWQ5NWNmNjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGJvb2wgZ2V0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVs
ZW1lbnQsIEoKICAgICB9CiAgICAgaWYgKCFvYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmZXhlYy0+dm0oKSwga2V5UGF0
aEVsZW1lbnQudXRmOCgpLmRhdGEoKSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwga2V5UGF0aEVsZW1lbnQudXRmOCgpLmRh
dGEoKSk7CiAgICAgaWYgKCFhc09iamVjdChvYmplY3QpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IGFzT2JqZWN0KG9i
amVjdCktPmdldChleGVjLCBpZGVudGlmaWVyKTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGJv
b2wgc2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtl
eVBhdGhFbGVtZW50LAogewogICAgIGlmICghY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZleGVj
LT52bSgpLCBrZXlQYXRoRWxlbWVudC51dGY4KCkuZGF0YSgpKTsKKyAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLT52bSgpLCBrZXlQYXRoRWxl
bWVudC51dGY4KCkuZGF0YSgpKTsKICAgICBhc09iamVjdChvYmplY3QpLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgaWRlbnRpZmllciwganNWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcAppbmRleCAwYzUwNjRkNmIxN2RjZjQ4Njg4YWI5YmE0YmE3MGJiNGZkNDEx
OTc1Li5iOTM5MDczZDYxYjY3MWY0NDAzYjMwN2JjNTM0OWUwNmQ3N2MzZGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQog
CiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9w
ZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyAr
K2kpCi0gICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcihleGVj
LCBqc1Byb3BlcnR5TmFtZXNbaV0uaW1wbCgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5SWRlbnRp
ZmllcnNbaV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzUHJvcGVydHlOYW1lc1tp
XSk7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyAr
K2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5k
ZXggZTFkNzI1ZjhjNmQxMTEzNDEyMTVlMTBiZGQ3YWI2NzI3ZTc0ZWFkNC4uNDUxZGFjNjIzMTNi
MjMzYWRmNjVkOGY3MGJhYjMxYzM4MzY1OTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTQ2Fs
bGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1l
bnRCdWZmZXImCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBjYWxsYmFjaygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5j
dGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVu
dCIpKTsKKyAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3Rv
bS5jcHAKaW5kZXggZGE1MmNlYzJjZmRjYzc2YTFjZDQwZDJlNDVhZTA5NTY0NjVlMWY3Ni4uOGQy
ZDAyMDY0ZTU3ZWFhNDc4MTgwYmI4ZTQ1YmQzMDA0ZThmMzE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cApAQCAtODksOCArODksOCBAQCBzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5lckZ1bmN0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29ucwogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgSlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKLSAgICAgICAg
bGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgInVz
ZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ld
LnVzZUNhcHR1cmUpKTsKKyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsK
KyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgInVzZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5l
dmVudExpc3RlbmVyVmVjdG9yW2ldLnVzZUNhcHR1cmUpKTsKICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCBvdXRwdXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpT
Q29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIGlmICghbGlzdGVuZXJzLT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRU
eXBlOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsIGV2ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV2
ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9BbGdvcml0aG1CdWlsZGVyLmNwcAppbmRleCAwODEwYmM4MWU5YTA1ZWVhZGVlZjRmMGU2Njk5
NGQyMWI5MzUzYWE3Li5hOWYzNzI2NTcwZTI4OTRhYmE2MWU4NWNjMDlmMDljMTQ4YjE4Zjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtQnVpbGRlci5jcHAKQEAgLTU2LDIxICs1NiwyMSBAQAogdm9pZCBKU0NyeXB0b0FsZ29yaXRo
bUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIHVuc2lnbmVkIHZhbHVlKQogewogICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBrZXkpOwogICAgIG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc051
bWJlcih2YWx1ZSkpOwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNv
bnN0IGNoYXIqIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4
ZWMtPnZtKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCZ2bSwga2V5KTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwga2V5KTsKICAg
ICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVj
LCB2YWx1ZSkpOwogfQogCiB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiB7CiAgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGtl
eSk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERp
cmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU0NyeXB0b0Fs
Z29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYnVmZmUKIHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhciog
a2V5LCBjb25zdCBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxk
ZXIpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIElkZW50aWZpZXIgaWRlbnRp
Zmllcigmdm0sIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sIGtleSk7CiAgICAgY29uc3QgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVy
JiBqc0J1aWxkZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIm
PihuZXN0ZWRCdWlsZGVyKTsKICAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwganNCdWlsZGVyLnJlc3VsdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDY0
ZDU2ZDk3MGE3NGU1ZGMxYWVhYTM4NTk1YjU2YmQxZTYzNDZmZTIuLjRhZTZhZTUwNjI0NmUzOWZi
ZmNjNTJkMzcwYzA2NmY4OWNlMDNjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODksNyAr
ODksNyBAQCBib29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRl
bnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogCiBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUp
CiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIG5hbWUpOworICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKIAogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudGlmaWVyLCBzbG90KSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMg
Ym9vbCBnZXRIYXNoQWxnb3JpdGhtKEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGRpY3Rpb25hcnkuZXhlY1N0
YXRlKCk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGRpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmpl
Y3QoKTsKIAotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihleGVjLCAiaGFzaCIpOworICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhc2gi
KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogCiAgICAgSlNWYWx1ZSBoYXNoID0g
Z2V0UHJvcGVydHkoZXhlYywgb2JqZWN0LCAiaGFzaCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5k
ZXggZmJiMzk3ZTRiNWEyMzBmNDQ0MThkNjNkYWY3NzNkNTJhOTlkN2E0Ni4uODM1MDU3YjgzN2Qx
YjZjNzFlMWUwYWY3YjYzODA4MzAyNmU4MjhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC01
Miw3ICs1Miw3IEBACiAKIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIEpTQXJyYXkqJiByZXN1bHQp
CiB7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnRpZmllciwgc2xvdCkpCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIGdl
dEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBj
aGFyKiBrZXksCiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0g
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGV4ZWMsIGtleSk7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KGpzb24pOwogCiAgICAgaWYgKCFqc29uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnRpZmllciwgc2xvdCkpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIGdldFN0cmlu
Z0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtl
eSwKIAogc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcihleGVjLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChqc29uKTsKIAogICAgIGlmICghanNvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50aWZp
ZXIsIHNsb3QpKQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjprZXlTaXplSXNWYWxpZChzaXplX3Qgc2l6ZUluQml0cykgY29uc3QKIHN0YXRpYyB2
b2lkIGFkZFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFy
KiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBrZXkpOwogICAgIGpzb24tPnB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAt
NTQyLDEzICs1NDIsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRvS2V5RGF0YVIKICAgICAgICAgYWRkVG9K
U09OKGV4ZWMsIGpzUHJpbWVJbmZvLCAidCIsIGJhc2U2NFVSTEVuY29kZShkYXRhLm90aGVyUHJp
bWVJbmZvcygpW2ldLmZhY3RvckNSVENvZWZmaWNpZW50KSk7CiAgICAgICAgIG90aC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaSwganNQcmltZUluZm8pOwogICAgIH0KLSAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJvdGgiKSwgb3RoKTsKKyAgICByZXN1
bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJv
dGgiKSwgb3RoKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBrZXkpOwogICAgIGpzb24tPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwganNCb29sZWFuKHZh
bHVlKSk7CiB9CiAKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pT
T04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgQ3J5cHRvS2V5VXNhZ2UgdXNhZwog
ICAgIGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCiAgICAgICAgIGtleU9w
cy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiZGVyaXZlQml0cyIpKSk7CiAKLSAgICBqc29uLT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAia2V5X29wcyIpLCBrZXlPcHMpOworICAgIGpzb24t
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJrZXlf
b3BzIiksIGtleU9wcyk7CiB9CiAKIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCmluZGV4IDc4MzY2ODE5MDJmYzNiMjQwYmFhMGU1ZWE4ZTY2ZjRkMWIwZDJmNmQuLjU0ZWIz
MzExNjNkZTY4Yzk2N2ExYjRjM2MxOWU2NWJmNWQ0YzQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc0
LDcgKzc0LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3Bh
Y2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9u
ID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxvb2t1cE5h
bWVzcGFjZVVSSSIpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci0+
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVS
SSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJp
bmdNYXBDdXN0b20uY3BwCmluZGV4IDNhZmFhZTIzNDA3NzQ5YWM3YTlmMjcyMGYzZjg5N2YwYmU1
N2NkZTcuLjUyNTk4Y2VjMjQ3NWYxNmFiY2Q5MTgxN2EwYzgzNjFiZjVjZmMwOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICB0aGlzT2JqZWN0
LT5tX2ltcGwtPmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZXNbaV0pKTsKKyAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwog
CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCA2MTk5MjY1NmM4ZGY1NTg0MDJmNjRjODcwZWE5ODg5ZjFj
YzM1ODhkLi5iZTc3N2EyODUwYTM4MTdkZjVmZjIzYzJhNWJjMGYwMmQwZWQ5MjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00
MjgsNyArNDI4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpK
U09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vz
c29yIHByb3BlcnRpZXMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSAmJiBwcm9wZXJ0eU5hbWUgPT0gSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSkKKyAgICBp
ZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsb2NhdGlvbiIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC00NDQsNyAr
NDQ0LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogICAgIGlmIChGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVET01XaW5k
b3coZXhlYykuZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCku
dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUt
PnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBpbXBsKCkpKQotICAgICAgICAgICAgICAg
IHB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dI
YW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyYgZGlhbG9nKQogICAgIC8vICAgICAgICB3
b3JsZCBpZiBkaWFsb2dBcmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAg
ICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgp
LCBub3JtYWxXb3JsZChtX2V4ZWMtPnZtKCkpKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1
bWVudHMgPSBtX2V4ZWMtPmFyZ3VtZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdChtX2V4ZWMtPnZtKCksIElkZW50aWZpZXIobV9leGVjLCAiZGlhbG9nQXJndW1lbnRzIiks
IGRpYWxvZ0FyZ3VtZW50cyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KG1fZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMi
KSwgZGlhbG9nQXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6
cmV0dXJuVmFsdWUoKSBjb25zdApAQCAtNTM0LDcgKzUzNCw3IEBAIGlubGluZSBKU1ZhbHVlIERp
YWxvZ0hhbmRsZXI6OnJldHVyblZhbHVlKCkgY29uc3QKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhtX2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZChtX2V4ZWMt
PnZtKCkpKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKG1fZXhlYywgInJldHVyblZhbHVlIik7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4
ZWMsICJyZXR1cm5WYWx1ZSIpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7
CiAgICAgaWYgKCFKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVj
dCwgbV9leGVjLCBpZGVudGlmaWVyLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlv
bkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGZjYTdjN2VkNmFkNWQ4NzNlMDdhMjAyNzM3MWU3Njhm
NmUzMmJiMzcuLmVjYmIzM2VlZjg3OGM1ZTVmMWUwM2M5ZjhiNzY2MDNlMmNiMjIwNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRl
c3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTVmFsdWUgeFZhbHVlID0gb2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAieCIpKTsKKyAgICBKU1ZhbHVlIHhWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIngiKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBib29s
IGNhblByb3ZpZGVYID0gIXhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtNTYsNyArNTYs
NyBAQAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBKU1ZhbHVlIHlWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
InkiKSk7CisgICAgSlNWYWx1ZSB5VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ5IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3Qt
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ6IikpOworICAgIEpTVmFsdWUgelZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wg
Y2FuUHJvdmlkZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CkBAIC04Niw3ICs4Niw3
IEBACiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQg
YW4gb2JqZWN0LgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS50b09iamVjdChleGVjKTsK
IAotICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgImFscGhhIikpOworICAgIEpTVmFsdWUgYWxwaGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFscGhhIikpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRl
QWxwaGEgPSAhYWxwaGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwpAQCAtOTQsNyArOTQsNyBA
QAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBKU1ZhbHVlIGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ImJldGEiKSk7CisgICAgSlNWYWx1ZSBiZXRhVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9ICFi
ZXRhVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVl
IGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIp
KTsKKyAgICBKU1ZhbHVlIGdhbW1hVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJnYW1tYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gIWdhbW1h
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKQEAgLTExOSwxOCArMTE5LDE4IEBACiBzdGF0aWMg
SlNPYmplY3QqIGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRh
OjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlv
bi0+Y2FuUHJvdmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ5
IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+
eSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVy
KGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlv
bi0+Y2FuUHJvdmlkZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgp
KTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGFj
Y2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+
Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9u
UmF0ZU9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9u
UmF0ZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgp
ID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmpl
Y3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3Rh
dGlvblJhdGUtPmNhblByb3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRh
KCkpICA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8g
anNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBo
YSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIocm90YXRpb25S
YXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUt
PmNhblByb3ZpZGVCZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpz
TnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgp
ID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKICAgICByZXR1
cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcAppbmRleCAyMGQ4ZjgzY2QwZTQ5YWE2YTA0YzNmNjdiYzhkMjVlZTIzYmY5OGYwLi5lOTg0
OTA5ZTc2YjI1OTQwZGE5ZWVjZDBkOTY1OTllMGU4ZjZmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKIEpTRGljdGlv
bmFyeTo6R2V0UHJvcGVydHlSZXN1bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25z
dCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIGZpbmFsUmVzdWx0KSBjb25zdAogewogICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhtX2V4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9p
bml0aWFsaXplck9iamVjdC5nZXQoKSk7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZXJPYmplY3Qu
Z2V0KCktPmdldFByb3BlcnR5U2xvdChtX2V4ZWMsIGlkZW50aWZpZXIsIHNsb3QpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZTJkMjky
ZDI4NGZkMmNiOWIyM2MxM2EyOTQ4NWVmMjkyNzJiMzE3My4uZmZiMDU4MGYzYzc0MzEzYTA3Yjc0
OTQ3NmQ3ZDI3Yjc1YTE2MThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICAvLyBJZiBqc0Z1bmN0aW9uIGlzIG5vdCBhY3R1YWxseSBh
IGZ1bmN0aW9uLCBzZWUgaWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZh
Y2UgYW5kIHVzZSB0aGF0CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAg
ICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0g
anNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRs
ZUV2ZW50IikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODEyMjUwN2I0
ZmJjNjhlMTIzZjY3MmZhMzEwODhhNTJjYTcwZTk2NS4uM2ViYTQyMWJjNzM0MTc3M2FjOGY2YWE2
YjEyMWVhY2QxZTgyYTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLml0ZW0oaW5kZXgp
KSk7CiAKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBl
dGMuCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcyhleGVjLCBqc0Nv
bGxlY3Rpb24sIElkZW50aWZpZXIoZXhlYywgc3RyaW5nKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMoZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIHN0cmluZykpKTsKICAgICB9CiAKICAgICAvLyBUaGUgc2Vjb25kIGFy
ZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2FudApAQCAtMTA2LDEyICsx
MDYsMTIgQEAgSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB1aW50MzJfdCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICAgaWYgKGlu
ZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIG5hbWVk
SXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gbmFtZWRJdGVtcyhleGVjLCB0
aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rp
b246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG5h
bWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJ
dGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiB2YWx1ZS5p
c1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNhZDlhNDcy
OTAzNGNkZDA3NzY5ZjdjZTYwYzdkZWYyYjFjOTA5NTIuLjZkMzljNDU5ZDdkMjU1NTRhOTdkZTRk
YjcyNGQzMTY1YzI5MzNkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRQogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKICAgICAvLyBJZiAiYWxsIiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJu
IHRoZSBvdmVyd3JpdHRlbiB2YWx1ZQotICAgIEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT52
bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CisgICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImFsbCIpKTsKICAgICBp
ZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1
bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBB
ZGQgImFsbCIgdG8gdGhlIHByb3BlcnR5IG1hcC4KLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwg
SWRlbnRpZmllcihleGVjLCAiYWxsIiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogc3Rh
dGljIERvY3VtZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0
Niw3ICsxNDYsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1l
LCBjdXJyZW50V29ybGQoZXhlYykpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgIm9wZW4iKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdy
YXBwZXItPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJvcGVuIikpOwog
ICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IDI4NjdkNjBmMmEwMjYyN2YwN2NkMDBhMzQwZTU5Yzc4MTEy
NGQ5ODMuLjI4NDg5NzEyYTdmNmNjYzQ5OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjCiAKIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVt
cyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZp
bmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IGU2YTE0MGY1NDU4NDliOGFh
NjQ5NDdlMGQ2NjdmODgzNmY0YzlhZWEuLmEyNWRjYTk5MThjM2FlMmVlNzZhMTgwNWEyMGQwYjEw
YmRhZjE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlKiBleGVjKQogICAgIElEQktleVBhdGgga2V5UGF0
aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKICAgICBpZiAoIW9wdGlvbnNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIEpTVmFsdWUga2V5UGF0aFZhbHVlID0g
b3B0aW9uc1ZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlQYXRoIikpOworICAg
ICAgICBKU1ZhbHVlIGtleVBhdGhWYWx1ZSA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2V5UGF0aCIpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTcw
LDcgKzcwLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvSW5jcmVtZW50ID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhdXRvSW5jcmVtZW50IikpLnRvQm9vbGVhbihleGVjKTsKKyAgICAg
ICAgYXV0b0luY3JlbWVudCA9IG9wdGlvbnNWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiYXV0b0luY3JlbWVudCIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggMDQwNDRkMzVkMzk1OWM1ZjE4Y2YyYmQ1YjM1NTNi
YTgyZDgzNWVlYy4uODUwN2U0OTRhMzc2ZGI3OTllNTZmYmVlOGJkMWNjNmQ5ZDE2NzgyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKQEAgLTY3LDExICs2NywxMSBAQCBKU1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAg
IGJvb2wgbXVsdGlFbnRyeSA9IGZhbHNlOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdW5pcXVlID0gb3B0aW9uc1ZhbHVlLmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJ1bmlxdWUiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICB1bmlx
dWUgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InVuaXF1ZSIpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIG11bHRp
RW50cnkgPSBvcHRpb25zVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm11bHRpRW50
cnkiKSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICBtdWx0aUVudHJ5ID0gb3B0aW9uc1ZhbHVl
LmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtdWx0aUVudHJ5IikpLnRv
Qm9vbGVhbihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDA1YzBjZDk5MjU2OTVkMTA5
NWYzZWQ0YzlkMzJhNTU0MzQ1ZTNhOGIuLjVlYjZkNThjMjZjYzI5MGY4OWRlOTc3NjRmZmMxOTM3
ZTAzNzBkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgCiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIEltYWdlRGF0YSwgaW1hZ2VEYXRhKTsKLSAgICBJZGVudGlmaWVy
IGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CisgICAgSWRlbnRpZmllciBkYXRhTmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImRhdGEiKTsKICAgICB3cmFwcGVyLT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgZGF0YU5hbWUsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEt
PmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gRklYTUU6IEFkb3B0IHJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDg2YTQ4MGIwYzM4MDZiZGU2N2U5
ZGI0YTY2NzQyODI2NjlhZmY2Ni4uODU1MGViNDUzZjkzZmNhYWJiMzEzNjA0YWM1NDJmYzdiNzU0
NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRp
YyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkq
IGFycmF5LCBDb250ZXh0TWVuCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+
bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBKU09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFycmF5
LT5nZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgIEpTVmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQo
ZXhlYywgSWRlbnRpZmllcihleGVjLCAibGFiZWwiKSk7Ci0gICAgICAgIEpTVmFsdWUgdHlwZSA9
IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJ0eXBlIikpOwotICAgICAgICBKU1Zh
bHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwotICAgICAg
ICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZW5h
YmxlZCIpKTsKLSAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgImNoZWNrZWQiKSk7Ci0gICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVt
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CisgICAgICAgIEpTVmFs
dWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
bGFiZWwiKSk7CisgICAgICAgIEpTVmFsdWUgdHlwZSA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ0eXBlIikpOworICAgICAgICBKU1ZhbHVlIGlkID0gaXRl
bS0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImlkIikpOworICAgICAg
ICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiZW5hYmxlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNoZWNrZWQiKSk7CisgICAgICAg
IEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZTUzNzc2Y2Q4ZDFiNjk2NDM3NmY3NGY5MDdi
OTgwYmJhYzliNTQzMy4uY2YxMzM3ZjAxMzhiYjBkNjdiNmFmNzZiNjk4MTQxODkyNDJhYTRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgIGlu
dCBvdmVycmlkZUxpbmVOdW1iZXIgPSBtX3Bvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwog
CiAgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjaygKLSAgICAgICAgZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgCisgICAgICAgIGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBtX2Z1bmN0aW9uTmFtZSksCiAgICAgICAgIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9u
LCBvdmVycmlkZUxpbmVOdW1iZXIpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcAppbmRleCA3MTcyNmJiZjFiMWViNjcxZTFhNmI0ZWQ0ODJjNjFlMmI1OGFiY2EzLi43
YjQxMTlhNWE1ZDBiNzI4OWYzZTEzNjhkOTEwZDc2YTc5OGQ4Yjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZmlsdGVyLCBjYWxsRGF0YSk7
CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmaWx0ZXIgPSBm
aWx0ZXIuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFjY2VwdE5vZGUiKSk7CisgICAgICAg
IGZpbHRlciA9IGZpbHRlci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YWNjZXB0Tm9kZSIpKTsKICAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNh
bGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgewogICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIk5vZGVGaWx0ZXIgb2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlv
biIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDNjOTJiZWIxMzRlZDA2MzMxYjM5ZjYxZjM2
OWU0ZDg4ZGMzMzNkYTMuLjhjOWViOGY5YzE5ZjkwYTAwYTM2ZGY1MzVmOTkzYmFjN2ExM2ViZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVz
dWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pLCBq
c1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1faW1wbC0+Y29sdW1u
TmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwCmluZGV4IDk0MmM0ZGZiNmU3ZTY4Zjg5YTBjZjc5ZDU0NWUzMTkxNDZiYzI3
MzcuLmQ2NDYwM2UxYjhkMjVlZGY1ZDFmMjljNWY3MDM3MjFiNmJjYTMzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHRoaXNP
YmplY3QtPm1faW1wbC0+a2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGksIGVj
KSkpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCmluZGV4IGE4
OGMwMzhkOTc1MGU4M2UxNDMwZTg5ZTcxYTY2ZDQ1MDA3MTdiNWIuLjM5ZmE2NGQ5ZGFjZDQ0YWE4
NmM2NWJlMWJmZDIxZmJhODc4M2RlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZv
aWQgc2V0SW50ZXJuYWxTbG90VG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9iamVj
dFZhbHVlLCBQcml2YXRlTmFtZSYKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFs
dWUudG9PYmplY3QoZXhlYyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmpl
Y3RWYWx1ZSk7Ci0gICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KG5hbWUpLCB2YWx1ZSwgcHJvcGVydHlTbG90KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21VaWQobmFtZSksIHZhbHVlLCBwcm9wZXJ0eVNsb3QpOwogfQog
CiBKU1ZhbHVlIGdldEludGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG9iamVjdFZhbHVlLCBQcml2YXRlTmFtZSYgbmFtZSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNW
YWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBv
YmplY3RWYWx1ZSwgUHJpdmF0ZU4KICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUu
dG9PYmplY3QoZXhlYyk7CiAgICAgUHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1
ZSk7CiAKLSAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20obmFt
ZSk7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG5h
bWUpOwogICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHByb3BlcnR5U2xvdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgcmV0dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5k
ZXggY2I0OTMxZGQ1NmE3NmViMzI0YmE2ZjNkZTk1MTY0NzM0ZTgwZTQ5Yi4uMDNkNDQ3NjU4OTc5
NzhjMDA0YWQ5MzFhYzE2NDBkMzE2ODBlM2ExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRp
YyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiBib29s
IFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlm
aWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3Qo
KSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTYx
LDE0ICs2MSwxNCBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHNjcmlwdFN0YXRlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCks
IElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxP
YmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNj
cmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2Vw
dGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRl
KTsKLSAgICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKKyAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5n
ZXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3RhdGUsIG5hbWUp
KTsKICAgICBpZiAoIWpzVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODIsNyAr
ODIsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcgogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6
OnJlbW92ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIHNjcmlwdFN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNj
cmlwdFN0YXRlLCBuYW1lKSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc2NyaXB0U3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc2NyaXB0U3Rh
dGUsIG5hbWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggYmEyNjAzYzBlYmMwYzZiMGU3N2Y0Nzc4YWFjNmUxNzNkZDU3ZTQwNi4u
MDBlYTExYjQ2NGY2MzVjNmNiZGU2NGEyNjI2NjAxNjFjYWRmOWRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01
MjcsNyArNTI3LDcgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwg
bV9ibG9iVVJMcyhibG9iVVJMcykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBl
bXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgZW1wdHlTdHJpbmcoKSkpCiAgICAgewogICAgICAgICB3cml0ZShDdXJy
ZW50VmVyc2lvbik7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHMpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgY2xhc3MgQ2xvbmVT
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAg
ICAgICAgIHdyaXRlKG1fZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgd3JpdGUoSWRlbnRpZmllcihtX2V4ZWMsIHN0cikpOworICAgICAgICAgICAgd3JpdGUoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhtX2V4ZWMsIHN0cikpOwogICAgIH0KIAogICAgIHZvaWQgd3Jp
dGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCkBAIC0yNDg3LDExICsyNDg3LDExIEBA
IERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB0ZXJtaW5hbCA9IHJlYWRU
ZXJtaW5hbCgpKSB7Ci0gICAgICAgICAgICAgICAgcHV0UHJvcGVydHkob3V0cHV0T2JqZWN0U3Rh
Y2subGFzdCgpLCBJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSksIHRl
cm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRwdXRPYmplY3RTdGFjay5s
YXN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0cmlu
ZygpKSwgdGVybWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1l
bWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVj
dEVuZFZpc2l0TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJ
ZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT5zdHJpbmcoKSkpOworICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDVkOWQ4
ZjU5MDdlNjA1NTIxMDg3NjkzNWZhYWViNjZlNDk2NzFiNjMuLjNhOTNlYmY1YWI2YzRkN2U1MzUx
NzAzZWMxODE1YTVmYzE0ZGIwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgLSAoaWQpY2FsbFdlYlNj
cmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdz
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNl
cHRpb24oKSk7CiAKLSAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKG5hbWUpKSk7CisgICAgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKHZvaWQpc2V0
VmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4oW3NlbGYgX2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4
ZWMpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIC0gKGlkKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtl
eQogICAgICAgICAvLyBsZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhr
ZXkpKSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1wXS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhj
ZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIC0gKHZvaWQpcmVtb3Zl
V2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgW3NlbGYgX2ltcF0t
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBA
IC0gKEJPT0wpaGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEFTU0VSVCghZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
Qk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihl
eGVjLCBTdHJpbmcoa2V5KSkpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1By
b3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpKTsK
IAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25U
b0NvbnNvbGUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDE0YmFmNGIzNDBhZTYzZDhiZDc3ZTI4MDE1YWMxODhj
MTNjMDhlY2YuLjViOWY4NGU1ZWE2NTM3MTI3ZTAyY2JmNGE0NjYzOTQ3NDUwMmQ2OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25O
YW1lKCRzaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHNpZ25hdHVyZS0+
bmFtZTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7ZW5h
YmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoJnZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmVtb3ZlRGlyZWN0KHZtLCBwcm9w
ZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI1ODAsMTAgKzI1ODAsMTAgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
IiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxz
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBvYmplY3QuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CkBAIC0yNjkyLDcgKzI2OTIsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGkpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0
QXJyYXkuY3BwCmluZGV4IDFkNTkxODliNDcyMDUxMTcxNzljNjM5YTYwNWIzMDg2ZWRkYmY2ZWYu
LmQyNGEyZWE3MDZhZTJkOTQ0MmI3MDc1Zjk1ZTI4ODMzNjU2MjA2MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFy
cmF5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSlNGbG9hdDY0QXJyYXk6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0
LT5pbXBsKCkpLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLSAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
CiBKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApp
bmRleCBjMzBmYTgwMTZhODc1ZWEwOTkxMjRkMTFiM2NmYmFkNWIxMTI5ZWIzLi5hYjI5ODEyMmE0
ZmQxMGQ5MTRjYmFjOTEyMjU2OGNiN2MzM2UwNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50
OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSkpOwotICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggMTRhNzg1YTliM2I0NWYyMTViMGVhM2Y1MDNiNmI5MjcxZmFm
M2Y4Ny4uMWEyNzRhZjliZWQwOWNkOWE5YTAzZDhhNDBmYzkxZWUyYmMxYjA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTE4OTcsOCArMTg5Nyw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
IiksIHZhbHVlKTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAg
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKIApAQCAt
MjcwNiw4ICsyNzA2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9u
YWxBdHRyNCIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjcyMSw4ICsyNzIxLDggQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZU9iamUKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
ci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKKyAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9
CiAKICNlbmRpZgpAQCAtMjczNiw4ICsyNzM2LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamUK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNiIp
LCB2YWx1ZSk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMjg3NCw4
ICsyODc0LDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVj
dC4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIG9iamVjdAorICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggNzc0ZmRmYzNm
NGVmOTUzZWZkN2JkNmZkOTY3NmY2NDg3ZTg5OTA3Ni4uZGY5MDlkY2U1ZWFkOTM4NThlMDIzMDlj
ZDgyZGM1YTczMjM5NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191
dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBT
dHJpbmcqIHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRp
ZmllcihleGVjLCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBjb252ZXJ0VVRGOFRv
VVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKTsKIH0KIAogfSB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2QzNGU1ZjEyMDJkN2YzYWRi
ZGMxODMwOTg3ZWY4NmJhZGU2Y2MxMy4uNTc4OTE1ODkzOWEyYWY3YjkyZmFiOTBhZjg0YWFiZTk1
YWVmN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpA
QCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNGYWxs
YmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpjRmFs
bGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRW
YWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5t
X2l0ZW0pKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0
LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihF
eGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0
YmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5k
ZXggOTU3MzBjNDNkNzQwOTg1N2IxYmZkMjkyOTUxYzU1ZGIwZGNjNWRmNS4uYmFmMjQ3ZDJkYjZj
ZTdlN2VlMTEzYTIxMGI4N2NjMzNhNzI2YTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeU9iamVjdCAqbXlPYmplY3QgPSAoTXlPYmplY3Qg
KilOUE5fQ3JlYXRlT2JqZWN0IChteUZ1bmN0aW9uUHRycyk7CiAgICAgICAgIAotICAgICAgICBn
bG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVh
dGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopbXlPYmplY3QpKTsK
KyAgICAgICAgZ2xvYmFsLnB1dChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJt
eUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6Q0xh
bmd1YWdlLCAodm9pZCAqKW15T2JqZWN0KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJl
YWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cg
PSBleFZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKTsKICAgICAgICAgICAg
ICAgICAgICAgaW50IGxpbmVubyA9IC0xOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhWYWwu
dHlwZSgpID09IE9iamVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxp
bmVWYWwgPSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQoZXhlYyxJZGVudGlmaWVyKCJs
aW5lIikpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6
ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJsaW5lIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgpID09
IE51bWJlclR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxp
bmVWYWwudG9OdW1iZXIoZXhlYykpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQppbmRleCBiZmFjZjIxMDc0YTFlZTg1NzIyMzZlNWFhYWMx
MmM1ZDllNGMyNzcwLi4zNTMyYjBhNjg5YWJjZDZkMmQ3ZTEzNWIxN2IwYWM2ODU1NGUzNmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIAogICAgICAgICBNeUZpcnN0
SW50ZXJmYWNlICpteUludGVyZmFjZSA9IFtbTXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF07
CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGV4ZWMsIElkZW50aWZpZXIoIm15SW50ZXJm
YWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVD
TGFuZ3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6
Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAq
KW15SW50ZXJmYWNlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFy
Z2M7IGkrKykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0
RnJvbUZpbGUoYXJndltpXSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICBjaGFyICptc2cgPSBleFZhbC50b1N0
cmluZyhleGVjKS5hc2NpaSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nh
c3QoZXhWYWwpLmdldChleGVjLElkZW50aWZpZXIoImxpbmUiKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihleGVjKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggODkwNmNiN2Iw
ZWFlMjk2MDU0MTZmNDY1MDE3ZmNiMTEyYjdhMDM4Ny4uNGY3ZThmYTE1ZTU0MGI4ZTRmMmE1OGVj
NGRiNDEyYjU5ZGVlNDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTc3LDExICs3Nywx
MSBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGdldFR5cGVGbGFncyhFeGVjU3RhdGUmIGV4ZWMs
IGNvbnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUgogICAgIAogc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2JqZWN0LCBUcmln
Z2VyJiB0cmlnZ2VyKQogewotICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3Qu
Z2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dlciIpKTsKKyAgICBKU1ZhbHVlIHRy
aWdnZXJPYmplY3QgPSBydWxlT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZygmZXhlYywgInRyaWdnZXIiKSk7CiAgICAgaWYgKCF0cmlnZ2VyT2JqZWN0IHx8IGV4ZWMuaGFk
RXhjZXB0aW9uKCkgfHwgIXRyaWdnZXJPYmplY3QuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRUcmlnZ2VyOwogICAgIAotICAgIEpT
VmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZp
ZXIoJmV4ZWMsICJ1cmwtZmlsdGVyIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyT2JqZWN0ID0g
dHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1
cmwtZmlsdGVyIikpOwogICAgIGlmICghdXJsRmlsdGVyT2JqZWN0IHx8IGV4ZWMuaGFkRXhjZXB0
aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dlcjsKIApAQCAt
OTEsMTggKzkxLDE4IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgbG9hZFRyaWdnZXIoRXhlY1N0
YXRlJiBleGVjLCBKU09iamVjdCYgcnVsZU9iamVjdCwgVHJpZ2dlCiAKICAgICB0cmlnZ2VyLnVy
bEZpbHRlciA9IHVybEZpbHRlcjsKIAotICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0g
dHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMsICJ1cmwtZmlsdGVyLWlz
LWNhc2Utc2Vuc2l0aXZlIikpOworICAgIEpTVmFsdWUgdXJsRmlsdGVyQ2FzZVZhbHVlID0gdHJp
Z2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1cmwt
ZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIikpOwogICAgIGlmICh1cmxGaWx0ZXJDYXNlVmFsdWUg
JiYgIWV4ZWMuaGFkRXhjZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZVZhbHVlLmlzQm9vbGVhbigp
KQogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZpbHRlckNh
c2VWYWx1ZS50b0Jvb2xlYW4oJmV4ZWMpOwogCi0gICAgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1
ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAicmVzb3VyY2Ut
dHlwZSIpKTsKKyAgICBKU1ZhbHVlIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJyZXNvdXJjZS10eXBlIikp
OwogICAgIGlmIChyZXNvdXJjZVR5cGVWYWx1ZSAmJiAhZXhlYy5oYWRFeGNlcHRpb24oKSkgewog
ICAgICAgICBhdXRvIHR5cGVGbGFnc0Vycm9yID0gZ2V0VHlwZUZsYWdzKGV4ZWMsIHJlc291cmNl
VHlwZVZhbHVlLCB0cmlnZ2VyLmZsYWdzLCByZWFkUmVzb3VyY2VUeXBlKTsKICAgICAgICAgaWYg
KHR5cGVGbGFnc0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVGbGFnc0Vycm9yOwogICAg
IH0KIAotICAgIEpTVmFsdWUgbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVj
LCBJZGVudGlmaWVyKCZleGVjLCAibG9hZC10eXBlIikpOworICAgIEpTVmFsdWUgbG9hZFR5cGVW
YWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZl
eGVjLCAibG9hZC10eXBlIikpOwogICAgIGlmIChsb2FkVHlwZVZhbHVlICYmICFleGVjLmhhZEV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGF1dG8gdHlwZUZsYWdzRXJyb3IgPSBnZXRUeXBlRmxhZ3Mo
ZXhlYywgbG9hZFR5cGVWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRUeXBlKTsKICAgICAg
ICAgaWYgKHR5cGVGbGFnc0Vycm9yKQpAQCAtMTE0LDExICsxMTQsMTEgQEAgc3RhdGljIHN0ZDo6
ZXJyb3JfY29kZSBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBydWxlT2Jq
ZWN0LCBUcmlnZ2UKIAogc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkQWN0aW9uKEV4ZWNTdGF0
ZSYgZXhlYywgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEFjdGlvbiYgYWN0aW9uKQogewotICAgIEpT
VmFsdWUgYWN0aW9uT2JqZWN0ID0gcnVsZU9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4
ZWMsICJhY3Rpb24iKSk7CisgICAgSlNWYWx1ZSBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0Lmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImFjdGlvbiIpKTsKICAgICBp
ZiAoIWFjdGlvbk9iamVjdCB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFhY3Rpb25PYmplY3Qu
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTklu
dmFsaWRBY3Rpb247CiAKLSAgICBKU1ZhbHVlIHR5cGVPYmplY3QgPSBhY3Rpb25PYmplY3QuZ2V0
KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHlwZSIpKTsKKyAgICBKU1ZhbHVlIHR5cGVPYmpl
Y3QgPSBhY3Rpb25PYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVj
LCAidHlwZSIpKTsKICAgICBpZiAoIXR5cGVPYmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8
fCAhdHlwZU9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lv
bkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGU7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0
aWMgc3RkOjplcnJvcl9jb2RlIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCYg
cnVsZU9iamVjdCwgQWN0aW9uJgogICAgIGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gImJsb2NrLWNv
b2tpZXMiKQogICAgICAgICBhY3Rpb24gPSBBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM7CiAgICAg
ZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSAiY3NzLWRpc3BsYXktbm9uZSIpIHsKLSAgICAgICAgSlNW
YWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXIoJmV4ZWMs
ICJzZWxlY3RvciIpKTsKKyAgICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJzZWxlY3RvciIpKTsKICAg
ICAgICAgaWYgKCFzZWxlY3RvciB8fCBleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFzZWxlY3Rvci5p
c1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
TkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhOWUyOThmNjQ0ZDZiMWUxYThmMzJmMjJjN2IxZDc0
Y2I3NmU3MWIuLjU5ZjRkZWFjYTVlYzI5YTEwZDEzNWE3NjU4ZGUyODBhNTlhMTY2MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzY1OSw3ICszNjU5LDcg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYg
ZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0
KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKICAgICAKLSAgICBKU0M6OklkZW50aWZp
ZXIgY29udHJvbHNIb3N0KCZleGVjLnZtKCksICJjb250cm9sc0hvc3QiKTsKKyAgICBKU0M6Oklk
ZW50aWZpZXIgY29udHJvbHNIb3N0ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVj
LnZtKCksICJjb250cm9sc0hvc3QiKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNX
cmFwcGVyID0gbWVkaWFKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsK
ICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CkBAIC0zNjY4LDcgKzM2NjgsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJK
U1ZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIGlm
ICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKIAotICAgIEpTQzo6SWRlbnRpZmllciBjb250cm9sbGVySUQoJmV4ZWMudm0oKSwgImNv
bnRyb2xsZXIiKTsKKyAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLnZtKCksICJjb250cm9sbGVyIik7CiAgICAgSlNDOjpK
U1ZhbHVlIGNvbnRyb2xsZXJKU1dyYXBwZXIgPSBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3Qt
PmdldCgmZXhlYywgY29udHJvbGxlcklEKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIC8vICAgICBO
b25lCiAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgIC8vICAgICBOb25lCi0gICAgSlNDOjpKU1Zh
bHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
ZmllcihleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRhaW5lciIpKTsKKyAgICBKU0M6OkpTVmFsdWUg
bWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOwogICAgIEpTQzo6
SlNPYmplY3QqIG1ldGhvZE9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0
Kj4obWV0aG9kVmFsdWUpOwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47
CkBAIC01ODUxLDcgKzU4NTEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlh
Q29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogCi0gICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdldChl
eGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImNyZWF0ZUNvbnRyb2xzIikpOworICAgIEpTQzo6
SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKICAgICBpZiAoZnVu
Y3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01ODc0
LDcgKzU4NzQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGNvbnRybwogewogICAgIEpTQzo6UHV0UHJv
cGVydHlTbG90IHByb3BlcnR5U2xvdChjb250cm9sbGVyVmFsdWUpOwogICAgIEpTQzo6SlNPYmpl
Y3QqIGNvbnRyb2xsZXJPYmplY3QgPSBjb250cm9sbGVyVmFsdWUudG9PYmplY3QoZXhlYyk7Ci0g
ICAgY29udHJvbGxlck9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGNvbnRyb2xsZXJPYmplY3Qs
IGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAicGFnZVNjYWxlRmFjdG9yIiksIEpTQzo6anNO
dW1iZXIocGFnZVNjYWxlRmFjdG9yKSwgcHJvcGVydHlTbG90KTsKKyAgICBjb250cm9sbGVyT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoY29udHJvbGxlck9iamVjdCwgZXhlYywgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJwYWdlU2NhbGVGYWN0b3IiKSwgSlNDOjpqc051bWJl
cihwYWdlU2NhbGVGYWN0b3IpLCBwcm9wZXJ0eVNsb3QpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKQEAgLTU5
MDMsNyArNTkwMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAg
ICAgQSByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4K
IAotICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhl
YywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVDb250cm9scyIpKTsKKyAgICBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3JlYXRlQ29udHJvbHMiKSk7CiAgICAgaWYgKGZ1bmN0
aW9uVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTMy
LDcgKzU5MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIAogICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRp
YUNvbnRyb2xsZXJIb3N0LCBhbmQgQ29udHJvbGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhl
aXIgcmVsYXRpb25zaGlwCiAgICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3Qg
PSBtZWRpYUpTV3JhcHBlci50b09iamVjdChleGVjKTsKLSAgICBKU0M6OklkZW50aWZpZXIgY29u
dHJvbHNIb3N0KCZleGVjLT52bSgpLCAiY29udHJvbHNIb3N0Iik7CisgICAgSlNDOjpJZGVudGlm
aWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0o
KSwgImNvbnRyb2xzSG9zdCIpOwogICAgIAogICAgIEFTU0VSVCghbWVkaWFKU1dyYXBwZXJPYmpl
Y3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNvbnRyb2xzSG9zdCkpOwogCkBAIC01OTQyLDcgKzU5NDIs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCogcm9vdCkKICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXIo
JmV4ZWMtPnZtKCksICJjb250cm9sbGVyIik7CisgICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xs
ZXIgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMtPnZtKCksICJjb250cm9sbGVy
Iik7CiAKICAgICBBU1NFUlQoIWNvbnRyb2xsZXJPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGNv
bnRyb2xsZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggNzQzZTk5NjRiNTk4NjYxMDQxZWYzZjQ4NjI0MTUyNjYyOWEzY2U0MS4u
ODNmMWI3ZTYwZTczMTkzYWVkMDFjMTdmNTE0YWUwYjVkOTAwYzM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zOTUsNyArMzk1LDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgYXJnTGlzdC5hcHBlbmQoSlNDOjpqc0Jvb2xlYW4oIW1f
c25hcHNob3RJbWFnZSkpOwogCiAgICAgLy8gSXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJv
dmlkZXMgYSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rp
b24uCi0gICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMs
IEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50b09iamVjdChleGVjKTsK
KyAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0
KGV4ZWMpOwogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBj
YWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92ZXJsYXksIGNh
bGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMDJl
M2Y0OWVmN2M4MWZmOGE3MDQzMTg0YjY0MGMwNThlNmY2ZDY5Ny4uYjUyZDFlNjJhNTY2Yjk5NmRj
ZDkyYWM5NGQ0YTMwZjI0NmJiYzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVjdElu
dGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlz
PERvY3VtZW50Pigqc2NyaXB0Q29udGV4dCkpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCks
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRl
cm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3du
Y2FzdDxEb2N1bWVudD4oc2NyaXB0Q29udGV4dCkpKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnRlcm5h
bHNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4
IDljZDY1NWM5ZjcxMDUzNWE5ZGYyYWY0NTdkNzA0NDZhNmQ5YjZlNjcuLjM0NDFlNGZiMTM3OGQ5
Mzg3NTY0NTZlYjk1OWQ1ZGZkMTFmOGJiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02
MjcsNyArNjI3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVy
UmVwKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlz
U3RyaW5nKCkpOwogICAKICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmco
KTsgICAgCi0gICAgcmV0dXJuIElkZW50aWZpZXIoJkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKTsKKyAg
ICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCks
IFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpOwog
fQogCiBrZXJuX3JldHVybl90IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWlu
dDMyX3QgcGx1Z2luSUQsIHVpbnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0SUQsIHVp
bnQ2NF90IHNlcnZlcklkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAwZGYwZGVjMGMyNDc4ZjBmYjFmZTg4YzY0
ODkzMGIyYWE4MmYwZjAyLi43NTFiMTZhZGNiMDNlYTllM2M5NjEzOTBjYWM0ZWE4NDNiYTBkZDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogCiAgICAg
ICAgIGlmIChpZGVudGlmaWVyLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIG5hbWVBcnJheS5hZGQo
SWRlbnRpZmllcigmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKKyAgICAgICAgICAgIG5hbWVBcnJh
eS5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmSlNET01XaW5kb3c6OmNvbW1vblZNKCksIFN0
cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lQXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaWRlbnRpZmllci0+bnVtYmVyKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5k
ZXggMWNlZDI5M2ViOGNjYzc3ZDM3MDliOWJkMzk4MDhjYzM5ODEyNzM3Ny4uZmRiZTgxYThlMGJl
OTc2OTQ5OWFjOWIyZDNlMGZhMzFkYmI1NTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDA3
LDcgKzQwNyw3IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBpZGVudGlmaWVyUmVwLT5zdHJpbmcoKTsKICAgICAgICAgICAgIGludCBs
ZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWRlbnRp
ZmllciA9IElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soc3RyaW5nLCBsZW5ndGgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcAppbmRleCAwZDE2Njc0ZTVjMTVmNDcxNzE4NTQzZDI1Y2E0ZjMxMDlj
MDUyZDIyLi5lZDdkN2Y2YjMzNGIyY2ZmYmRhMTM3MWEyMmE1ZjQ5MzA5ZTVhOTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGlkZW50aWZp
ZXJGcm9tSWRlbnRpZmllclJlcChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJSZXAqIGlkCiAg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gaWRlbnRpZmllclJlcC0+c3RyaW5nKCk7CiAgICAgaW50
IGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwogCi0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywg
U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdHJpbmcsIGxlbmd0aCkuaW1wbCgp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmc6OmZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKHN0cmluZywgbGVuZ3RoKSk7CiB9CiAKIGJvb2wgTlBKU09i
amVjdDo6aGFzTWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIxNjVkNjc4OTdjOWNkYjk0YjQw
OGM2MTU3YWIyMTY5Yzk4ZTUzNGIuLjA3ZWY2NGEwYjRmODA1NDg4ZTUwNzk3MGZlMGM1ZGUzYmY5
MGRhYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBJZGVudGlmaWVyIGZhY3RvcmllcyB0byBj
bGFyaWZ5IHRoZSBtZWFuaW5nIG9mIFN0cmluZ0ltcGwqCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGUgQVBJIHRlc3RzIGZvciBTdHJpbmdJbXBs
IGFyZSBhZGRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0lt
cGwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTUtMDMtMjcgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXgg
V2luQ2Fpcm8gYm90LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBs
LmNwcAppbmRleCBlOWM5NWRiYjIxZTFiZjIxNDFjODZmM2M0NzBkNTdmYWU0YzE4ZDgwLi4wOTJj
YzQ3ZjkwMTZhZmJkMmI0NjgyYjI2MGVhNTU4MzA5MzY0NDgzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcApAQCAtNDgxLDQgKzQ4MSw1MiBAQAogICAg
IEFTU0VSVF9GQUxTRShlbXB0eS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqcmVmZXJlbmNl
LmdldCgpKSk7CiB9CiAKK1RFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlU3ltYm9sRW1wdHkpCit7
CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN5
bWJvbEVtcHR5KCk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAg
ICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfRVEoMHUs
IHJlZmVyZW5jZS0+bGVuZ3RoKCkpOworICAgIEFTU0VSVF9UUlVFKGVxdWFsKHJlZmVyZW5jZS5n
ZXQoKSwgIiIpKTsKK30KKworVEVTVChXVEYsIFN0cmluZ0ltcGxDcmVhdGVTeW1ib2wpCit7Cisg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsID0gc3RyaW5nRnJvbVVURjgoIm9yaWdpbmFs
Iik7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVN5bWJvbChvcmlnaW5hbCk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgp
KTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRf
RkFMU0Uob3JpZ2luYWwtPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC0+
aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5sZW5ndGgoKSwgcmVmZXJlbmNl
LT5sZW5ndGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZXF1YWwocmVmZXJlbmNlLmdldCgpLCAib3Jp
Z2luYWwiKSk7Cit9CisKK1RFU1QoV1RGLCBTdHJpbmdJbXBsU3ltYm9sVG9BdG9taWNTdHJpbmcp
Cit7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsID0gc3RyaW5nRnJvbVVURjgoIm9y
aWdpbmFsIik7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6
OmNyZWF0ZVN5bWJvbChvcmlnaW5hbCk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5
bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKKworICAg
IFJlZlB0cjxTdHJpbmdJbXBsPiBhdG9taWMgPSBBdG9taWNTdHJpbmc6OmFkZChyZWZlcmVuY2Uu
Z2V0KCkpOworICAgIEFTU0VSVF9UUlVFKGF0b21pYy0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGF0b21pYy0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5p
c1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKK30K
KworVEVTVChXVEYsIFN0cmluZ0ltcGxTeW1ib2xFbXB0eVRvQXRvbWljU3RyaW5nKQoreworICAg
IFJlZlB0cjxTdHJpbmdJbXBsPiByZWZlcmVuY2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2xF
bXB0eSgpOworICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CisgICAgQVNT
RVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisKKyAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gYXRvbWljID0gQXRvbWljU3RyaW5nOjphZGQocmVmZXJlbmNlLmdldCgpKTsKKyAgICBBU1NF
UlRfVFJVRShhdG9taWMtPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShhdG9taWMtPmlz
U3ltYm9sKCkpOworICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CisgICAg
QVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>